RenderZero Reference Bridge
The node that turns four uploaded photos into reference conditioning
- positive
- negative
- vae
- positive
- negative
If you build RenderZero image workflows, this is the node that makes "upload a photo of the character" actually do something. The platform's UI hands you four slots - Character 1 Face, Character 1 Outfit, Character 1 Object, Global Reference - and RenderZero Reference Bridge is the other end of that handshake. It takes whatever got uploaded, encodes it through your VAE, and staples it onto your conditioning. It's the one node in this pack with real machinery under the hood, and the one most worth understanding before you trust it blindly.
What it does
You feed it your positive conditioning, your negative conditioning, and a VAE, plus up to four reference-image filenames. It hands back the same positive and negative conditioning, now carrying the reference images. The clever part is that it never resamples pixels at inference - each image is encoded straight to a latent, and those latents are attached to both conditioning branches via ComfyUI's reference_latents conditioning hook, the same mechanism Flux-family reference-image workflows lean on. Your sampler never sees the raw photo; it sees a latent of it riding along with the prompt.
Before encoding, every image gets the standard treatment: EXIF-transposed, converted to RGB, and auto-upscaled to roughly a megapixel at 8-divisible dimensions so the VAE gets a sensible size no matter what RenderZero uploaded. That part is automatic and you don't tune it.
The inputs that matter
positive/negative(CONDITIONING) - your text-encoder output. Both branches get the references appended, which is the point: the model can lean on them regardless of which side it attends to.vae(VAE) - the VAE for your checkpoint. Mismatch one and you get grey or noisy reference latents instead of a usable image.- The four
STRINGslots -character1_face,character1_outfit,character1_object,global_reference- are filenames of images already sitting in ComfyUI'sinputdirectory. RenderZero uploads them before queueing, so you normally never type these by hand. Blank slots are silently skipped; the ordering is fixed face → outfit → object → global. Onlyglobal_referenceis optional - the workflow runs fine with the other three filled or with all four empty.
Wire it like this: text encoder → bridge → guider or sampler branch. In plain ComfyUI terms, it replaces a hand-built reference-conditioning setup with one node.
A caveat you should hear
This is zero-shot reference conditioning, not face recognition and not IP-Adapter. It's a tidy wrapper around the reference_latents mechanism, so it only does anything for models and samplers that consume that hook - think Flux-family architectures, not SD 1.5. And the character-consistency playbook keeps reminding everyone: a reference latent gets you a character, but a trained LoRA gets you the character, shot after shot. For RenderZero workflows LoRAs aren't part of the bridge contract anyway - just drop in normal LoraLoader nodes and export the graph in API format.
Installing this pack
Every RenderZero node ships in the same repo, so install is identical across all seven. Easiest via ComfyUI Manager - search "renderzero-comfyui-nodes" and Install - or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/jamesstothard/renderzero-comfyui-nodes renderzero_bridge_nodes
Restart ComfyUI and you're done. There's no requirements.txt and no model downloads; the whole pack is a few hundred lines of plain Python leaning only on ComfyUI's own helpers. Given this ecosystem's dependency hell, that's refreshing. Custom nodes run arbitrary code on your machine, so it's also worth noting this one is small enough to read top to bottom and makes no network calls at import.
Common issues
Files are resolved against the ComfyUI input directory with a path-escape check. If you test this standalone and hit "Reference image was not found in the ComfyUI input directory," the file genuinely isn't in input/ - there's no browse button, no subfolder autocomplete. And remember the workflow contract: at most one Reference Bridge per image workflow, and never inside a video workflow. Mix the image and video bridge contracts and RenderZero will refuse to queue it.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| character1_face | STRING | — | |
| character1_outfit | STRING | — | |
| character1_object | STRING | — | |
| global_reference | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |