Similar presentations:
GigaVoxels. Voxels come into play
1. Gigavoxels: Voxels come into play
Crytek Conference26/11/09
Cyril Crassin,
Fabrice Neyret,
INRIA Rhône-Alpes & Grenoble Univ.
Sylvain Lefebvre,
INRIA Sophia-Antipolis
Elmar Eisemann,
Saarland Univ./MPI
Miguel Sainz
NVIDIA Corporation
2. A (very) brief history of voxels
Rings a bell?Outcast (Appeal Software)
Comanche (Novalogic)
Voxel grid illustration
courtesy of “Real-Time
Volume Graphics”
A (very) brief history of voxels
3. Voxel Engines in Special effects
Natural representationFluid, smoke, scans, …
Volumetric phenomena
Semi-transparency
Unified rendering
representation
Particles, meshes, fluids…
XXX, Digital Domain
The Day After Tomorrow, Digital Domain
Lord of the Rings, Digital Domain
4. Voxels in video games ?
Renewed interestID Software
○ John Carmack, Jon Olick (Siggraph 08)
○ Sparse Voxel Octree ray-casting
Crytek
[Olick08]
Jon Olick,
○ Cevat Yerli
John Carmack
…
Two goals :
Content generation
Rendering
5. Why bother with voxels?
Exploding number of trianglesCostly to transform & rasterize
Inefficient raster of small triangles on current
generation GPUs
Geometric LOD ill-defined
Eg. Progressive Meshes
Lot of manual intervention
for the artist
6. Why bother with voxels?
Filtering is an issueNeeds massive multi-
sampling
Multi-sampling is expensive
The Mummy 3, Digital Domain/Rhythm&Hues
7. Why bother with voxels?
Unified Geometry + Texturerepresentation
Avg space
occupancy/density
information
Avg color information
The Mummy 3, Digital Domain/Rhythm&Hues
8. Why bother with voxels ?
Filtering is well definedLOD = Mip-Mapping
○ Similarly to 2D textures
Unique multi-scale
representation
No additional authoring
Structured representation
Convenient to traverse & edit
Efficient to render
○ -> Ray-casting
9. How to exploit them ?
Main problems:How to render voxels quickly on the GPU ?
○ How to exploit these properties ?
Memory is a key issue !
○ E.g. 4096 ^ 3 x RGBA8 =
256 GB!!!
○ Transfer CPU GPU expensive
10. GigaVoxels
Goal: Real-time exploration of verylarge voxel scenes
Full GPU rendering pipeline
Ray-tracing based approach
Fully scalable: Infinite resolution
Publications:
I3D2009 paper [CNLE09]
Siggraph 2009 Talk
GPU Pro (ShaderX 8) Book Chapter
11. Key ideas
Rendering only dependant on what isvisible
Ray-tracing approach
Load only needed data, at the needed
resolution
Occlusion + LOD
Ray-guided streaming
Reuse loaded data as much as possible
GPU cache mechanism
Voxel
RayTracer
Data
requests
GPU
Cache
12. GigaVoxels CUDA pipeline
GPUVoxel RayTracer
Data usage+requests
Sparse Voxel
Octree
CPU
Output image
Structure updates
Mesh
data
GPU
Central
Producer
Memory
Store
GPU
Cache
Manager
Mass
storage
13.
I3D 2008 [BNMBC08]14.
15.
16. Voxel sculpting
Direct voxel scultping3D-Coat
○ Like ZBrush
Generate a lot of details
5-20 FPS
17. Data Structure
GPUVoxel RayTracer
Sparse Voxel
Octree
CPU
Output image
Data usage+requests
Structure updates
CPU Data
Store
GPU
Cache
Manager
Mass
storage
18. Sparse Voxel MipMap Pyramid
Datastructure
Composed
structure
Generalized Octree
• Empty space compaction
Bricks of voxels
• Linked by octree nodes
• Store opacity, color, normal,…
Tower model courtesy of Erklaerbar, made with 3DCoat
19. Octree of Voxel Bricks
GPULinear
Memory
1
5
One child pointer
• Compact structure
• Cache efficient
4 5
Node pool
3
4
2 3
CUDA 3D Array (Texture)
2
1
Brick pool
20. Rendering
GPUVoxel RayTracer
Sparse Voxel
Octree
CPU
Output image
Data usage+requests
Structure updates
CPU Data
Store
GPU
Cache
Manager
Ondemand
Data
Producer
21. Hierarchical Volume Ray-Casting
Render semi-transparentmaterials
Participating medias
Emission/Absorption model
for each ray
Accumulate Color intensity +
Alpha
Front-to-back
○ Stop when opaque
22. Hierarchical Volume Ray-Casting
Volume ray-casting[Sch05, CB04, LHN05a, Olick08, GMAG08, CNLE09]
One big CUDA kernel
One thread per ray
Octree traversal
KD-restart algorithm [FS05]
Ray-driven LOD
Bricks marching
Regular sampling into
the 3D texture
23. Volume Ray-Casting
TreeDescent
1
2
3
Skip
Node
4
Ray traversal
5
Brick
Marching
6
7
Brick
Marching
Brick
Marching
8
9
Per-ray LOD
evaluation
24. Rendering costs
25. Volume MipMapping mechanism
Problem: LOD usesdiscrete downsampled
levels
Popping + Aliasing
MipMap zones
L3
Same as bilinear only for
2D textures
L2
Geometry is texture
L1
Uses pre-integrated LOD !
L0
No need of multi-sampling
(eg. MSAA)
MipMap pyramid
26. Cone tracing
Samplefootprint
S31
S3
S30
S21
S2
S20
S11
S1
Linearly
interpolat
ed sample
Image S0
plane
One pixel
footprint
Integrated pixel
Color+Alpha
S10
Full MipMap
pyramid
27. Shading computation
Standard Blinn-Phong illuminationPer sample
Normal information
On-the-fly gradient with finite differences
Stored normal information
Deferred for opaque objects
28.
29. Data Management
GPUVoxel RayTracer
Sparse Voxel
Octree
Output image
Data usage+requests
Structure updates
GPU
Producer
GPU
Cache
Manager
CPU Data
Store
30. GPU Caches
Data management made through a cachemechanism
Used for both the node pool and brick pool
Allows full scalability
Rely on the octree to address elements
The node pool is addressing itself !
No page table
Data requests generated
by the ray-tracing
Node subdivision
Brick loading
Node
Pool
Cache
Mgr
Brick Pool
Cache Mgr
31. Incremental octree update
Progressive loading1
Pass 1
Wrong LOD
2
Pass 2
Data
requests
3
(Constant value)
Data
request
Pass 3
4
(LoD OK)
(Max opacity)
4
5
(Node not
reached)
Node pool
Wrong LOD
Data
request
No Data
Brick pool
1
2 3
4 5
32. Ray-based visibility & requests
Ray-based visibility & requestsMinimum amount of data is loaded
Progressive refinement
Always ensure interactivity
Fully compatible with secondary rays and exotic rays
paths
Reflections, refractions, shadows, curved rays, …
33. Cache requests handling
Entirely handled on the GPUVoxel
RayTracer
Node
Pool
Nodes write
Cache
Mgr
Request
batch
Data
Provider
Voxel bricks
write
Brick Pool
Request
handler
Cache Mgr
Procedural
Generation
Zero-copy
fetch
CPU Data
Store
34. Cache strategy
Least Recently Used (LRU) strategyOlder elements replaced first
Sorted usage list maintained for each
cache on the GPU.
Usage info provided by the ray-tracer
Maintained as a data-parallel process
Used when new elements have to be
inserted
35. SVMP caches
LRU (Least Recently Used)Track elements usage
Maintain list with least used in front
Cache Elements (Node Tile/Brick)
Oldest
Newest
Usage sorted nodes addresses
Used
nodes mask
New
elements
New data
Stream
compaction
Concatenate
Octree/Bricks Pool
Stream
compaction
36. Global cache characteristics
Driven by ray-tracingFully managed on the GPU
Zero CPU intervention apart kernel
launches.
Leads to fully on-chip structure management
and building
More efficient when large amount of
updates
37.
38.
39. Applications
40. Voxel data synthesis
InstantiationRecursivity
Infinite details
41.
42. Free voxel objects instancing
BVH structure ray-castingCooperative ray packet traversal [GPSS07]
Shared stack
WA-Buffer
Deferred compositing
43.
44.
45. Voxels generation
GPUVoxel RayTracer
Output image
Data usage+requests
Sparse Voxel
Octree
Structure updates
Mesh
data
GPU
Producer
GPU
Cache
Manager
46.
47. Procedural noise
On-the-fly meshvoxelization
Distance field
Procedural noise
48.
49.
50. Cool Blurry Effects
Going further with 3D MipMappingFull pre-integrated versions of objects
Idea: Implements blurry effects very
efficiently
Without multi-sampling
Tuning the mipmap level
Soft shadows
Depth of field
Glossy reflections…
51. Soft shadows
Secondary raysWhen ray hit object surface
MipMap level chosen to approximate light source
cone
Resulting integrated
opacity
Fully compatible with
the cache
Point light
source
Occluder
Impact
volume
Primary ray
Light source
Occluder
52.
53. Depth-Of-Field
Similarly for depthof-field…MipMap leveld
based on circle-ofconfusion size
Illustration courtesy of GPU Gems
Lens
Plane in
focus
Image
plane
Apperture
54.
55. Ambient occlusion
Uses one filtered sampleCovers the surrounding region
Without AO
With AO
56.
57. Future work direction
AnimationYes, this can be efficiently animated !
Volume deformation (skinning)
Improved visibility integration
Filtering
Shading/Normals
Isotropic pre-integration
○ Two walls problems
58. Many thanks go to …
Digisens CorporationRhone-Alpes Explora’doc program
Cluster of Excellence on Multimodal
Computing and Interaction (M2CI)
3D-Coat and Rick Sarasin
Erklaerbar