430 likes | 628 Views
Volume Graphics on Consumer PC Hardware. Advanced Techniques Klaus Engel. Ray Integration. discrete approximation of Volume Rendering Integral will converge against correct result for d -> 0 scalar field can be correctly reconstructed with sampling rate according to the Nyquist frequency.
E N D
Volume Graphics on Consumer PC Hardware Advanced Techniques Klaus Engel
Ray Integration • discrete approximation of Volume Rendering Integral will converge against correct result for d -> 0 • scalar field can becorrectly reconstructedwith sampling rateaccording to the Nyquist frequency
T(s) T(s(x)) s High Frequency Transfer Functions • High frequencies in the transfer function T increase required sampling rate s(x) x x
High Frequency Transfer Functions Cryoelectron-microscopic Volume Isosurface of Escherichia Coli Ribosome at 18 Ångström T(s) s 64 data slices 10 times more slices
50 x more slices High Frequency Transfer Functions multiple peaks T(s) s
High Frequency Transfer Functions Red: piecewise linear Green: random Blue: piecewise linear Alpha: identity
Classification Interpolation Transfer-Functions Pre-Classification Interpolation Classification Post-Classification Pre- and Postclassification Voxel
Pre- and Postclassification • Pre-Classification • no high-frequencies from TF • Post-Classification • reproduces high-frequencies on theslice polygons • to reproduce high frequencies in between slices => render many slices
Pre-Integrated Classification • Pre-Integrated Classification • split numerical integration into • one pre-integration for the TF • one integration for the scalar field • slab-by-slabrendering slice-by-slice slab-by-slab
shell rendering slice rendering Pre-Integrated Classification d sb sf
Pre-Integration of all possible combinations save values In table sf sb sb sf Pre-Integrated Volume Rendering • Pre-processing
Pre-Integrated Volume Rendering • Rendering project back slice sf sb front slice back slice
utilize sf and sb as texture coordinates for the dependent texture sb sf Pre-Integrated Volume Rendering • Rendering fetch sf and sb during rasterization sf sb slice
fetch pre-integrated ray-segment sb sf Pre-Integrated Volume Rendering • Rendering texture polygon with pre-integrated value sf sb slice
R RGBA A Pre-Integrated Volume Rendering • Fetch of pre-integrated valuesrequires dependent texture fetch • GL_DEPENDENT_AR_TEXTURE_2D_NV
RGBA R RGBA R Pre-Integrated Volume Rendering • dependent texture fetch withR-components of two slices
RGB R RGB R Pre-Integrated Volume Rendering • implementation (NVIDIA) • GL_DOT_PRODUCT_TEXTURE2D_NV • (1,0,0)=R • (1,0,0)=R
RGBA R mov mov RGBA G Pre-Integrated Volume Rendering • implementation (ATI) • glSampleMapATI R G B A
a - = 0 sf sb Pre-Integrated Classification • problem: pre-integration for each TF ~ 20sec. on Athlon650=> no interactive change of TF • acceleration (<0.05 sec.): • use integral functions • requires to neglect self-attenuation O(n2) O(n) a 0 sf sb
128 slices pre-classification 128 slices post-classification 284 slices post-classification 128 slices pre-integrated Pre-Integrated Volume Rendering
Pre-Integrated Volume Rendering Pre-Classification Post-Classification Pre-Integrated-Classification
Pre-Integrated Volume Rendering single peak
Pre-Integrated Volume Rendering multiple peaks
Pre-Integrated Volume Rendering many peaks
Pre-Integrated Volume Rendering noise volume inside car
Pre-Integrated Volume Rendering inhomogeneous region homogeneous region
isosurface sf <=siso <=sb or sf >=siso >=sb siso Pre-Integrated Isosurfaces sf sf sb front slice back slice
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 Pre-Integrated Isosurfaces isosurfaces:particular dependent tex sb 96 32 sf 32 96
gb R G B A gf Pre-Integrated Isosurfaces gradient interpolation sb g front slice g = w gb + (1-w) gf w = (siso – sf)/(sb – sf) back slice gx gy gz s
Pre-Integrated Isosurfaces • there´s no per-fragment division available in current graphics hardware (NV2x,R300)=>store w in dependent texture • no more texture fetches available?=>use one dep.tex. for color and w=>store w in ALPHA
Pre-Integrated Isosurfaces • lighting • NVIDIA • dot product lighting (register combiners) • lightmap (texture shaders)(will require more texture shader fetches than currently available) • ATI • dot product lighting (fragment shaders) • lightmap (fragment shaders)
Pre-Integrated Isosurfaces Results
Pre-Integrated Isosurfaces isosurface volume shading direct
Volumetric FX Ebert et al.: Texturing and Modeling: A Procedural Approach, Academic Press, 1998 • Idea: procedural noise for microstructure coarse volume for macrostructure
Volumetric FX • two basic approaches • perturb data access • cannot produce new data values • implemented by texture coordinate distortion(offset textures) • good for perturbation of boundaries • perturb data • can produces new data values • implemented by blending of data and noise • also perturbs homogeneous regions
Volumetric FX + + Radial distance volume Perlin noise Perlin noise RGB texture
(1,0,0)=R RGB S0 RGB S1 Volumetric FX • Pre-Integration + noising • dot-product weighting • (a,b,g)=S0 • (1,0,0)=R • (a,b,g)=S1
Volumetric FX • Pre-Integration + noising • animation: • change weighting through texture coords.=> distortion of dependent lookup • color cycling with transfer functions=> outwards movement
Conclusions • Pre-Integrated Volume Rendering • great quality, less slices • less error due to pre-processing • reproduces high frequencies from transfer function • arbitrary number of lit isosurfaces in a single pass • Volumetric FX • coarse macrostructure, details from noise and TF • animate TF and weighting of volumes for dynamics • give something back to the gaming industry in returnfor the new great graphics hardware
Q&A Thank you for your attention! Questions ? • Want to know more ?Wed. 16:00-17:30 - STAR(S2): Interactive High-Quality Volume Rendering on Flexible Consumer Graphics Hardware