Difference between revisions of "Hardware 3D (C++ DirectX Graphics) Tutorial 34"
From Chilipedia
(→Video Timestamp Index) |
(→Video Timestamp Index) |
||
Line 19: | Line 19: | ||
* [https://youtu.be/1aaAyL6SyE0 Tutorial 34 - Part 1] | * [https://youtu.be/1aaAyL6SyE0 Tutorial 34 - Part 1] | ||
* [https://youtu.be/Tf2ZOyc0XcQ Tutorial 34 - Part 2] | * [https://youtu.be/Tf2ZOyc0XcQ Tutorial 34 - Part 2] | ||
+ | * [https://youtu.be/PnazRFnPPcg Tutorial 34 - Part 3] | ||
== Source Code == | == Source Code == |
Revision as of 19:10, 14 September 2019
Normal mapping is like what texture mapping would be if it actually lived up to its name. Time to learn about tangent space and other such weird things, I guess.
Contents
Topics Covered
Part 1
- Normal mapping motivation / goal
- Texture alignment
- RGB encoding of normal vectors
Part 2
- Translation of object space normal map into view space
- Refactoring using SOLID principles
- Single Responsibility Principle
- Open / Closed Principle
- Definition and limitations of object space normal mapping
Errata
In Part 1, Chili decodes the z component of the normal map by mapping from 0..1 => 0..1 directly, but this mapping is not common, nor is it correct for the map we are using. All channels should be mapped with 0..1 => -1..+1. This will be corrected in Part 3. It is true that the z channel will never be less than zero in a proper (tangent space) normal map, but it does not seem to be common to use this unused range to expand the dynamic range of the z channel encoding.