On 02/08/2013 18:31, Taylor Braun-Jones wrote: > Hello mitk-users, > > I have a fairly general question about rendering performance and how I can > improve/debug in my application. My application has 4 render windows: > > - Two 3D renderers, each showing a different 2D image in space that I have > correctly positioned/oriented based on known geometry information for each > 2D image. My vtkCamera for each renderer is also positioned/oriented using > known geometry information (basically directly facing the image with view > angle such that the image fills up the viewport). The images are about 1k x > 1k pixels. Also visible in these views is a semi-opaque mitk::Surface > created from a vtkCuboid that is navigated > using mitk::NavigationDataObjectVisualizationFilter > - A 2D renderer showing slices of a 3D volume (about 300x300x300 > resolution). The slices are controlled by mitk::NavigationData. > - A vtkImageViewer2 showing 2D images from a vtkVideoSource (about 400x600 > pixels) > > To work around some issues I was having I ended up using three separate > DataStorages - one for each renderer. (but no node data is duplicated). > > Also to get my 2D image to show up in the 3D renderer, ended up using this > hack: > > // FIXME: this is just quick hack for getting a 2D plane in the 3D > render window. > // Don't actually want to see this view - were just using it for it's > // CurrentWorldGeometry2DNode > QmitkSliceWidget *slicerKludge = new QmitkSliceWidget(subWidget1); > slicerKludge->hide(); > slicerKludge->SetDataStorage(m_DataStorage1); > slicerKludg->SetData(m_2DImageNode1, > mitk::SliceNavigationController::Axial); > geometry2DNode = > slicerKludgeAP->GetRenderer()->GetCurrentWorldGeometry2DNode(); > m_APDataStorage->Add(geometry2DNode); > > I use a 8 Hz QTimer to update the three MITK renders and a a 30Hz QTimer to > grab images from the vtkVideoSource and update the vtkImageViewer2. The > 30Hz video works fine when I don't have the other three MITK renderers, but > as I add/enable each of the other renders, the FPS of the video render > drops until I get to about 10 FPS with all three MITK renderers running.
Is the video renderer the one causing the slow down? One odd thing I noticed while streaming in RGB(A) images is that these are always mapped through a lookup table or colour mapper, even if that is a nop. Somewhere in the render pipeline it will start a new bunch of threads, process the image(s) using an expensive colour mapping thing that amounts to identity, and then kill the threads, upload as texture to OpenGL. This is pretty bad for performance (think stereo 1080p). If you or anybody else knows how to disable this and just pipe the images straight through to texture, that would be awesome. > > I've tried building against MITK v2013.03 and master (as of yesterday) - > both with exhibiting about the same performance. > > I'm running with a Nvidia GeForce GTX 680 graphics card, Core i7 @3.4GHz > CPU. Watching my CPU resource usage while the application runs shows the > processor usage in the 5-10% range. > > Any advice or strategies for diagnosing and improving the performance I'm > seeing would be greatly appreciated. Maybe there are some experimental MITK > branches with performance improvements? ------------------------------------------------------------------------------ Get your SQL database under version control now! Version control is standard for application code, but databases havent caught up. So what steps can you take to put your SQL databases under version control? Why should you start doing it? Read more to find out. http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk _______________________________________________ mitk-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mitk-users
