◎ Radiance Control
A ControlNet apply node with a Union mode picker built in
- conditioning
- control_net
- image
- conditioning
The stock ComfyUI ControlNet apply node works fine for the classic one-condition-per-model case. Radiance Control is what you reach for when your ControlNet is a Union model - one of those combined checkpoints (Flux's union, xinsir's SDXL union, the Alibaba PAI unions) that bundle canny, depth, pose, and half a dozen other modes into a single file and need to be told which mode to activate. Radiance Control has a dropdown for exactly that, which saves you from reaching for set_extra_arg hacks or a second custom pack.
At its core it's the same mechanism you already know from any apply node: it takes your conditioning, a control_net, and the conditioning image, and injects the ControlNet as a control entry on the conditioning so the sampler steers spatial structure - edges, depth, pose - during generation while the prompt decides what the content is.
The inputs that matter
- conditioning - your positive conditioning from a text encode.
- control_net - the ControlNet model. Leave it unconnected or set strength to 0 and the node bypasses gracefully, passing your conditioning through untouched instead of crashing. That's a small thing that saves real pain when you're toggling a condition on and off.
- image - the preprocessed condition image (canny edge map, depth map, pose skeleton - preprocess it first, the node doesn't do that for you).
- strength - 0 to 10, default 1. How hard the condition steers. Backing it off to 0.6–0.8 is the classic fix for "ControlNet is fighting my prompt."
- start_percent / end_percent - when control kicks in and cuts out, 0.0–1.0. Start later or end earlier to let the model do its own thing for part of the denoise.
- control_type - the Union mode selector: auto, openpose, depth, hed/pidi/scribble/ted, canny/lineart/anime_lineart/mlsd, normal, segment, tile, repaint. On a single-purpose ControlNet, "auto" is right and the rest is ignored.
Output is a single conditioning, wired straight into your sampler. The node also chains properly for multi-ControlNet stacks - it respects a previous control on the conditioning, so you can daisy-chain several of these.
Honest positioning
You don't strictly need this node - the core Apply ControlNet plus a bit of fiddling covers most single-ControlNet work. Where it earns its place: the Union dropdown, the graceful bypass, and the start/end scheduling without a scheduler node. It's a quality-of-life wrapper, and it does its one job cleanly. The pack's launch thread drew real skepticism about the broader "32-bit pipeline" claims, but this node doesn't make that claim - it's just a tidy ControlNet applicator that happens to live in a fancier pack.
Install
It's in the fxtdstudios/radiance pack - ComfyUI Manager search "Radiance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_linux.txt # or windows/mac_silicon variants
Restart after installing. Note this node needs a ControlNet model file - the pack does not download one, so you still need to drop your own .safetensors in models/controlnet. The pack's dependency install (OpenEXR, OpenColorIO, colour-science, transformers) is heavy and makes the first boot slow; if Manager's security level refuses the install, clone manually per the README.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| control_net | CONTROL_NET | — | |
| image | IMAGE | — | |
| strength | FLOAT | 1.000–10 | Global strength of the control effect. |
| start_percent | FLOAT | 0.000–1 | Percentage of the generation where control starts (0.0 = beginning). |
| end_percent | FLOAT | 1.000–1 | Percentage of the generation where control ends (1.0 = end). |
| control_type | COMBO | auto | For Union ControlNets (like Flux), select the specific control mode (Canny, Depth, etc.). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |