Acceleration Techniques for GPUbased Volume Rendering - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

Acceleration Techniques for GPUbased Volume Rendering

Description:

combine with frame buffer contents. computer graphics & visualization. Raycasting. Raycasting ... float4 fLastVal = tex2D(sLastFrame, v.TexCoords.rg) ... – PowerPoint PPT presentation

Number of Views:49
Avg rating:3.0/5.0
Slides: 26
Provided by: jens160
Category:

less

Transcript and Presenter's Notes

Title: Acceleration Techniques for GPUbased Volume Rendering


1
Acceleration Techniques for GPU-based Volume
Rendering
2
Motivation
  • Properties of real data sets

Surface like structures
Surface illumination
Images courtesy of Joe Kniss and volren.org
Occlusions
3
Motivation
  • Texture based volume rendering today

Hardware accelerated renderingof totally
invisible structures
4
Our Contribution
  • We use new GPU Features to
  • Discard invisible fragments
  • early ray termination
  • empty space skipping
  • Implement a high quality GPU Raycaster
  • Accelerate the Raycaster

5
Our Toolkit
  • Programmable graphics hardware
  • Arbitrarily programmable shaders
  • Assembly language
  • High level languages
  • 32 Bit-Floating-point processing
  • Input fp32 textures
  • Arithmetic fp24-fp32
  • Output fp32 render targets
  • Early Z-Test
  • Multiple dependent texture fetches

6
Our Toolkit
  • Stream Architecture

Geometry
Rasterizer
Fragments
User Textures

Early Z-Test

Fragment Shader

Render Texture
7
Raycaster
  • Slicing (SBVR) vs. GPU-Raycaster (RC)
  • SBVR ? render proxy geometry (slices)
  • RC ? render proxy geometry (faces)

8
Raycasting
  • Using only one main pass for Raymarching

9
Basic Idea
  • Multi-pass approach
  • Generate entry point
  • first hit in local texture coordinates
  • Compute ray direction
  • ray direction in local texture coordinates
  • Ray Marcher (simplified)
  • Main pass (Ray traversal)
  • Intermediate pass (Stopping criterion)

10
Entry Point
  • Render into 2D texture
  • Front faces of the volume bounding box
  • Texture coordinates as color components

(0,1,0)
(1,1,1)
(0,0,1)
(1,0,0)
(1,0,1)
11
Ray Direction
  • render into second texture
  • back faces of the bounding box
  • subtract from entry-point texture to get ray
    direction

(0,1,0)
(0,0,0)
(0,0,1)
(1,0,0)
(1,0,1)
12
Basic Idea
  • Multi-pass approach
  • Generate entry point
  • first hit in local texture coordinates
  • Compute ray direction
  • ray direction in local texture coordinates
  • Ray Marcher
  • Main passes (Ray traversal)
  • Intermediate pass (Stopping criterion)

13
Raycasting
  • Using multiple Raymarching passes

14
Ray Marcher (Main passes)
  • We know Entry point and ray direction
  • Render front-faces
  • set Color like before C
  • set Texture coords to NDC (x,y)
  • activate direction texture DIR
  • a global counter t
  • compute ray as r(t)CtDIR(x,y)

float3 fDirection tex2D(sDirection,
v.TexCoords.rg).rgb float3 fFrontVal
v.Color.rgb float3 fVolCoord
fFrontValfDepthfDirection
15
Ray Marcher (Main passes)
  • Integration along the ray
  • use r(t) to access the volume
  • integrate over multiple steps (N)
  • combine with frame buffer contents

.. for (int i0iltNi) fResultVal
under(tex3D(sVolume, fVolCoord),fResultVal) fVol
Coord fStepSizefDirection return
fResultVal
16
Raycasting
  • Acceleration techniques

Raycasting
Early Ray Termination
Empty Space Skipping
17
Acceleration Techniques
  • Terminate Rays on one of the following
    conditions
  • it has left the volume
  • it has reached a certain opacity
  • Suspend a ray if
  • its traversing an empty region
  • this needs to be done on a per-fragment basis
  • ? early Z-Test

18
Acceleration techniques
  • Early-Z Restrictions
  • on current GPUs early Z-Test only works if
  • no clip or texkill operation is executed
  • the Z-value is not changed in the shader
  • the raymarching shader can not terminate himself
  • Solution use intermediate pass to do the
    ray-suspending/terminating

19
Acceleration techniques
  • Execute intermediate pass after every main
    pass( N volume samples)
  • Access z-value only in this pass
  • If ray is terminated or suspended set z-value
    before main-pass-geometry
  • Reset depth behind it if ray is to be resumed

20
Ray Marcher (intermediate pass)
  • for early ray termination check accumulated
    alpha
  • for empty space skipping check skip-volume
  • Skip volume
  • volume sampled down to 1/8 in every dimension
  • every sample contains the minimum and maximum of
    the 512 corresponding entries
  • Check Texture
  • 2D lookup texture
  • lookup(x,y)1 iff all values between x and y are
    0 under the current transfer function

21
Ray Marcher (intermediate pass)
  • for early ray termination check accumulated
    alpha
  • for empty space skipping check skip-volume

float4 fLastVal tex2D(sLastFrame,
v.TexCoords.rg) float3 fDirection
tex2D(sDirection, v.TexCoords.rg).rgb float3
fFrontVal v.Color.rgb float3 fVolCoord
fFrontValfDepthfDirection float2 fMaxMin
tex3D(sEmptySpace, fVolCoord).rg float
fEmpty tex2D(sEmptyLookUp, fMaxMin) OUT.depth
((fLastVal.a lt 0.9999) (fEmptylt1)) ? 0
100 OUT.col fLastVal return OUT
22
DEMOS
  • Run on
  • Intel Pentium IV 2.4GHz
  • ATI Radeon 9800 Pro.
  • Microsoft Windows XP
  • DirectX 9
  • Pixel/Vertex Shader 2.0

23
Iso-Surface Raycasting
  • first 2 passes and intermediate passes remain
    unchanged
  • global traversal order still front to back
  • order within the main shader is back to front
  • keep only last isovalue
  • if isovalue was found computeillumination with
    3D gradienttexture and write it to thefinal
    image

24
Conclusion
  • Using current GPU features we showed how to
  • Discard invisible fragments
  • early ray termination
  • empty space skipping
  • Implement a high quality GPU Raycaster
  • Accelerate that Raycaster

25
The End
  • Thank you!
  • Questions?
  • Download Slides at http//wwwcg.in.tum.de/Researc
    h/Publications/Raycast/
Write a Comment
User Comments (0)
About PowerShow.com