Skip to content

Normal Map

Node icon
Filter

Generates a tangent-space normal map from an image, converting height information to surface normals for 3D lighting.

A material's colour (albedo) and grayscale height channel, and the tangent-space normal map the Normal Map node derives from the height via Central Difference.
A three-panel material pipeline: the colour albedo texture, its grayscale height/displacement map, and the derived tangent-space normal map (RGB surface-direction encoding).

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.

Pins

ImagePixels
InputRequired
ImageImage
Output

Normal Map

SourceChoice
Default: Luminance

Which channel to derive the height map from

  • LuminanceDerive surface height from the image brightness: bright areas are high, dark areas are low.
  • AlphaDerive surface height from the alpha channel, useful for height stored in transparency.
MethodChoice
Default: Sobel 3x3 (Legacy) Range: Sobel 3x3 (Legacy) / Scharr 3x3 / Central Difference

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.

Edge HandlingChoice
Default: Reflect Range: Reflect / Clamp / Wrap

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.
StrengthNumber
Default: 2.0 Range: 0.1–50.0

Height-to-normal scale. Higher = steeper normals

BlurNumber
Default: 0.0 Range: 0.0–10.0

Pre-blur the height map to smooth noisy normals

Y DirectionToggle
Default: false

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).
  • 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.