Skip to content

Commit 312c10f

Browse files
committed
Add ch11_voxel screenshots to READMEs, record the todolist.
1 parent fc1f2a4 commit 312c10f

File tree

3 files changed

+93
-6
lines changed

3 files changed

+93
-6
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,16 @@ git clone [email protected]:Adnn/realtime_rendering_assets.git assets
1414

1515
The repository contains several standalone applications demonstrating real-time rendering techniques.
1616

17+
18+
### ch11_voxel
19+
20+
Implements a GPU-accelerated voxelization pipeline, accumulations in voxel space,
21+
compute-based mipmap filtering, and cone tracing to achieve different GI effects
22+
(radiance accumulation, AO, visibility).
23+
24+
[![intel_sponza-directional_vxgi](https://adnn.github.io/assets/rtr_prototypes/ch11_voxel/rtr_11-intel_sponza-864.jpg)](https://adnn.github.io/assets/rtr_prototypes/ch11_voxel/rtr_11-intel_sponza-1920.jpg)
25+
26+
1727
### ch11_ssao
1828

1929
Implement Screen-Space Ambient Occlusion (SSAO) in a viewer supporting PBR shading and image-based lighting (IBL).
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
X voxelize an actual model
2+
- X use dominant axis
3+
- X implement the projection in geometry shader
4+
X the problem of raytracing voxels not showing until after instanced voxel view
5+
X the spurious crash/hang in raytracing voxels
6+
X do not voxelize each frame
7+
X offer conservative rasterization
8+
X the blinking voxels on raytracing
9+
X the problem of things disappearing after minimization
10+
strange behavior of conservative rasterization with fixed-axis voxelization
11+
cannot get all walls to the same AO factor
12+
13+
X Load Sponza model, show textures and stuff
14+
x Make a mipmap chain in a 3D texture, at first with occupancy (better than auto generated), option to display mipmap levels
15+
X Voxelize normal and albedo
16+
X Inject light into a mipmapped voxel grid
17+
X Implement compute shaders for correct mipmapping of injected light
18+
X - compare it to a reference impl
19+
X Determine ambient occlusion from the irradiance instead of separate occupancy
20+
X Implement tone-mapping alternatives
21+
X Depth write to ray tracing of voxels
22+
X Allow translations (dir keys) with orbital camera
23+
X Cone trace the diffuse component (handle visibility)
24+
X - Debug the issue of ultra-bright inner-angles (e.g. walls)
25+
X Add shadow from multiple lights / point lights
26+
X Use the split-sum texture
27+
CANNOT: the TBN is in view, cone tracing need it in world. Use bump-mapping TBN when available, instead of re-computing into accumulateXxx
28+
WILL_NOT as I implement the simpler injection during voxelization: Light the scene by "photon mapping" (i.e. rasterizing from the light POV)
29+
X Add cone trace maxdistance user control
30+
X Store lights in world coordinates too, there are ub_cameraToWorld everywhere
31+
X Cone trace specular component (how to tailor the cone direction and angle to match the BRDF?)
32+
X- the specular indirect contribution seems week
33+
X Option to inject irradiance during the voxelization step (instead of storing albedo and normal, compute irradiance and average it. It is also compatible with shadow maps, but not shadow cone tracing)
34+
X- compute pass to set correct alpha
35+
X- implement visibility via shadowing
36+
X Use shadowing in forward rendering
37+
X- shadow maps
38+
X- shadow cone
39+
X Add visibility (shadowing) for voxel irradiance injection
40+
X Add tracy instrumentation to measure performances
41+
Divide by 4 instead of 8 in the mipmapping shader (but at which level should we start to not overflow?)
42+
X Anisotropic might be required for descent cone traced shadows
43+
X- how to use the level 0 with the 6 mipmap chains
44+
X- Ensure linear between mipmap levels on irradiance (in particular 6 aniso textures)
45+
Apply d vs d' correction factor to alpha
46+
Offer options for voxel shadowing on light injection:
47+
- voxel ray tracing (fix the hardcoded offset / consolidate with visibility ray tracing)
48+
- shadow cone tracing
49+
- shadow maps
50+
Find a real "axis collapsing" method (maybe need to read the current value to determine "co-axiality")
51+
X Increase the grid dimension 512^3
52+
Try to bake more bounces into injected light
53+
Try on other environments
54+
X- Pica Pica
55+
X- specular exponent to roughness
56+
X- Intel Sponza
57+
- Fix the LHS tangent basis problem
58+
59+
60+
Defects:
61+
- Light leaking at inner corners (also visible in "Voxel Cone Tracing Evaluation for Real-Time Applications" fig. 26 p36
62+
- Normal averaging on thin objects (< 1 voxel) cancels out (e.g. Sponza drapes) / direct light injection leaks on the other side
63+
- Note: this problem does not exist if we directly inject light during voxelization, instead of a separate pass
64+
- (cannot be addressed) lack of specular highlights in the voxelization (since we only inject diffuse lighting, because specular hightlight depends on traced cone direction)
65+
- The anisotropic irradiance tends to be much higher energy than the isotropic version (should pathtrace a reference image to conclude which is more accurate)
66+
- With anisotropic, light leaks in some pathological case: e.g. thin wall with a very bright and a very dark side.
67+
The leak will occur on the axis bright->dark, and will catch up to both the tangential diffuse cone, and the normal aligned cone (not "escaping" fast enough)

src/apps/ch11_voxel/ch11_voxel/README.md

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@
22

33
## Voxels & Voxel Cone Tracing Global Illuminatin (VXGI)
44

5-
Implements voxelization pipeline, accumulations in voxel space,
6-
and cone tracing to achieve different GI effects.
5+
Implements a GPU-accelerated voxelization pipeline, accumulations in voxel space,
6+
compute-based mipmap filtering, and cone tracing to achieve different GI effects
7+
(radiance accumulation, AO, visibility).
8+
9+
[![intel_sponza-directional_vxgi](https://adnn.github.io/assets/rtr_prototypes/ch11_voxel/rtr_11-intel_sponza-864.jpg)](https://adnn.github.io/assets/rtr_prototypes/ch11_voxel/rtr_11-intel_sponza-1920.jpg)
10+
11+
[![pica_pica-point_vxgi](https://adnn.github.io/assets/rtr_prototypes/ch11_voxel/rtr_11-pica_pica-864.jpg)](https://adnn.github.io/assets/rtr_prototypes/ch11_voxel/rtr_11-pica_pica-1920.jpg)
12+
713

814
### DDS textures
915

@@ -14,14 +20,18 @@ This file can be used to convert textures to DDS format, using the `convert_dds.
1420

1521
## References (number is the id from the book)
1622

17-
* 306: Crassin, Cyril, and Simon Green, Octree-Based Sparse Voxelization Using the GPU Hardware
18-
Rasterizer,
23+
* 306: Crassin, Cyril, and Simon Green, Octree-Based Sparse Voxelization Using the GPU Hardware
24+
Rasterizer,
1925
https://research.nvidia.com/labs/rtr/publication/crassin2012voxelization/
2026
* Detailed description of a method to voxelize mesh models, in regular grids or SVO.
27+
* Finn, Johannes. Evaluation of Performance and Image Quality for Voxel Cone Tracing. n.d.
28+
https://www.diva-portal.org/smash/get/diva2%3A1637733/FULLTEXT01.pdf
29+
* Detailed implementation report, proposing to use sparse texture and inject light during main voxelization.
2130
* John Amanatides, Andrew Woo "A Fast Voxel Traversal Algorithm for Ray Tracing"
2231
http://www.cse.yorku.ca/~amana/research/grid.pdf
23-
* Fast and simple voxel traversal algorithm (3D DDA).
32+
* Fast and simple voxel traversal algorithm (3D DDA).
2433
Used to render a dense voxel grid via raytracing.
25-
2634
* Building an Orthonormal Basis, Revisited,
2735
https://graphics.pixar.com/library/OrthonormalB/paper.pdf
36+
* Jose Villegas - VCTRenderer
37+
https://github.com/jose-villegas/VCTRenderer/tree/master

0 commit comments

Comments
 (0)