That brick wall in our kitchen? Well, we wanted to start with the first feature to highlight the white wall.
- ā Fakes geometric detail using texture data
- ā Light interacts with "bumps" that don't exist
- ā Zero extra polygons required
- ā Perfect for brick, stone, metal surfaces
We encode surface orientations into RGB values. At each ray hit, we sample this map, transform through the TBN matrix, and suddenly the lighting system believes it's hitting a bumpy surface.
Hours spent staring at walls that looked wrong. Shadows falling in impossible directions. The culprit? Tangent vectors weren't orthogonal to the normal. Gram-Schmidt orthogonalization saved the day ā and our sanity. Also, normal maps didn't scale well when exported from blender, making it hard to feature them in the final scene.
ā Left: flat surface. Right: same geometry with normal mapping. The difference is all in the light.