A normal map is fundamentally an RGB (red, green, and blue) image structure used to store surface orientation data.
Understanding the Normal Map Format
Based on the definition provided by Adobe, normal maps are created using an RGB image. This specific image format is chosen because its three color channels—Red, Green, and Blue—can be directly mapped to the three components of a surface normal vector:
- Red Channel: Represents the X-component of the normal vector.
- Green Channel: Represents the Y-component of the normal vector.
- Blue Channel: Represents the Z-component of the normal vector.
Each tiny point (texel) in the normal map stores a specific RGB color value. This color is interpreted by rendering software to determine the direction the surface is facing at that exact location, influencing how light interacts with it without needing complex 3D geometry. As the reference notes, "This means a normal map has three channels, with each containing positive or negative values" (though the color values themselves are usually mapped from a 0-255 range to represent signed vector components in shader code).
Key Characteristics
- Three Channels: Normal maps require three channels (Red, Green, Blue) to represent the X, Y, and Z dimensions of the surface normal vector.
- Color Represents Direction: The color of each pixel isn't representing visual color, but rather a vector direction. Typically, a neutral color like (128, 128, 255) in 8-bit RGB (a medium blue) represents a normal pointing directly towards the viewer (positive Z). Deviations from this color indicate slopes or bumps.
While the underlying structure is RGB, normal maps are typically saved in standard image file formats capable of storing 24-bit or higher color depth data, such as .PNG
, .TGA
, .TIFF
, .BMP
, or even high-dynamic-range formats like .EXR
or .HDR
for greater precision if needed, though the core data format utilizes the RGB channels as specified.