Fresco Apply
Where your drawn boxes become model patches, a positive and a latent
- model
- fresco
- image
- vae
- model
- positive
- latent
- regions
- negative
Fresco Apply is the working half of the pair. The Fresco node is a canvas you draw on; this is the node that takes that scene and puts it in the model, then hands your sampler the three things it needs: a patched model, a positive conditioning and a latent.
If you only take one thing from this page: Fresco Apply is Regions Apply with Fresco's regions inside it. Same machinery, same knobs, different front end. Which means you don't chain the two.
How it does it
A LoRA can't be masked. That's the whole reason this node exists - a LoRA is a weight delta, so merging a character LoRA in makes it fire on every token of the image, and two of them blend the faces. Fresco Apply keeps every layer's LoRA unmerged and runs it as a live side branch with a per-token gate derived from where you drew that layer. Character B's delta never touches character A's tokens.
Under the hood it's the Regions group: per-block attention hooks on Krea 2 read out a routing map as the image forms, and each layer's prompt copy rides along at full weight. That's why it's Krea 2 only - it identifies the model by its txtfusion stack and raises rather than gating nothing.
Outputs, and where they go: model to the sampler's model input, positive and negative to the sampler's conditioning, latent to the latent input (an empty canvas at your scene size, or the source image with its noise mask), and regions to the pack's Regions Preview or Region Latent if you want to see what ran.
The knobs that matter
Nine of the ten tweakables on this node are advanced. Three are worth your attention early.
layout_isolation (default 2) keeps the layers from attending each other while the composition is still forming, so each layer follows its own prompt instead of the picture averaging everything. It holds until commit_at, then eases down to isolation so lighting and edges can blend. Raise it when layers ignore their prompts. Lower it when the result looks like a collage with visible seams.
layout_start (default 0, needs the VAE) starts you from a blurred picture of the layout rather than pure noise - each layer's first reference placed in its box, over the background's - and holds that for the given share of the run. 0.15–0.25 steers placement; go higher and you start baking in the reference's colours. It's the closest thing here to "make the composition obey my boxes".
commit_at (default 0.3) is where the LoRAs ramp to full and the layer map stops moving. With lora_warmup (default 0.35) it does the preheat trick: LoRAs run at partial strength while the layout is still being decided, then come up to full once it is. If your character LoRA is dragging the composition around, lower lora_warmup.
The rest - track, release, isolation, layout_lock - mean what they mean on Regions Apply. Every one has an off position that recovers a plain baseline, which is the author's way of letting you A/B against the obvious implementation. If something looks wrong, return them all to defaults and confirm you can reproduce "regional LoRA with the mask I drew" before blaming the new code.
Editing a photo instead of generating one
Wire an image (here or on Fresco Inputs - it travels down the fresco wire) and a vae, and edit_image (on by default) switches the node to editing: the latent becomes your photo, and each layer's denoise is how much of it that layer is allowed to rewrite. Sample it with the pack's SoftPaint Sampler, or with core's Differential Diffusion on the model - and note that Fresco Apply turns Differential Diffusion on itself whenever the latent carries a mask, so you usually don't need to add it.
There's also look_source (on by default). When your layers read their references by look, this adds the photo being edited as clean tokens everyone can read - the source half of the in-context edit recipe the Krea 2 Identity Edit LoRA expects. Leave it on for photo edits; it does nothing when you're generating from scratch.
The negative output only matters at CFG above 1: it's the empty prompt read with the same reference tokens, which is the unconditional the recipe was trained with. Below CFG 1 there's no unconditional pass at all.
Install
Same pack, one install - search Nynxz in ComfyUI Manager or run comfy node install comfyui-nynxz-nodes. From source, build the frontend too:
cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzNodes
cd ComfyUI-NynxzNodes
pnpm install && pnpm build
No Python dependencies. Restart afterwards.
Common failures
Everything came out as one averaged mush: layout_isolation too low, or two layers overlapping more than you meant. Visible cut-out edges around a subject: raise release so its LoRAs reach past the box after the commit. And if you chained a Regions Apply after this node, undo that - it's the one wiring mistake that reliably breaks things.
And if Fresco Apply refuses your model, you loaded something that isn't Krea 2. The alternative was gating nothing and letting you wonder why the LoRA looked weak.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | A Krea 2 model. | |
| fresco | NYNXZ_FRESCO | — | |
| layout_lock | FLOAT | 0.000–1 | Fraction of the steps whose layout comes from the model without the layers' LoRAs (see Regions Apply). 0 is off. |
| lora_warmup | FLOAT | 0.350–1 | LoRA strength before `commit_at` (Regions Apply's preheat). 1 = full strength from the first step; lower keeps the LoRAs from pushing the composition around while it forms. |
| commit_at | FLOAT | 0.300–1 | Fraction of the steps after which the LoRAs ramp to full and the layer map stops moving. |
| track | FLOAT | 0.000–1 | How far a layer may follow its subject off the drawn shape. 0 (default) keeps it exactly where you drew it — in Fresco the boxes are the layout. Raise it for an edit whose subjects don't sit exactly in the boxes. |
| release | FLOAT | 0.150–1 | How far a layer's LoRAs reach past its edge after the commit, so subjects don't look cut out. 0 keeps the edge hard. |
| isolation | FLOAT | 0.00–8 | Keep each layer's tokens from attending the others' (see Regions Apply). Costs shared lighting; keep it low. |
| layout_isolation | FLOAT | 2.00–8 | How strongly the layers are kept apart while the layout forms, so each one follows its own prompt instead of the picture averaging them. In force until commit_at, then eases to `isolation` so lighting and edges can blend. 0 = off. Raise it if layers ignore their prompts; lower it if the result looks like a collage. |
| layout_start | FLOAT | 0.000–0.6 | Start from a blurred picture of the layout instead of pure noise, so the image follows the boxes: each layer's first reference in its box (or a soft shape), over the background's. The share of the run that holds to it — 0.15-0.25 steers placement, higher starts to keep its colours. Needs the VAE. 0 = off. Ignored when editing an image. |
| edit_image | BOOLEAN | true | Edit the photo wired into Fresco (or into this node). Off: generate a new image, using Fresco's photo only to trace and segment over. |
| look_source | BOOLEAN | true | With layers that read their references by look, also show the model the photo being edited as clean tokens everyone reads — the source half of the in-context edit recipe (e.g. the Krea 2 Identity Edit LoRA). Only when editing a photo. |
| imageopt | IMAGE | A source image to edit. The latent becomes this image, with each layer's denoise as how much of it may change — sample it with the SoftPaint Sampler, or with Differential Diffusion on the model. Shown under Fresco's canvas after a run. | |
| vaeopt | VAE | Encodes the source image or the layout start. Not needed when Fresco Inputs carries one. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | The scene prompt. |
| latent | LATENT | Empty at the canvas size, or the source image with its noise mask. |
| regions | NYNXZ_REGIONS | The layers as regions, for Regions Preview or Region Latent. |
| negative | CONDITIONING | The empty prompt — read with the photo, carrying the same reference tokens, when the photo is read by look (the edit recipe's unconditional). For CFG above 1. |