Nodes/tdxh_node_comfyui/TdxhControlNetApply
ComfyUI Node

TdxhControlNetApply

ControlNet loader and applier fused, with an off switch

By youyegit·Created 3 years ago·Updated 5 months ago· 2
TdxhControlNetApply
  • positive
  • negative
  • image
  • positive
  • negative
bool_int1
control_net_name
strength1.00
start_percent0.000
end_percent1.000

TdxhControlNetApply fuses the two stock ControlNet nodes - ControlNetLoader and ControlNetApplyAdvanced - into a single node and bolts on an on/off switch. If you're using ControlNet at all, you know the drill: the loader pulls a checkpoint from models/controlnet, and the applier injects that conditioning into your positive and negative at a strength you set, over a start/end range of the sampling. This node just does both in one slot, which is the whole TDXH philosophy in action.

The inputs are the familiar ones: bool_int (the switch), control_net_name (dropdown from your controlnet folder), positive and negative CONDITIONING, the control image, strength (0–10, default 1), start_percent (default 0) and end_percent (default 1). Outputs are positive and negative CONDITIONING, wired downstream into your KSampler like stock.

The mechanism is worth understanding because it explains two behaviors. When bool_int is 0 or strength is 0, the node short-circuits and returns your positive/negative conditioning completely untouched - no model load, no injection. That means "off" costs nothing and you can also mute a ControlNet by sliding strength to 0 instead of flipping the switch. When it's on, it runs the core ControlNetApplyAdvanced logic verbatim: strength scales how strongly the spatial condition steers the UNet, and start/end percent confine the control to a window of the sampling - the classic trick of letting ControlNet dictate composition early (say start 0, end 0.6) and then letting the prompt take over for the fine detail.

Quick ControlNet context if it helps: this is spatial conditioning - edges, depth, pose - where the prompt decides what appears and the ControlNet decides where it goes. You feed it a preprocessed image, not a raw photo, so the usual pairing is TdxhControlNetProcessor (or any preprocessor) → this node → KSampler. One switch per ControlNet makes A/B testing trivial when you're stacking several of them, which is exactly the author's use case.

Installing it

ComfyUI Manager → search tdxh_node_comfyui → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/youyegit/tdxh_node_comfyui

Restart and it's under TDXH → tdxh_efficiency. You still need the ControlNet checkpoint files themselves in models/controlnet - the node doesn't download those. Hobbyist pack, GPL-3.0; the README warns nodes can change between versions, and since this one wraps stock logic, an update could theoretically lag a ComfyUI change - the fix is always the stock node.

The honest take

If your graph is already dense with ControlNets, halving their node count is real clutter relief. If you only use one, stock is fine and you'll lose nothing by skipping this. It's a convenience node, not a new capability - but the "off means the graph still runs" property is genuinely handy for testing.

CategoryTDXH/tdxh_efficiency

Inputs (8)

NameTypeDefaultDescription
bool_intINT10–1
control_net_nameCOMBO0 options:
positiveCONDITIONING
negativeCONDITIONING
imageIMAGE
strengthFLOAT1.000–10
start_percentFLOAT0.0000–1
end_percentFLOAT1.0000–1

Outputs (2)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING