DVR Shading
← ITK VTK Integration | ● | Gradient Magnitude →
How can a volume be shaded?
Problem: We do not have an explicit triangle mesh that could supply normals for shading operations.
Solution: Lighting of the volume by modulation of emission according to the standard Blinn Phong shading-model: The surface normal is substituted for the normalized gradient vector of the volume. This effectively simulates the shading of iso surfaces without explicitly extracting those.
Head-light with ambient, diffuse, and specular terms of the Blinn-Phong shading model:
images by Christof Rezk-Salama and Peter Hastreiter
Advantage of shading:
- specular lighting reveals surface structures:
- still interactive compared to iso surface extraction
Disadvantage of shading:
- transparency lessens the contrast of shaded surfaces
- rendering artefacts due to non-linear transfer functions
- rendering artefacts are especially pronounced for shaded surfaces
Artefacts are suppressed by a technique called pre-integration.
Literature on pre-integration:
- S. Röttger, M. Kraus et al. Pre-Integrated Volume Rendering. IEEE Vis 2000.
- Klaus Engel, Martin Kraus, Thomas Ertl, High-quality pre-integrated volume rendering using hardware-accelerated pixel shading, 2001.
- S. Röttger and Thomas Ertl. A two-step approach for interactive pre-integrated volume rendering of unstructured grids, VolVis 2002.
- S. Röttger, S. Guthe, D. Weiskopf, W. Strasser, T. Ertl. Smart hardware-accelerated volume rendering. VisSym 2003.
Side Note: The pre-integration technique was originally developed on my SGI Indigo2 Maximum Impact workstation (callsign boogie) with dual texture boards each having 4MB of texture memory, at that time the fastest desktop workstation that had hardware-accelerated 3D texturing capabilities mandatory for pre-integration and volume rendering. 4MB may not sound like much, but at that time it was the industries first and only. 3D texturing was provided via an SGI specific OpenGL extension. Today 3D texturing has become a standard in GLSL by means of the texture3D() sampling function. In the 30 years since the heyday of the Indigo2, graphics hardware has come a long way.
← ITK VTK Integration | ● | Gradient Magnitude →

