Three Material Mix
Stack two materials under one mask
- base
- top
- mask
- material
Texturing a 3D object without a UV paint program is normally a pain. You either get one uniform material or you go hunting for an external texturing tool. WASThreeMaterialMix is the pack's answer to "I want a scratched metal plate, not just metal": it paints one material over another through a mask, the way a texture tool stacks layers, and it does it entirely inside the graph.
How it works
You feed it three things: a base material, a top material, and a mask (the ComfyUI MASK type, so any mask from your graph works - an image-to-mask pass, a hand-drawn region, whatever). The mask is read in UV space, which is the key mental model: black shows the base, white shows the top, and grey mixes them at 0.5 an even blend.
Here's the part that makes it feel like a real layer stack: every channel is mixed by the same mask. Color, roughness, metalness, normals, emission, ambient occlusion, bump and displacement all follow it. If one side has a normal map and the other doesn't, the blank side is mixed against the other's plain setting, so nothing pops weirdly.
The inputs that matter
- base / top - both take a
THREE_MATERIAL, from Three Standard Material, Three Physical Material, or even another mix. - mask - where the top shows, in UV space.
- opacity - how strongly the top layer comes through overall. 1.0 uses the mask as-is; 0.35 fades the whole layer back, which is great for a subtle weathering pass.
- invert_mask - swaps which side is which.
The output is a single material - and here's the trick that makes the node genuinely powerful: the result is a normal material. Feed it back in as the base of another mix and you stack a third layer, and a fourth. Scratches over rust over a base coat, each with its own mask, none of it baked into a texture file.
Where it fits
It sits at the material stage of the standard Three pipeline: geometry + material into Three Mesh. Instead of wiring one material into the mesh, wire the mix's output there. Give your plane or sphere enough segments if you're displacing - the geometry needs vertices to move - and remember masks are UV-space, so the model needs a sane UV layout for the mask to land where you expect.
Install and gotchas
WASThreeMaterialMix is one of 43 Three-family nodes in WAS Node Suite v3. Install through ComfyUI Manager by searching WAS Node Suite v3, or:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Restart afterwards. ComfyUI 0.14.0+ and Python 3.10+ are required; nothing extra installs. Two things trip people up. First, if your mask lands on the wrong part of the object, you're almost always looking at a UV problem, not a mask problem. Second, the whole Three family is gated by features.threejs in <ComfyUI user dir>/was-node-suite/config.yaml - if the node is missing from Add Node, that switch is where to look.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| base | THREE_MATERIAL | The material underneath, showing wherever the mask is black. | |
| top | THREE_MATERIAL | The material painted over it, showing wherever the mask is white. | |
| mask | MASK | Where the top material shows, in UV space. White is all top, black all base, 0.5 an even mix. | |
| opacity | FLOAT | 1.000–1 | How strongly the top layer comes through overall. 1.0 uses the mask as it is, 0.35 fades the whole layer back. |
| invert_mask | BOOLEAN | false | `true` swaps which side the mask shows, so black becomes the top material. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| material | THREE_MATERIAL | The blended surface, for Three Mesh or as the base of another mix. |