Nodes/radiance/◎ Radiance Gate
ComfyUI Node

◎ Radiance Gate

A gate that actually blocks a branch — Radiance Gate for when a switch isn't enough

By fxtdstudios·Created 7 months ago·Updated 9 days ago· 242
◎ Radiance Gate
  • data
  • fallback
  • data
  • is_open
opentrue
label

Half of a big ComfyUI workflow is plumbing, and most of it you can't easily turn off. Mute a node and you have to remember to unmute it. Delete a branch and you're rewiring. Radiance Gate is the other way: a boolean switch you can drive from a widget, a converted input, or another node's output that decides whether a whole branch runs - and whether its data flows onward.

It's dead simple on purpose. You feed it any type of data (it's a * wildcard socket, so images, latents, models, conditioning - whatever), an open boolean, and it passes the data through when open is true. Close it and it hands you either the fallback input or literally nothing.

How it works

The mechanism is exactly what the name says: a gate, not a switch. data in, data out, is_open echoing the state. The interesting part is the closed-without-fallback case. When the gate is shut and you haven't wired a fallback, it returns None - which blocks execution of everything downstream, deliberately. The author's docs call this "equivalent to ComfyUI's native skip behavior": a downstream node that can't handle None errors, and that's the point. You don't get a silent black frame, you get a loud stop.

That's the difference from a mux or an A/B switch. Those pick between live inputs. A gate picks whether a branch exists at all. The source comments spell out the production uses, and they're all things you'll hit: an optional watermark that only burns in when watermark_enabled is true, skipping a heavy post-process pass on quick draft runs, or two gates wired as a one-click A/B branch enable.

The inputs that matter

  • data - anything. Wire the branch you might want to disable.
  • open - the boolean that decides. Default true. Convert this widget to an input and drive it from a primitive, or wire is_open out of another gate to cascade conditions.
  • fallback - what comes out when closed. Leave it disconnected to block execution.

Outputs: data (the input or the fallback, whichever the state picks) and is_open (an echo you can chain into another gate or a condition node).

Where people get burned: the None behavior. If you wire a gate closed with no fallback into something that expects an image unconditionally, you'll get an error - that's intended, but it reads like a bug the first time. If you want a silent bypass instead, connect a fallback that passes the previous frame.

Installing

Radiance ships all its nodes in one pack. In ComfyUI Manager, search Radiance, hit install, restart. Manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements.txt   # or requirements_windows.txt / requirements_linux.txt / requirements_mac_silicon.txt

Linux users: install libopenexr-dev first, or the requirements step fails. If Manager refuses the install (some setups only allow the default channel), use the git route - the README calls this out explicitly.

Is it worth the pack's weight?

Radiance is a big, opinionated, 32-bit-float color-science suite - the community treats it as a niche hidden gem for film/VFX and EXR work, not a generalist pack. If you only want a gate, a mux, and a note node, you're installing eighty-odd nodes and a pile of OpenColorIO/OpenEXR dependencies to get them. That's fine if you're already in the suite for the grading nodes; it's a lot of baggage for one boolean. But if you're in, the gate is the cleanest branch-blocker in the pack, and it beats toggling mute on a node chain every time you iterate.

CategoryFXTD Studios/Radiance/Layout

Inputs (4)

NameTypeDefaultDescription
data*Data to pass through when gate is open.
openBOOLEANtrueTrue = pass data through. False = return fallback or None.
fallbackopt*Returned when gate is closed. Leave disconnected to return None (block execution).
labeloptSTRINGOptional label for this gate.

Outputs (2)

NameTypeDescription
data*The selected data (input when open, fallback when closed).
is_openBOOLEANEchoes the open state — wire to another gate or condition node.