![Page 1: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/1.jpg)
![Page 2: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/2.jpg)
Practical Volume rendering for realtime applications
Stoyan Nikolov
![Page 3: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/3.jpg)
VIDEO
![Page 4: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/4.jpg)
Who am I
Stoyan [email protected]@stoyannk
Co-Founder & Tech lead @ Coherent Labs
Senior Graphics dev @ Masthead Studios
Senior dev @ Eutelia
![Page 5: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/5.jpg)
Why use Volume rendering at all?
What is Volume rendering?
Types of Volume rendering techniques
Practical (today) rendering techniques
Overview
![Page 6: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/6.jpg)
Why Volume rendering
• Allows us to see „inside“ an object
• Medical imaging
• Industry
• Biology
![Page 7: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/7.jpg)
Why Volume rendering - Games
Freedom of form
![Page 8: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/8.jpg)
Why Volume rendering - Games
Destructability
EverQuest Next by Sony Online Entertainment
![Page 9: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/9.jpg)
Why Volume rendering - Games
Procedural generation
![Page 10: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/10.jpg)
Volume rendering - Input
Usually discrete volume elements — voxels
![Page 11: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/11.jpg)
Direct rendering in RT
• Ray-marching distance fields• Gigavoxel• Sparse voxel octrees (SVO)• SVO for Global Illumination
slisesix demo by rgba
Unreal Engine 4 by Epic Games
![Page 12: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/12.jpg)
• Create a polygon mesh• GPUs are designed for polygons• Other subsystems usually expect polygons
Indirect rendering for RT
![Page 13: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/13.jpg)
Basic algorithms
Marching cubes / tetrahedra / MC 33
![Page 14: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/14.jpg)
Realtime requirements
• We want to support very large meshes
• Level of Detail (LOD) required
• Difficult with MC
• Transvoxel designed to solve this
![Page 15: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/15.jpg)
Transvoxel
• Outline in Eric Lengyel’s PhD thesis
• Designed for RT applications
• Originally implemented in C4 Engine
![Page 16: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/16.jpg)
Transvoxel overview
• Based on MC
• Extend equivalence classes
![Page 17: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/17.jpg)
Basic Algorithm
• Subdivide grid in blocks (once)• Polygonize blocks (once)• Decide blocks to draw and LOD (per-frame)• Draw relevant blocks (per-frame)
![Page 18: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/18.jpg)
The LOD solution
• Introduce “transition cells” between levels• Restricted octree for rendering• Identify neighbors and draw correct transitions
![Page 19: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/19.jpg)
Transition cells
![Page 20: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/20.jpg)
Important detail
Surface shifting
![Page 21: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/21.jpg)
Texturing
• Per-voxel material Id → Texture Ids• Triplanar projection• Two sets of textures are blended for better transitions
![Page 22: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/22.jpg)
Parallelism
• Embarrassingly parallel
• Relatively easy for GPGPU
• Parts can be re-computed independently
![Page 23: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/23.jpg)
DEMO
![Page 24: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/24.jpg)
Dual contouring
• Solves the sharp edges• Works on hermite data sets
VoxelFarm engine by Voxel Farm Inc.
![Page 25: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/25.jpg)
Comparison
• MC-based algorithms
faster
require less memory
• Dual algorithms support more geometries
![Page 26: Practical Volume Rendering for realtime applications](https://reader036.vdocuments.mx/reader036/viewer/2022062313/557a37fbd8b42a32248b4a90/html5/thumbnails/26.jpg)
Potential headaches
• Memory consumption
• Correct implementations sometimes tricky
• Texturing