Normal mapping uses the Red Green and Blue elements of an image to encode the surface normals (eg the direction the surface is pointed towards).
# Comparison
So much cargo culting, heresay, and superstition and so little tangible explanations.
Everyone agrees that normal mapping is better than [[Bump Mapping]], but few actually explain *why.*
Yet some places admit that normal and bump maps are used together, again without explaining why.
Plus a lot of the information is outdated by decades, affect examples of how bump mapping works or why it is limited (such as 8-bit textures).
What I do know is that bump maps are trivial to make (they're just greyscale images) but that normal maps essentially pre-compute the surface information into the RGB channels which makes them more efficient to use.
It is possible to hand-draw a normal map, but it is considerably more challenging to produce functional results compared to a simple bump map.
Bump maps can be converted into normal maps and vice versa.
A greyscale image which is storing all 3 RGB channels is redundant, so normals can contain more information in the same space.
My understanding is that this additional information can be used to increase the resulting rendered detail with the same rendering resources.
> You can also create normal maps that are “impossible” for a bump map such as one part that curves up while still connecting to what should be a lower height. Normal maps dont have any sense of max/min, you can stamp a bump on top of a bump on top of a bump, but with a greyscale bump map you can’t go any higher or lower than black/white
\- [comment](https://www.reddit.com/r/blender/comments/itk55f/why_would_i_ever_use_normal_maps_when_i_can_just/) by CowBoyDanIndie on Reddit
> Normal maps store surface direction (normals), but no height information.
> ...
> Parallax and tesselation are shader techniques, not texture types, and both use height maps as input. (Height maps are pretty much exactly like bump maps. What you call them depends on what you use them for and how you made them.)
\- [comment](https://www.reddit.com/r/3DMA/comments/40ql0g/difference_between_normal_maps_bump_maps_parallax/) by volantk on Reddit
# History
Before generic normal maps existed, internal normal maps were used to convert a bump map into the resulting lighting calculations. Pre-computing these calculations was a step forward but the first iteration of normal maps were dependent on the model geometry to function. Eventually normal maps were disconnected from the geometry and became flexible to use as a material for any geometry.
# References
- https://docs.unity3d.com/2021.2/Documentation/Manual/StandardShaderMaterialParameterNormalMap.html
- https://w2.mat.ucsb.edu/594cm/2010/adams_rp1/index.html
- https://cgcookie.com/posts/normal-vs-displacement-mapping-why-games-use-normals
- https://learnopengl.com/Advanced-Lighting/Normal-Mapping
## Comparisons
```cardlink
url: https://youtu.be/KH_o4KcsVyA
title: "Normal map, bump map and displacement map explained in 4 minutes"
description: "This quick explainer will give you basic knowledge about usage of textures for reproducing surface structure..........Normal map type list based on 3D softwa..."
host: youtu.be
favicon: https://www.youtube.com/s/desktop/3ee2b817/img/favicon_32x32.png
image: https://i.ytimg.com/vi/KH_o4KcsVyA/maxresdefault.jpg?sqp=-oaymwEmCIAKENAF8quKqQMa8AEB-AH-CYAC0AWKAgwIABABGGUgZShlMA8=&rs=AOn4CLAv8YnD33NWTwdmCF7x8Ktqu0TJwA
```
- https://www.sidefx.com/docs/houdini/shade/normalmaps
- https://www.3dbiology.com/bump-map-vs-normal-map/