140 likes | 320 Views
High-Quality Pre-Integrated Volume Rendering Using Hardware Accelerated Pixel Shading. Klaus Engel, Martin Kraus, Thomas Ertl Visualization and Interactive Systems Group University of Stuttgart, Germany. Siggraph/Eurographics Workshop on Graphics Hardware 2001.
E N D
High-Quality Pre-Integrated Volume Rendering Using Hardware Accelerated Pixel Shading Klaus Engel, Martin Kraus, Thomas Ertl Visualization and Interactive Systems Group University 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
interpolation classification interpolation classification Volume Classification transfer functions Pre- classification voxels Post- 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
project slice sf sb texture polygon front slice back slice sb pre-integrate all possible combinations fetch integral from dependent texture sb sf sf sf sb Pre-integrated Volume Rendering - Idea slice-by-slice slab-by-slab hardware-accelerated implementation on NVidia GeForce3 chip
stage 0 TEXTURE_2D (s0,t0) RGBA result sf sb RGB0 stage 1 TEXTURE_2D (s1,t1) RGBA result sb RGB1 stage 2 DOT_PRODUCT_NV (1,0,0)• RGB1=sb (s2,t2,r2) (1,0,0) stage 3 DOT_PRODUCT_TEXTURE2D_NV (1,0,0) • RGB0=sf sf RGBA result (s3,t3,r3) (1,0,0) on to register combiners Pre-integrated Volume Rendering - Texel Fetch front slice back slice
128 slices pre-classification 128 slices post-classification 284 slices post-classification 128 slices pre-integrated Results – Direct Volume Rendering
1. 2. 1 front slice back slice front slice back slice 4 3. 4. 3a 2 3 3a front slice back slice front slice back slice Isosurfaces Isosurfaces:particular dependent texture sb 96 32 sf 32 96
gb gf Isosurfaces – Gradient Interpolation • g = IP gb + (1-IP) gfinterpolation weight: IP = (siso – sf)/(sb – sf) • store gradient with scalar data in RGBA texture • store IP in dependent texture • implement interpolation in reg. combiners sb g front slice back slice
R R G G B B A A I = Ia + Id ( n.l ) + Is ( n.h )p Pre-integrated Volume Rendering – Register Combiners • Combiner 0+1: rebuild gradients (front + back) gx gy gz gy gz gx s s • Combiner 2: interpolate gradients IP = (siso – sf)/(sb – sf) g = IP gb + (1-IP) gf • Combiner 3-7: shading (isosurface or volume) pmax = 256