Nodes/MKRShift_Nodes/Transmission Map
ComfyUI Node

Transmission Map

Transmission maps without the 3D model — derive them from a flat image

By criskb·Created 7 months ago·Updated 5 months ago· 0
Transmission Map
  • image
  • source_mask
  • mask
  • image
  • mask
  • transmission_info
source_mode
normalize_mode
value_min0.000
value_max1.000
percentile_low2.0
percentile_high98.0
detail_radius2.0
detail_strength0.15
gamma1.00
contrast1.00
blur_radius0.0
invert_valuesfalse
mask_feather8.0
invert_maskfalse

Transmission is the map that controls how much light passes through a surface - think stained glass, leaves lit from behind, wax, thin fabric. And like its sibling Thickness Map, it's the map people forget to make. Transmission Map derives one from a plain image with a set of real dropdowns and sliders, so you can generate a plausible transmission pass without ever touching a 3D modeling package. Same idea as thickness, different shading model: thickness drives SSS falloff, transmission drives how much of the background shows through.

How it works

The source_mode dropdown picks what the map is built from: combined_transmission (the default, blends value/luma for an all-round transmission guess), alpha (transparent pixels = high transmission - the natural choice for glass and cutouts), value, luma, saturation, detail, or mask (build from a supplied source_mask). Then normalize_mode shapes the tone curve - auto_percentile (2nd–98th percentile stretch, the safe default), auto_range, or manual_range with explicit value_min/value_max. gamma and contrast shape the response, detail_radius/detail_strength add high-frequency variation, blur_radius smooths, and invert_values flips the convention.

The workflow hook: this is the node you chain after generating an albedo or a cutout mask. Alpha-based transmission is the standout - if your image already has transparency, alpha mode gives you a transmission map that's correct by construction for glassy materials, which is a lot more reliable than guessing from luminance.

The inputs that matter

  • source_mode - start with alpha if your image has transparency, combined_transmission otherwise
  • normalize_mode - auto_percentile is the right default
  • gamma / contrast - the tone response
  • invert_values - flip for the renderer's expected convention

Optional source_mask feeds the mask mode; optional mask region-restricts. Outputs: image (grayscale map as RGB), mask (single channel), and transmission_info logging source mode, the actual normalized range, and coverage.

Installing it

Ships in MKRShift Nodes from criskb. ComfyUI Manager → "MKRShift Nodes", or:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

Restart ComfyUI; it's under MKRShift Nodes → Surface → Maps. No models or extra deps - numpy/Pillow/torch.

Common gotchas

New pack, no community lore, so the code is ground truth. This node uses real widgets, not the pack's JSON convention, so there's no JSON-parsing trap - the trap is conceptual. The big one: transmission and thickness are easy to confuse, and using a transmission map where the renderer expects thickness (or vice versa) produces wrong-but-not-obviously-wrong shading. Check your renderer's map naming before you wire it in. And auto_percentile's outlier protection means a single super-bright pixel won't wash out the map - if your transmission looks dead flat, that's a contrast/gamma problem, not a normalization bug.

CategoryMKRShift Nodes/Surface/Maps

Inputs (17)

NameTypeDefaultDescription
imageIMAGE
source_modeCOMBO7 options: combined_transmission, alpha, value, luma, saturation, detail, +1
normalize_modeCOMBO3 options: auto_percentile, manual_range, auto_range
value_minFLOAT0.0000–1
value_maxFLOAT1.0000–1
percentile_lowFLOAT2.00–100
percentile_highFLOAT98.00–100
detail_radiusFLOAT2.00.1–64
detail_strengthFLOAT0.150–2
gammaFLOAT1.000.1–4
contrastFLOAT1.000.1–4
blur_radiusFLOAT0.00–128
invert_valuesBOOLEANfalse
mask_featherFLOAT8.00–256
invert_maskBOOLEANfalse
source_maskoptMASK
maskoptMASK

Outputs (3)

NameTypeDescription
imageIMAGE
maskMASK
transmission_infoSTRING