high-quality pre-integrated volume rendering using hardware accelerated pixel shading klaus engel,...
TRANSCRIPT
High-Quality Pre-Integrated Volume Rendering Using Hardware Accelerated Pixel
Shading
High-Quality Pre-Integrated Volume Rendering Using Hardware Accelerated Pixel
Shading
Klaus Engel, Martin Kraus, Thomas ErtlVisualization and Interactive Systems GroupUniversity of Stuttgart, Germany
Siggraph/Eurographics Workshop on Graphics Hardware 2001
Volume Rendering Quality Improvement
• Higher sampling rates: additional tri-linearly interpolated slices– 2D textures:
• render intermediate slices using multi-texture approach(Rezk-Salama,Engel et al., GH2000)
- 3D textures:
• render additional slice polygons
• But:– decreases rendering speed due to additional rasterization
– many additional slices required even for low-resolution volumes
– non-linear transfer functions: not sufficient to sample volume with the Nyquist frequency of scalar data
Volume Classification
voxels
Post-classification
interpolation
interpolation
Pre-classification
classification
transfer functions
classification
Pre-Integrated Volume Rendering• The approach:
– texture-based (2D/3D)– ray-segments computed in a pre-processing step– pre-computed ray-segment lookup (dependent texture)– small number of slices => fast
• Especially suited for:– low resolution volume data– non-linear transfer functions
• Capable of: – high-quality rendering– direct volume rendering, volume shading, isosurfaces
Pre-integrated Volume Rendering - Ideaslice-by-slice slab-by-slab
sb
sfsf
sb
fetch integral fromdependent texture
sbsf
pre-integrate all possible combinations
hardware-accelerated implementation
on NVidia GeForce3 chip
sf sb
front slice
back slice
project slice
texture polygon
Pre-integrated Volume Rendering - Texel Fetch
RGB1
(s2,t2,r2) (1,0,0)
stage 2DOT_PRODUCT_NV
(1,0,0) • RGB1=sb
stage 2DOT_PRODUCT_NV
(1,0,0) • RGB1=sb
RGB0
(s3,t3,r3) (1,0,0)
stage 3DOT_PRODUCT_TEXTURE2D_NV
(1,0,0) • RGB0=sf
stage 3DOT_PRODUCT_TEXTURE2D_NV
(1,0,0) • RGB0=sf
RGBA result
on to register combiners
front slice
front slice
back slice
back slice
sbsb
stage 1TEXTURE_2D
stage 1TEXTURE_2D
(s1,t1)RGBA result
sfsf
stage 0TEXTURE_2D
stage 0TEXTURE_2D
(s0,t0)RGBA result
sb
sf
Results – Direct Volume Rendering
128 slicespre-
classification
128 slicespre-integrated
284 slicespost-
classification
128 slicespost-
classification
IsosurfacesIsosurfaces:
particular dependent texture
32 96 sf
sb
32
96
front slice
back slice
1.
1
front slice
back slice
4.
4front slice
back slice
2.
2
front slice
back slice
3.3
3a
3a
Isosurfaces – Gradient Interpolation
• g = IP gb + (1-IP) gf
interpolation weight: IP = (siso – sf)/(sb – sf)
• store gradient with scalar data in RGBA texture
• store IP in dependent texture
• implement interpolation in reg. combiners
sbsb
front slice
front slice
back slice
back slice
gfgbg
Pre-integrated Volume Rendering – Register Combiners
• Combiner 0+1: rebuild gradients (front + back)
gy gz gx
R BG A R BG A
• Combiner 2: interpolate gradients
gx gy gz
I = Ia + Id ( n . l ) + Is ( n . h )p
• Combiner 3-7: shading (isosurface or volume)
pmax = 256
IP = (siso – sf)/(sb – sf) g = IP gb + (1-IP) gf
s s