SSS Map Generator
Fake subsurface scattering in one node
- albedo
- thickness
- sss_map
Subsurface scattering is what makes skin look like skin instead of plastic, and it's also why wax, jade, marble, and candle materials look alive in a renderer. If you're building PBR material sets for a game engine or a render pipeline, you eventually need an SSS map - and most texture pipelines just... don't have one. The SSS Map Generator gives you a plausible one from your albedo in a single node, no Blender baking required.
The trick it exploits is that scattering is mostly an illusion driven by color and thickness. Dark, translucent areas scatter more; bright, opaque areas scatter less. The node encodes exactly that intuition into a map you can plug into the subsurface slot of any PBR material.
How it works
It reads the albedo's luminosity, then builds a scatter strength field where darker pixels get more weight (depth_influence controls how much darkness matters). If you feed an optional thickness map, it multiplies that field - thicker areas scatter more, which is physically backwards from intuition but right for most renderers' thickness semantics. Then it tints everything by your scatter_color and blends the result back with the albedo, so you end up with a colored SSS map rather than a bare mask.
The inputs
albedo- your base color map. Everything derives from this.scatter_color- a hex string like#FFCCAA. The default is a skin tone, and that default is the strongest argument for just trying it before you touch anything. For jade you'd go green, for wax a warm off-white.scatter_strength- 0 to 1, default 0.5. How much the tint bleeds into the result.depth_influence- 0 to 1, default 0.3. Higher means darker areas scatter noticeably more.thickness(optional) - if your pipeline already has a thickness/geometry map, plug it in and the node resizes it to match the albedo automatically.
Output is a single sss_map IMAGE. Wire it into the SSS/scattering slot of your engine's material, or drop it into a channel packer if your engine stores it in a texture channel.
Gotchas
scatter_color is a string, not a color widget - you type #FFCCAA into the field. Get the hex wrong (or forget the #) and the parse just produces a garbage tint, so keep the format consistent. Also remember this is a heuristic, not a physical simulation: it reads fine for stylized and semi-realistic materials, but if you're doing hero-shot skin for a film you'll still want a proper thickness pass. For a game asset or a stylized material, it's honestly great value for zero effort.
Installation
Part of the amtarr/ComfyUI-TextureAlchemy pack, under Add Node → Texture Alchemist → Materials. Install via ComfyUI Manager (search "TextureAlchemy") or:
cd ComfyUI/custom_nodes
git clone https://github.com/amtarr/ComfyUI-TextureAlchemy
Restart ComfyUI. No requirements file, no model downloads - it's pure torch math, so there's nothing extra to install.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| albedo | IMAGE | — | |
| scatter_color | STRING | #FFCCAA | SSS tint color (e.g., #FFCCAA for skin) |
| scatter_strength | FLOAT | 0.500–1 | — |
| depth_influence | FLOAT | 0.300–1 | How much darker areas scatter more |
| thicknessopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sss_map | IMAGE | — |