1 / 27

Real-Time Volume Graphics [03] GPU-Based Volume Rendering

Real-Time Volume Graphics [03] GPU-Based Volume Rendering. Volume Rendering. Image order approach:. Data Set. Image Plane. Eye. For each pixel { calculate color of the pixel }. Volume Rendering. Image order approach:. Object order approach:. Data Set. Image Plane. Eye.

risa
Download Presentation

Real-Time Volume Graphics [03] 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. Real-Time Volume Graphics[03] GPU-Based Volume Rendering

  2. Volume Rendering Image order approach: Data Set Image Plane Eye For each pixel { calculate color of the pixel }

  3. Volume Rendering Image order approach: Object order approach: Data Set Image Plane Eye For each slice { calculate contribution to the image } For each pixel { calculate color of the pixel }

  4. Proxy geometry (Polygonal Slices) Texture-based Approaches • No volumetric hardware-primitives!

  5. Texture R G B A How does a texture work? For each fragment:interpolate thetexture coordinates(barycentric) Texture-Lookup:interpolate thetexture color (bilinear)

  6. 2D Textures • Draw the volume as a stack of 2D texturesBilinear Interpolation in Hardware Decompostition into axis-aligned slices • 3 copies of the data set in memory

  7. Implementation

  8. Implementation

  9. Fragment Program We assume here that the RGBA texture already contains emission/absoption coefficients. Transfer functions are discussed later

  10. Compositing The standard alpha blending causes color bleeding! Vertex A: Vertex B: Vertex C: RGBA = (1,0,0,1) RGBA = (0,0,1,1) RGBA = (0,1,0,1) RGBA = (1,0,0,0) RGBA = (0,0,1,1) RGBA = (0,1,0,0) RGBA = (0,0,0,0) RGBA = (0,0,1,1) RGBA = (0,0,0,0) Solution: Associated Colors: RGB values must be pre-multiplied by opacity A!

  11. Compositing • Maximum Intensity ProjectionNo emission/absorptionSimply compute maximum value along a ray

  12. Compositing Emission/Absorption Maximum Intensity Projection

  13. d´ ≠ d d 2D Textures: Drawbacks • Sampling rate is inconsistent • Emission/absorption slightly incorrect • Super-sampling on-the-fly impossible

  14. R G B R G B A 3D Textures Don‘t be confused: 3D textures are not volumetric rendering primitives! Only planar polygons are supported as rendering primitives. For each fragment:interpolate thetexture coordinates(barycentric) Texture-Lookup:interpolate thetexture color (trilinear)

  15. 3D Textures • 3D Texture: Volumetric Texture Object • Trilinear Interpolation in Hardware Slices parallel to the image plane • One large texture block in memory

  16. d d Resampling via 3D Textures • Sampling rate is constant • Supersampling by increasing thenumber of slices

  17. Divide the data set into smaller chunks (bricks) Bricking • What happens if data set is too large to fit into local video memory? One plane of voxels must be duplicated toenable correct interpolation across brick boundaries incorrect interpolation!

  18. Divide the data set into smaller chunks (bricks) GPU Bus Bricking • What happens if data set is too large to fit into local video memory? Problem: Bus-Bandwidth • Unbalanced Load for GPU und Memory Bus draw draw transfer brick Transfer brick Time • Inefficient!

  19. Divide the data set into smaller chunks (bricks) Bricking • What happens if data set is too large to fit into local video memory? Problem: Bus-Bandwidth • Keep the bricks small enough! More than one brick must fit into video memory ! • Transfer and Rendering can be performed in parallel • Increased CPU load for intersection calculation! • Effective load balancing still very difficult!

  20. Cube-Slice Intersection Question: Can we compute this in a vertex program? Vertex program: Input: 6 Vertices Output: 6 Vertices P0: Intersection with red pathP2: Intersection with green pathP4: Intersection with blue path P1: Intersection with dotted red edge or P0P3: Intersection with dotted green edge or P1P5: Intersection with dotted blue edge or P2

  21. Back to 2D Textures • fixed number of object aligned slices • visual artifacts due to bilinear interpolation • Utilize Multi-Textures (2 textures per polygon) to implement trilinear interpolation!

  22. 2D Multi-Textures Axis-Aligned Slices • Bilinear Interpolation by 2D Texture Unit • Blending of two adjacent slice images • Trilinear Interpolation

  23. Implementation

  24. Implementation

  25. d d 2D Multi-Textures • Sampling rate is constant • Supersampling by increasing thenumber of slices

  26. GPU Bus Advantages • More efficient load balancing draw draw draw transfer transfer transfer transfer time • Exploit the GPU and the available memory bandwidth in parallel • Transfer the smallest amount of information required to draw the slice image! • Significanly higher performance, although 3 copies of the data set in main memory

  27. Summary Rasterization Approaches for Direct Volume Rendering • 2D Texture Based Approaches • 3 fixed stacks of object aligned slices • Visual artifacts due to bilinear interpolation only • No supersampling • 3D Texture Based Approaches • Viewport aligned slices • Supersampling with trilinear interpolation • Bricking: Bus transfer inefficient for large volumes • 2D Texture Based Approaches • 3 variable stacks of object aligned slices • Supersampling with Trilinear interpolation • Higher performance for larger volumes

More Related