A layer stack in which Texture 1 is the bottom and Texture 8 is the top. Every frame it starts over from a transparent state and stacks, from the bottom up, only the slots that are connected and have an opacity greater than 0.
- opacity1-opacity8 — clamped to 0-1, default 1. It is multiplied into the source’s own alpha before compositing, so the transparent parts of an upper layer never erase what is below
- blend1-blend8 — 0 = Normal (default) / 1 = Add / 2 = Multiply / 3 = Screen
- Only the opacity of Op 1-8 is exposed in the node UI. Blend modes are set from a script
- The output is fixed at the global resolution at startup (it does not follow the resolution of the inputs)
Slots with an opacity of 0 skip compositing altogether. On a frame where not a single slot is active, the output is cleared to transparent.
Input ports
| Port ID | Type |
Texture 1 | RenderTexture |
Texture 2 | RenderTexture |
Texture 3 | RenderTexture |
Texture 4 | RenderTexture |
Texture 5 | RenderTexture |
Texture 6 | RenderTexture |
Texture 7 | RenderTexture |
Texture 8 | RenderTexture |
Output ports
| Port ID | Type |
Out | RenderTexture |
Scriptable members
| Path | Type |
opacity1 | float |
opacity2 | float |
opacity3 | float |
opacity4 | float |
opacity5 | float |
opacity6 | float |
opacity7 | float |
opacity8 | float |
blend1 | int |
blend2 | int |
blend3 | int |
blend4 | int |
blend5 | int |
blend6 | int |
blend7 | int |
blend8 | int |
Synapse Apps (scripting)
await synapse.modules.create({ type: "AppStackMixer" })