Skip to content

Curvature

Curvature
Texture

Curvature reads a surface’s edges and cavities out as a mask, for the two effects every worn material needs: paint rubbed off the raised edges, and dirt settled into the creases. Wire a normal map into the Normal input, a height map into Height, or a whole texture set into Texture so the node reads the set’s own Normal or Height.

  • Curvature holds both signs at once: midgray is flat, brighter is a raised edge, darker is a crease. Grade it with Levels or a Gradient Map, or use it as a factor that pushes two ways from the middle.
  • Convexity is the raised half alone, black where the surface is flat or hollow. This is the edge wear mask: reveal a scratched metal through a painted base with it.
  • Concavity is the hollow half alone, black where the surface is flat or raised. This is the grime mask: darken Base Color and raise Roughness in the cracks with it.

The halves are views of the same measurement, so they never disagree with each other or with Curvature, and neither is thresholded: both keep the full soft gradient.

Output changes what the Curvature pin carries, which is also what the node body, the Preview, and a Viewer slot show. Convexity and Concavity always carry their own half.

  • Signed (default) is the two-way reading above.
  • Convex and Concave put one half on the main pin, when you would rather not wire a second output.
  • Both is how sharply the surface bends either way, black where it is flat: a general wear mask where every edge matters and direction does not.

Switching never changes how strong the mask is, only which part you get. Uncovered areas publish midgray under Signed and black under the other three.

Curvature uses the first source it finds, in this order:

  1. a map wired into the Normal input,
  2. a map wired into the Height input,
  3. the connected texture set’s Normal,
  4. the connected texture set’s Height.

The node body says which one it used. A normal map is the better source when the asset has one: it carries the surface’s slopes directly, at the precision it was authored at.

Radius is not a search distance. It is the size of the features the mask picks out: the surface is smoothed over that scale before the bend is measured, so small values find the finest creases and larger values gather broad swells and hollows. Radius Unit sets it as a percentage of the image’s shorter side (default 0.1%) or in exact pixels.

Zero is the sharpest reading the map can give, and fine for a clean, high-resolution map. Raise it when the source is noisy, or when the mask should follow the shape of a panel rather than the grain of its surface. A wider Radius widens the mask rather than fading it, so you never have to chase Strength back up.

  • Strength scales the measurement: 1 (default) leaves it alone, and 0 is flat midgray with both halves empty. Nothing is measured from the picture, so one extreme pixel never rescales a map and two tiles of one material agree.
  • Height Depth says how tall a height map is, as on Ambient Occlusion. It applies only when the reading comes from a height map; a normal map carries its own slopes.
  • Normal Format must match the file on the Normal input. With the wrong convention, a round bump nearly cancels and a feature running across the image gets the wrong sign. A texture set carries its own Normal convention, and this setting never overrides it.
  • Edge Mode says what lies outside the map: Repeat (default) for a tiling material, Open where the surface simply ends, or Clamp to extend the border pixels.

Curvature is local: how sharply does the surface bend right here. Ambient Occlusion is about the neighborhood: how much of the sky can this point see. A crease is dark in both, but a wide, shallow bowl is dark only in occlusion, and a razor-thin scratch is strong only in curvature.

Pins

TextureTexture
InputOptional
HeightPixels
InputOptional
NormalImage
InputOptional
CurvatureMask
Output
ConvexityMask
Output
ConcavityMask
Output

Curvature

OutputChoice
Default: Signed Range: Signed / Convex / Concave / Both

What the Curvature output carries. The Convexity and Concavity outputs always carry their own half.

  • Signed: midgray is flat, raised edges brighter, creases darker.
  • Convex: raised edges only, black elsewhere. An edge wear mask.
  • Concave: creases only, black elsewhere. A grime mask.
  • Both: every edge and crease, black where flat.
Radius UnitChoice
Default: Percent Range: Percent / Pixels

How Radius is measured.

  • Percent: percent of the shorter side, so one number means the same feature size on any size of map.
  • Pixels: an exact size in pixels.
Radius (%)Number
Default: 0.100 Range: 0.000–2.000
Radius Unit = Percent

How large a feature the mask picks out, as a percentage of the shorter side of the map. Small values pick out fine creases; large values gather broad swells and hollows. 0 = sharpest

Radius (px)Number
Default: 2.0 Range: 0.0–128.0
Radius Unit = Pixels

How large a feature the mask picks out, in pixels. Small values pick out fine creases; large values gather broad swells and hollows. 0 = sharpest

StrengthNumber
Default: 1.00 Range: 0.00–32.00

Scales the measured curvature. Raise it to bring a shallow surface up into a usable mask, lower it to calm a sharp one. 1 = unchanged, 0 = flat

Source

Height Depth (%)Number
Default: 1.000 Range: 0.000–100.000

How tall the height map really is: a height difference of 1 stands this many percent of the shorter side out of the surface. Has no effect when the curvature is read from a normal map

Normal FormatChoice
Default: OpenGL Range: OpenGL / DirectX

Green-channel convention of the normal map on the Normal input. Set it to match the file.

  • OpenGL: +Y is up. The usual choice for Blender, Unity, Godot and glTF.
  • DirectX: +Y is down. The usual choice for Unreal and 3ds Max.

A Texture carries its own convention, so this has no effect on one.

Edge ModeChoice
Default: Repeat Range: Repeat / Clamp / Open

What lies outside the map.

  • Repeat: the map tiles, so the surface carries across the seam. Use it for a tiling material.
  • Clamp: the border pixels extend outward.
  • Open: nothing outside, so the surface simply ends at the border.
  • Wire a normal map straight into Normal when the asset has one. Going through Normal to Height first is rarely worth it.
  • Both halves are soft gradients. Put the threshold in a Levels or Curves node downstream, where it stays editable.
  • A hole in a cutout (an image’s alpha, or a texture set’s Opacity) raises no halo around its edge: an absent part of the surface is absent, not a cliff.
  • A flat 8-bit area reads as flat, with no false edges from quantization steps. A 32-bit (Float) document, the default for new projects, keeps full precision throughout.
  • Search the node library for “curvature”, “edge wear”, “cavity”, “convexity”, “concavity”, or “dirt mask”.