Smooth MixedResolution GPU Volume Rendering - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Smooth MixedResolution GPU Volume Rendering

Description:

Additional address look-ups. Smooth interpolation: Full hardware-native filtering ... Reverse layout texture (lookup from brick cache into virtual volume space) ... – PowerPoint PPT presentation

Number of Views:50
Avg rating:3.0/5.0
Slides: 27
Provided by: joha196
Category:

less

Transcript and Presenter's Notes

Title: Smooth MixedResolution GPU Volume Rendering


1
Smooth Mixed-Resolution GPU Volume Rendering
  • Johanna Beyer1, Markus Hadwiger1,
  • Torsten Möller2, Laura Fritz1

1 VRVis Research Center, Austria 2 Simon Fraser
University, Canada
2
Motivation
  • Texture memory limits volume size in GPU volume
    rendering
  • Bricking and multi-resolution techniques
  • Simple down-sampling skip samples
  • ? No pre-filtering leads to aliasing
  • Sample placement often restricted
  • ? Filters with odd number of taps (1, 3, )
  • Mixing of resolution levels
  • ? Adjacent bricks of different resolution
  • Often discontinuities at brick borders
  • Or original samples modified

3
Smooth multi-resolution interpolation
  • Combine bricks of different resolution
  • Pre-filtering with even number of taps (2, 4, )
  • Efficient texture packing with single-pass
    raycasting
  • Continuity at brick borders

4
Flat vs. Hierarchical Bricking
hierarchical
flat
flat
  • Culling rate higher for flat bricking

5
2-Level Flat Bricking
  • Subdivide volume into equally sized bricks (e.g.
    32³) and duplicate voxels at brick boundary
    (322)³
  • Store all bricks in a single large cache texture

6
2-Level Flat Bricking
  • Construct lower resolution bricks (161)³
  • Texture packing
  • 8 low-res bricks fit into one high-res brick
    (34³)

7
Texture packing
  • Determine active bricks via culling
  • Pack active bricks into single 3D cache texture
  • Lookup from virtual volume to physical cache
    texture
  • Layout texture
  • RGB address translation
  • A multi-resolution scale

8
Volume Rendering (1)
  • Lookup from virtual volume space into cache
    texture

from layout texture
  • Brick resolution transparent to shader!

9
Volume Rendering (2)
  • Smooth C0-continuous interpolation
  • Always use hardware-native tri-linear
    interpolation
  • Adjust texture coordinates for interpolation in
    resolution level boundary
  • Necessary steps
  • During raycasting Warping of texture coordinates
  • After culling update Cache Fixup

10
Smooth Interpolation 2D Case
  • Transition region that requires modification is
    band of 0.5 voxels inside the brick of higher
    resolution
  • Two different interpolation functions in 2D
  • trapezoids and triangles
  • Modify texture coords for hardware-native
    tri-linear interpolation
  • Special attention at corners
    ? primitive type
    depending on surrounding bricks

11
Smooth Interpolation 2D Case
  • Triangle and trapezoid must be mapped to square
    for hardware bi-linear interpolation

12
Smooth Interpolation 3D Case
  • In 3D three different primitives for
    interpolation
  • Truncated pyramid (two trapezoid projections)
  • Pyramid (two triangle projections)
  • One trapezoidal and one triangular projection

13
Cache Fixup
  • Only performed when cache is updated
  • Fix duplicated border of high-res bricks that
    are adjacent to low-res bricks in virtual volume
    space

14
Shader Modification
  • Determine if sample position is
  • (1) within the 0.5 texel border of a high-res
    brick, and (2) adjacent to a low-res brick
  • Determine primitive type via two 2D projections
  • Warp texture coordinates in 2D projections and
    combine to 3D

15
Results Performance
  • Smooth vs. Discontinuous mixed-resolution DVR

Core 2 Duo, 3 GHz, 4GB RAM, NVidia Geforce GTX
280, viewport 512 x 512
16
Results Visual (2)
17
Results Visual (1)
18
Summary
  • Mixed-resolution volume rendering
  • Efficient texture packing scheme, fast lookup in
    shader
  • Downsampling positions shifted by half a voxel
    for more flexibility in choice of downsampling
    filters
  • C0-continuous transitions between resolution
    levels
  • Warping of texture coords for hardware-native
    tri-linear interpolation

19
Conclusion
  • Texture Packing
  • Single-pass rendering combined with mixed
    resolutions
  • - Additional address look-ups
  • Smooth interpolation
  • Full hardware-native filtering
  • One desired texture fetch stays one real
    texture fetch
  • No additional texture fetches in density volume
  • Scales well with the number of volumes
    (multi-volume rendering)
  • - Texture coordinate warping relatively complex
  • Downsampling
  • No gaps between bricks even with simple shader
  • - Low resolution bricks still visible, the actual
    border is very thin

20
Thanks for your attention!
  • Acknowledgements
  • FFG Austrian Research Promotion Agency
  • Agfa Healthcare Vienna
  • Contact
  • Website http//medvis.vrvis.at
  • E-mail beyer_at_vrvis.at

21
(No Transcript)
22
Results Performance
  • Bricked vs. Unbricked volume rendering
  • Core 2 Duo, 3 GHz, 4GB RAM, NVidia Geforce GTX
    280, viewport 512 x 512

23
Flat Bricking
  • Higher memory overhead when using sample
    replication at each brick boundary
  • Number of bricks constant, less scalable
  • Much more efficient culling
  • Fine-grained LOD or shader selection

24
2-Level Flat Bricking - Example
  • Brick cache 512x512x1024 (256 mega voxels)
  • Brick size 34³, 15x15x30 bricks in cache
  • Possible dataset size
  • High resolution 480x480x960 (211 mega voxels)
  • Low resolution 960x960x1920 (1.6 giga voxels)
  • ?Actually much higher due to culled bricks!
  • Three Levels Brick size 36³, 14x14x28 bricks in
    cache
  • High resolution 448x448x896 (172 mega voxels)
  • Middle resolution 896x896x1792 (1.3 giga voxels)
  • Low resolution 1792x1792x3584 (10.7 giga voxels)

25
(No Transcript)
26
Brick Cache Fixup
  • Implemented on GPU
  • Reverse layout texture
    (lookup from brick cache
    into virtual volume space)
  • Rasterize all marked high-res bricks
    slice-by-slice, perform fixup on each slice
    separately
  • for each slice of brick that needs updating
  • if fragment on brick boundary
  • perform rev. lookup and fetch sample from adj.
    brick
  • if neighbor sample is from a low-res brick
  • overwrite high-res sample with nearest-neighbor
    low-res sample
  • Copy 2D slice buffer back into 3D cache texture
Write a Comment
User Comments (0)
About PowerShow.com