DeepBump Normal to Curvature
Curvature maps without a 3D package — DeepBump does the math
- image
- IMAGE
A curvature map - grayscale where white marks convex (outward) areas and black marks concave (inward) ones - is one of those textures you only realize you need when you're trying to mask edge wear on a game asset. You can bake it in a 3D package if you have the geometry. If you only have a normal map, DeepBump Normal to Curvature derives it with the DeepBump AI model, right inside ComfyUI.
It's the honest shortcut: no mesh, no bake, just a normal map in, a curvature-style mask out. People use it for wear-and-tear masks, grime overlays, edge highlighting, and detail maps - anywhere you want a mask that reacts to surface shape.
How it works
The node runs the DeepBump-dml normals→curvature model under ONNX Runtime, in 256px tiles so it stays light on VRAM. On Windows it can use DirectML for GPU acceleration; otherwise it falls back to CPU.
The one meaningful knob is blur_radius (SMALLEST → LARGEST, default MEDIUM), which controls the scale of features the model picks up. A small radius catches fine detail like scratches; a large radius reads broad shapes like panel bevels. There's no right answer - it depends on what your mask is for, so expect to try a couple of settings.
Output is a single IMAGE, grayscale, same resolution as the input.
Inputs and outputs
image- the input normal map. The tooltip notes it accepts DirectX or OpenGL format, so you don't need to flip Y first.blur_radius- feature-scale selector, MEDIUM default.
One IMAGE output. It's a standalone generator, so it doesn't need the rest of the DeepBump suite to be useful.
Install
Same pack, same caveat about the extra repo:
cd ComfyUI/custom_nodes
git clone https://github.com/lilquail/ComfyUI-Leputen-Utils
First startup clones DeepBump-dml into vendor/DeepBump and installs onnxruntime. For Windows GPU acceleration: pip install onnxruntime-directml, then restart. Find the node under Leputen-Utils → DeepBump.
Troubleshooting
- "DeepBump modules not found" - the vendor clone failed; fix it with
git clone https://github.com/lilquail/DeepBump-dml.git vendor/DeepBumpinside the pack folder. - Everything is gray mush - check the input is really a normal map, and try a different
blur_radius. SMALLEST on a smooth map gives you noise; LARGEST on a noisy map gives you blobs. The scale knob is the whole game here. - Slow on CPU - expected. Windows +
onnxruntime-directmlis the fix; the startup log confirms which provider is active. - Seams between tiles - the DeepBump models tile internally; if you're seeing visible boundaries, make sure the input is actually tileable first, since these models assume textures.
Small but genuinely useful node. Curvature masks are a pain to produce any other way when you don't have geometry, and "normal map in, wear mask out" is about as direct as texture tooling gets.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | The input normal map (DirectX or OpenGL format). | |
| blur_radius | COMBO | MEDIUM | Controls the scale of detected features. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |