[vtkusers] Start-up performance of hardware renderers

Ian Lindsay ilindsay at insigniamedical.co.uk
Mon Jun 6 05:38:36 EDT 2011


Hi, I hope someone with a bit of experience with the hardware renderers 
in vtk can help me. Apologies in advance for the long post, but I want 
to give as much detail as possible.

We are developing a medical imaging application which will visualise 
CT/MR data using various techniques - MIP, MPR, volume rendering etc. I 
am currently experimenting with the vtkVolumeTextureMapper3D class, and 
while its performance is great on an ATI Radeon 3870 once it has 
started, and even better on newer cards, it seems to take a long time to 
initialise. I am seeing ~20-25 seconds for a 250 slice CT set, each 
image being 512X512 pixels at 2 bytes per pixel. We are seeing 100% CPU 
usage on one CPU of a dual core Intel Core-2 duo, which would seem to 
suggest that the algorithm is not multi-threaded in this case if that is 
of any help. Doing a break while debugging seems to generally end up in 
the vtkVolumeTextureMapper3DComputeScalars function in 
vtkVolumeTextureMapper3D.cxx, in a loop that looks like it is doing some 
sort of re-sampling.

The pipeline is a fairly standard one as far as I can see:
  vtkImageData
-> vtkImageChangeInformation
-> vtkVolumeTextureMapper3D
-> vtkVolume
-> vtkRenderer
-> vtkRenderWindow

We also introduce a vtkImageFlip for flipped data sets (e.g. CT heads) 
to get them back to DICOM orientation before the volume mapper, but this 
seems to make very little difference.

One point that may make a difference is that we are doing offscreen 
rendering due to our application architecture requirements, but we get 
very good performance with MPR implemented with vtkImageReslice, so I 
suspect this is not the issue.

I have tried experienting with the SetUseCompressedTexture(true) 
setting, which seemed to make things a little more stable, I sometimes 
ended up with blank images, or strange lighting on occasions before, but 
this does not seem to help the initialisation time. I have also tried 
the vtkGPUVolumeRayCastMapper, but this seems to use features only 
supported by NVIDIA cards (correct me if this is wrong), whereas we have 
found our medical imaging displays work best with ATI cards, so we tend 
to use these in preference.

Does anyone have any helpful advice on settings/pipeline layout or 
alternative ray casters that I could try?

Thanks,
Ian Lindsay



CONFIDENTIALITY NOTICE
This message is only for the use of the intended individual or entity and may contain information that is confidential, or subject to copyright. 
If you are not the intended recipient, you are hereby notified that any dissemination, copying or distribution of this message, or any associated files, is strictly prohibited. 
If you have received this message in error, please notify us immediately by replying to the message, and delete it from your computer. 
Messages sent to and from Insignia Medical Systems Limited may be monitored. 
Any views or opinions presented are solely those of the author and do not necessarily represent those of the company.




More information about the vtkusers mailing list