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 6 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—