Normal Map
Generates a tangent-space normal map from an image, converting height information to surface normals for 3D lighting.
Normal Map converts a height map (grayscale image or alpha channel) into a tangent-space normal map suitable for 3D rendering. The RGB channels encode surface orientation: red = X-axis tilt, green = Y-axis tilt, blue = Z-axis (facing up).
Source selects whether to derive height from the image’s Luminance (brightness) or Alpha channel. Strength controls the intensity of the surface relief. An optional pre-blur smooths the height map before computing normals, which reduces noise artifacts in the output.
Method picks the derivative kernel: Sobel 3x3 (Legacy) is the original, Scharr 3x3 is more rotationally symmetric (diagonal detail keeps the same weight as horizontal and vertical), and Central Difference is a simpler, sharper derivative. Scharr and Central Difference are scaled for comparable overall strength to Sobel on constant-slope regions, so switching between them does not force you to re-dial Strength, though fine detail responds differently.
Edge Handling controls how both the pre-blur and the derivative treat the image’s borders: Reflect mirrors the image at its edges, Clamp repeats the edge pixel, and Wrap treats the image as horizontally and vertically tileable. Use Wrap for seamless height maps so the normals match across the seam.
Y Direction picks the tangent-space convention: OpenGL (+Y) points Y up, DirectX (-Y) points Y down.
Sobel 3x3 with Reflect produces the same output earlier versions did, so existing projects are unaffected.
Parameters
Section titled “Parameters”Pins
Normal Map
Which channel to derive the height map from
Derivative kernel used to compute the height gradient.
- Sobel 3x3 (Legacy): the original kernel.
- Scharr 3x3: a more rotationally symmetric kernel.
- Central Difference: a simple, sharper derivative.
Scharr and Central Difference are scaled for comparable overall strength to Sobel 3x3 on constant-slope regions, not identical response on fine detail.
Border behavior for BOTH the pre-blur and the derivative.
- Reflect: mirrors the image at its edges (default).
- Clamp: repeats the edge pixel.
- Wrap: treats the image as horizontally and vertically tileable. Use for seamless texture height maps.
Height-to-normal scale. Higher = steeper normals
Pre-blur the height map to smooth noisy normals
Flip the Y component for engines that expect bottom-up tangent space.
- OpenGL (+Y): Y points up (stored as Off/false).
- DirectX (-Y): Y points down (stored as On/true).
Usage Tips
Section titled “Usage Tips”- Normal Map accepts a grayscale or single-channel height source directly on its input and always outputs a full-color normal map.
- Use Luminance source for grayscale height maps; Alpha source for height stored in the transparency channel.
- Higher strength values exaggerate the surface relief. Start around 2.0 and adjust visually.
- Set Y Direction to DirectX (-Y) for engines that expect a bottom-up tangent space; OpenGL (+Y) is the default.
- Add a small blur (0.5–1.0) to smooth noisy source images before normal computation.
- Set Edge Handling to Wrap when the height map tiles, for example straight off Seamless Blend or Hex Tile. Reflect leaves a visible discontinuity at the seam.
- Try Scharr 3x3 when a Sobel normal map shows directional bias on diagonal detail.