1 / 25

Acceleration Techniques for GPU-based Volume Rendering

Acceleration Techniques for GPU-based Volume Rendering. Motivation. Properties of real data sets. Surface like structures. Surface illumination. Images courtesy of Joe Kniss and volren.org. Occlusions. only 2% of all fragments visible. Motivation. Texture based volume rendering today:.

mohawk
Download Presentation

Acceleration Techniques for GPU-based Volume Rendering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. only 2% of all fragments visible 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. (0,1,0) (1,1,1) subtract (0,0,1) (1,0,0) (1,0,1) 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)=C+t*DIR(x,y) float3 fDirection = tex2D(sDirection, v.TexCoords.rg).rgb; float3 fFrontVal = v.Color.rgb; float3 fVolCoord = fFrontVal+fDepth*fDirection;

  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 i=0;i<N;i++) { fResultVal = under(tex3D(sVolume, fVolCoord),fResultVal); fVolCoord += fStepSize*fDirection; } 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: • it‘s 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 = fFrontVal+fDepth*fDirection; float2 fMaxMin = tex3D(sEmptySpace, fVolCoord).rg; float fEmpty = tex2D(sEmptyLookUp, fMaxMin); OUT.depth = ((fLastVal.a < 0.9999) && (fEmpty<1)) ? 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/Research/Publications/Raycast/

More Related