RedNode Paint Out (to any renderer)
Paint with any renderer you like, not just the one that ships with the tab
- image
- image
- mask
- denoise
- prompt
- paint
- width
- height
- cfg
- steps
- negative
- seed
- model
- clip
- vae
The Pack's paint system has an internal renderer that crops your painted region, samples it, and composites it back. RedNode Paint Out is the escape hatch: it hands the Paint tab's picture and mask out to the graph, so any renderer can do the work - a hosted model, a different architecture, another pack's img2img - and then you feed the result into RedNode Paint In to stitch it back through the feathered mask. You keep all the ergonomics of painting on the tab, and none of the lock-in to its default sampler.
The first choice is scope. Auto follows the Paint tab's own switch - Painted mode hands out the region, Whole frame hands out the picture, so the mode you set while painting is the one that runs. Whole frame forces the full picture plus a full-size mask, which is what most hosted models expect. Painted region hands out just the painted area plus context, the way the internal render works, putting more pixels on the part being redone. Two more inputs refine that region mode: context (default 0.25) is how much extra room around the paint to include as a fraction of its size - some context is what lets a renderer match the lighting instead of leaving a seam - and region_size is the pixel budget the region is handed out at, so a long thin mask gets the same detail as a compact one instead of being rationed by its longest side. region_shape picks 1:1, 4:3, 3:4, 16:9 or 9:16 to stay inside what the model was trained on; the box only ever grows, so nothing you painted is ever cropped out.
The output sockets are where the node earns its name. image and mask feed your renderer, obviously - but it also emits denoise, prompt, width, height, cfg, steps, negative, and seed, all read from the Paint tab, so you can wire them into whatever the renderer calls its strength, its prompt, its dimensions, and its sampler dials. The tab stays the single place you set those things; the renderer just consumes them. And paint is the RN_PAINT bundle for Paint In, carrying the original so nothing needs wiring twice.
Two gotchas from the tooltips, both real. The width and height outputs are of the image being handed out - in painted-region scope that is not the size of the original picture, which surprises people the first time. And if you leave the Paint tab's prompt box empty, it falls back to main_prompt / main_negative when wired, the same promise the boxes make for the internal renderer - so wire those to keep the tab's boxes optional rather than mandatory.
This is the node that makes "paint locally, render however you want" practical, and it's the piece most of the pack's paint flexibility hangs on.
Installation is the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/RedNodeAI/ComfyUI-RedNodeStudio.git
or search RedNode Studio in ComfyUI Manager, restart. No pip dependencies; works with any model.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| scope | COMBO | auto | Auto follows the Paint tab: its Painted mode hands out the region, Whole frame hands out the picture, so the switch you set while painting is the one that runs. Whole frame hands out the full picture and a full-size mask, which is what most hosted models expect, and forces that even while painting a region. Painted region hands out just the painted area plus context, the way RedNode Paint Render works, which puts more pixels on the part being redone. |
| context | FLOAT | 0.250–2 | Painted region only: how much extra room around the paint to include, as a fraction of its size. Some context is what lets a renderer match the lighting instead of leaving a seam. |
| region_size | INT | 00–4096 | Painted region only: the PIXEL BUDGET the region is handed out at, as the side of a square. 1024 means about a megapixel however the region is shaped, so a long thin mask gets the same detail as a compact one instead of being rationed by its longest side. 0 follows the Paint tab's size dial, which is what the whole-frame path already does; anything else forces that budget. |
| region_shape | COMBO | auto | Painted region only: the shape the region is grown to. Auto picks whichever of 1:1, 4:3, 3:4, 16:9 and 9:16 the painted area is already closest to, which keeps it inside what the model was trained on. The box only ever GROWS, adding context around the paint, so nothing you painted is ever cropped out. |
| imageopt | IMAGE | the picture to work from. Leave it unwired and it follows the Paint tab, the same as RedNode Paint Render does. | |
| main_promptopt | STRING | your main prompt. When the Paint tab's prompt box is empty, the prompt output hands this out instead, which is the same promise the box makes for the internal renderer. | |
| main_negativeopt | STRING | your main negative. When the Paint tab's negative box is empty, the negative output hands this out instead. | |
| rigopt | STRING | (active rig) | Which Models-tab rig comes out of the model, clip and vae sockets. (active rig) follows whichever rig is active on the Models tab; naming one pins this node to it, so two chains can each carry their own model. |
Outputs (14)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| denoise | FLOAT | — |
| prompt | STRING | — |
| paint | RN_PAINT | — |
| width | INT | — |
| height | INT | — |
| cfg | FLOAT | — |
| steps | INT | — |
| negative | STRING | — |
| seed | INT | — |
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |