[vtk-developers] Unstructured Volume Rendering Mesa support

Randall Hand randall.hand at gmail.com
Tue Apr 4 09:26:14 EDT 2006


(For those of you who've dug through this already on the vtk-users, I am
sorry.  Just want to make sure the right people get their eyeballs on this).

I've been trying to do some volume rendering on an in-house dataset and it's
been giving me nothing but trouble.  I finally broke down and wrote a simple
driver app to do nothing but volume rendering & save the result to a PNG on
disk, and came to a few surprising conclusions.  Basically,
vtkProjectedTetrahedraMapper doesn't work with mangled mesa.  I can remove
the "UseMesaClasses" from the beginning of the code and everything works
just fine but it does throw a window on the screen.  Add them back, and all
I get is empty space for outputs.

Ok, after alot of digging I found the problem. It seems that none of the new
unstructured volume renderers properly support Mesa. My best guess is that
it was setting up the scene with mangled-mesa contexts, and then the Volume
Rendering was using true OpenGL.  Every command probably returned an error
(no GL context), but nothing checks it, so it rendering blindly & ignorant
of what was going on.

After alot of work, I managed to apply the same structure as the other
objects to the vtkProjectedTetrahedraMapper successfully. There is now a
vtkProjectedTetrahedraMapper that, with the help of the
vtkVolumeRenderingFactory, can properly instantiate either a
vtkOpenGLProjectedTetrahedraMapper or a vtkMesaProjectedTetrahedraMapper.
>From the testing I've done here (with the hello-world code shown
originally), I've been able to switch between the two pretty easily and get
almost identical results.  There are a few discrepancies, but since this is
a hardware accelerated version it's very susceptible to the fine variations
between how Mesa emulates the hardware and various hardware platforms
actually work.

So, who @Kitware do I need to talk to to get this patch back to mainstream?
I plan to file a bug on it, with code attached, tomorrow morning when I
return to the office.  This is a little larger patch that I usually deal
with (4 new files, extensive changes to a few others), so what's the
preferred format for a patch this size?  I know there's a command with 'cvs
diff' to get "patch"-style diffs, which seems the best option, but I always
forget it...


--
Randall Hand
Visualization Scientist,
ERDC-MSRC Vicksburg, MS
Homepage: http://www.yeraze.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20060404/3d93272b/attachment.html>


More information about the vtk-developers mailing list