Nodes/BrainDead Nodes/BD Detail Normal From Albedo
ComfyUI Node

BD Detail Normal From Albedo

Fake micro-detail a smooth bake can't give you

By BizaNator·Created 8 months ago·Updated 3 days ago· 15
BD Detail Normal From Albedo
  • albedo
  • base_normal
  • normal
  • status
detail_strength0.60
high_pass3.0
invertfalse

A high→low bake gives you clean geometric normals, but it can't give you skin pores, fabric weave, or fold micro-detail - those live in the texture, not the geometry. BD Detail Normal From Albedo is the node that extracts that high-frequency detail from a diffuse/albedo atlas and turns it into a tangent-space detail normal, then UDN-blends it onto your base (geometric) normal. The result: a character whose skin and cloth read as having surface variation even though the mesh is smooth.

This is squarely a "polish pass" node. You reach for it after the PBR bake - typically with BD_OVoxelBake's diffuse and normal outputs - when the asset looks too clean and plastic. It's UV-safe (per-texel), so it won't wreck your atlas.

The three knobs that matter

  • albedo (required) - your diffuse/base-color atlas.
  • detail_strength (0.6) - how hard the albedo detail tilts the normal. 0.4–1.0 is the typical range; above that you're going stylized.
  • high_pass (3 px) - the high-pass radius. This is the one people fight with: larger radius = only the finest detail survives, which stops large albedo color regions (a big red shirt panel) from turning into fake bumps. If your normal looks like a topographic map of the texture's colors, raise this.

base_normal (optional) - your geometric tangent-space normal (e.g. OVoxelBake's normal). If you leave it disconnected you get only the detail normal, which is fine for a hybrid-style look or for checking what the detail pass is contributing. invert flips the height convention (dark = raised instead of recessed) if the detail looks sunken backwards.

Outputs: normal (the blended result) and status. Wire the result into your material as the final normal map, or pack it downstream with the rest of the PBR set.

Installing

It ships in ComfyUI-BrainDead:

cd ComfyUI/custom_nodes
git clone https://github.com/BizaNator/ComfyUI-BrainDead
cd ComfyUI-BrainDead
pip install -r requirements.txt

or ComfyUI Manager → search "BrainDead". Restart after install. No model downloads - this is pure per-texel image math.

Where people get burned

The classic failure is high_pass too low, which makes the normal map amplify albedo color boundaries instead of surface detail - dark eyeliner becomes a cliff, a red jacket seam becomes a ridge. Raise high_pass until only real detail survives. Second classic: forgetting the UDN blend only works when the base normal is in the same tangent space as the detail normal - keep both from the same bake, and don't mix a bake from one UV layout with a texture from another.

Category🧠BrainDead/Mesh

Inputs (5)

NameTypeDefaultDescription
albedoIMAGEDiffuse/albedo atlas (e.g. BD_OVoxelBake 'diffuse').
detail_strengthFLOAT0.600–4How strongly the albedo detail tilts the normal. ~0.4–1.0 typical.
high_passFLOAT3.00.5–32High-pass radius (px). Larger = only finer detail survives, so large albedo color regions don't become fake bumps.
base_normaloptIMAGEBase/geometric tangent-space normal (e.g. OVoxelBake 'normal'). If omitted, only the albedo detail normal is output.
invertoptBOOLEANfalseInvert height (treat dark as raised instead of recessed).

Outputs (2)

NameTypeDescription
normalIMAGE
statusSTRING