100 likes | 240 Views
Hardware Accelerated Volume Rendering Using PC Hardware. CSE564 Final Demo Evan Closson. Introduction. Seeing stuff in real time is cool. Need a faster way to visualize volumetric data. We can make use of consumer based graphics hardware to do this. Evan Closson. Spring 2003. Techniques.
E N D
Hardware Accelerated Volume Rendering Using PC Hardware CSE564 Final Demo Evan Closson
Introduction • Seeing stuff in real time is cool. • Need a faster way to visualize volumetric data. • We can make use of consumer based graphics hardware to do this. Evan Closson Spring 2003
Techniques • 2D Texture Slices • Needs 3 stacks of slices for each axis because the slices can’t be seen from the side. • High memory • OK quality • Fast • 3D Textures • Not as readily available – I don’t have support for it, but it is definitely becoming more widely supported. • Fast Evan Closson Spring 2003
What I Used • Limited Hardware to work with. • Geforce4 440 Go • 2D Texture Slices • Texture Palette • Register Combiners for trilinear interpolation. • OK . . . multitexturing capabilities. Evan Closson Spring 2003
Rendering • Create texture palette, mapping intensities to a rgba value. • Transfer Functions can map directly to this palette. • Slice volume along the x, y, and z axis. • Intensity is the look up into the texture palette. • Extensions GL_EXT_paletted_texture and GL_EXT_shared_texture_palette Evan Closson Spring 2003
Rendering • Can’t view slices from the side. Must determine the closest axis to the camera and render the stack aligned with that axis. • Cam World Space = Camera Location * Inverse Model View • The largest component of the world space camera the x,y,z value is the axis that the camera is closest to. • Once the correct stack is determined map each slice onto a polygon and render back to front with blending enabled. • Can use different blending functions for different results. Evan Closson Spring 2003
Trilinear Interpolation • Register Combiners can be used for trilinear interpolation as shown in the above figure[REZK-SALMA00]. • Bilinearly interpolate each 2d slice – this happens in standard graphcis hardware. • Then use register combiners to combine slice i and i +1 with an interpolatino factor to create a trilinearly interpolated slice. • Extensions GL_NV_register_combiners and GL_ARB_multitexture Evan Closson Spring 2003
Shading • Register combines can also be used to implement shading. • Take as input the light position, light color, material color, and the gradient texture. • Use combiners to compute each of the diffuse and specular calculations. • Ambient values can also be simple added to the color within the combiner. Evan Closson Spring 2003
Demo Evan Closson Spring 2003
References • [MEISSNER02]: "Interactive Lighting Models and Pre-Integration for Volume Rendering on PC Graphics Accelerators," Michael Meissner, Stefan Guthe, Wolfgang Strasser (2002). • [ENGEL01]: "High-Quality Pre-Integrated Volume Rendering Using Hardware-Acclerated Pixel Shading," Klaus Engel, Martin Kraus, Thomas Ertl (2001). • [MEISSNER01]: "High Quality Volume Rendering on PC Graphics Hardware," Michael Meissner, Stefan Guthe, Wolfgang Strasser (2001). • [ENGEL02]: "Interactive High-Quality Volume Rendering with Flexible Consumer Graphics Hardware," Klaus Engel, Thomas Ertl. Eurographics (2002). • [KNISS02]: "Interactive Translucent Volume Rendering and Procedural Modeling," Joe Kniss, Simon Premoze, CHarles Hansen, Davis Ebert (2002). • [REZK-SALMA00]: "Interactive Volume Rendering on Standard PC Graphics Hardware Using Multi-Textures and MultiStage Rasterization," C. Rezk-Salma, K. Engel, M. Bauer, G. Greiner, T. Ertl (2000). Evan Closson Spring 2003