Skip to content

Commit 2bd6e6b

Browse files
author
Michael Bassili
committed
Add final results to devlog
1 parent 070f686 commit 2bd6e6b

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,22 @@ We implement a shadow buffer vector that's used to compute the intensity of all
9191
The viewport's normal is used to compute intensity and then vectors and meshes that overlap have a shadow applied to them. It's similar to how the Gouraud Shader was implemented, only now we're keeping track of overlapping vectors in the 3D space.
9292

9393
![Shadow Mapping](/devlog/lesson-7-shadow-mapping.png)
94+
95+
### Lesson Eight: Ambient Occlusion Map
96+
97+
The final mechanism to add is AO, ambient occlusion mapping.
98+
This doesn't use an approximated light source like before, instead opting for an entirely ambient lighting source.
99+
Most 3D games these days have an option for AO, and it makes a big difference when detailed, lit models are rendered on 4K monitors.
100+
You can randomly select `x` points from the model and compute their global illumination.
101+
You can store these illumination values in a buffer.
102+
This simple method allows a pre-computation of the AO map for the model.
103+
104+
![Shadow Mapping](/devlog/lesson-8-ambient-occlusion.png)
105+
106+
### Final Results
107+
108+
To obtain the final result, we swap the white colour of our SSAO implementation for the actual colour of the fragment instance.
109+
The result is our rendered head model.
110+
You can pass in different `obj` files into the main program and it will render them well.
111+
112+
![Shadow Mapping](/devlog/final-results.png)

devlog/lesson-final-results.png

861 KB
Loading

0 commit comments

Comments
 (0)