Super Pop Residual Blend (SuperBeasts.AI)
Dial your grade up and down live, without re-running the color model
- image
- residual
- images
- filename_prefix
Super Pop Residual Blend is the tuning fork for the SuperBeasts color workflow: it lets you try different strengths of the Super Pop Color Adjustment grade without ever re-running the color model. Run the model once, capture its residuals output, and then blend those residuals onto the original image at any strength you like - 0.5, 1.5, whatever - in a fraction of the time a fresh model pass would take.
This is one of those "obvious once you see it" pieces of workflow design, and it's worth understanding why it exists. The expensive part of Super Pop isn't the blending, it's the 512×512 patch inference that predicts the residual. If you had to re-run the whole node every time you wanted to test strength 0.8 vs 1.2, you'd wait seconds to minutes per variant. By separating "compute the correction once" from "decide how strong," you can A/B strengths interactively in the same graph without the wait.
How it works
A residual, in this context, is the per-pixel difference between the corrected image and the original - think of it as a color/levels offset map the model predicted. Super Pop Color Adjustment outputs these as its third socket, typed SPCA_RESIDUAL. This node takes that, plus the original image batch, and computes:
output = clamp(original + residual × strength, 0, 1)
Nothing is re-predicted. It's pure tensor math - the residual just gets scaled and added back. That means two things: it's fast (blend speed, not inference speed), and it can't improve on what the model predicted, only apply it more or less strongly. You're choosing the amount of the grade, not the grade itself.
There's also a small correctness detail in the code: it quantizes the source image to 8-bit before blending, to match the rounding Super Pop itself used when it produced the residual. That's invisible to you and prevents a subtle mismatch that would otherwise shift the final color slightly.
The inputs that matter
Just three:
- image - the original image batch, same one you fed into Super Pop Color Adjustment.
- residual - the
SPCA_RESIDUALoutput from that node. Wire the third output socket over. - strength (default 1.0, range −100 to 100) - the dial. 0 is the original, 1.0 is the full grade, values above 2.0 clip into stylized territory (as with the main node). Negative values invert the grade, which is occasionally fun.
Outputs are images (the blended batch) and filename_prefix (a SPCA_<strength>_ string for Save Image). Nothing else to configure - this is deliberately a one-knob node.
Where it fits
The canonical setup: SB Load Model → Super Pop Color Adjustment → Super Pop Residual Blend, with the blend node's residual socket fed from Super Pop's third output. You tune strength here instead of re-queuing the graph. The pack's docs specifically recommend it for experimenting with strength without repeated model runs, and it pairs naturally with Super Pop's count batching (which gives you a spread of pre-rendered strengths, while this gives you arbitrary live ones).
Install
Same pack as Super Pop:
cd ComfyUI/custom_nodes
git clone https://github.com/SuperBeastsAI/ComfyUI-SuperBeasts
Restart ComfyUI, or install via ComfyUI Manager (search "SuperBeasts"). No extra dependencies.
Common issues
The mismatch error is the one to know: if the number of residuals doesn't match the number of images, the node raises a clear "Mismatch between number of images and residuals" error. Feed it the same batch you ran through Super Pop - that's the only supported pairing. One residual with many images is handled (it broadcasts), but many residuals with one image isn't. And remember this only re-applies an existing grade; if you change the source image, you must re-run Super Pop to get fresh residuals, or you'll be blending an outdated correction onto new pixels.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| residual | SPCA_RESIDUAL | — | |
| strength | FLOAT | 1.00-100–100 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| filename_prefix | STRING | — |