Nodes/Tiled Diffusion NG/TileKrea2Conditioning
ComfyUI Node

TileKrea2Conditioning

Image-prompting Krea 2 one tile at a time (no reference latents)

By lany42·Created 23 days ago·Updated 16 days ago· 0
TileKrea2Conditioning
  • clip
  • reference_tiles
  • local_positive
◄strength1.00►
◄end_percent1.000►
◄downsize_to_1mpfalse►
◄prompts—►
◄baseline—►

Krea 2 is a 12B DiT with a Qwen3-VL text encoder and the Qwen-Image VAE, and like most 2026 image models it can take an image as part of the prompt. In a normal Krea 2 workflow you do that with reference latents - the image goes in through the VAE, and you pick how it's registered with something like index or index_timestep_zero under Edit Model Reference Method.

That works fine whole-canvas, and falls apart when you tile: a reference latent describes the entire picture while the denoiser evaluating tile BR is looking at a crop. TileSampler keeps Krea 2 references whole on purpose, which means the reference is global guidance for every tile rather than per-tile guidance.

TileKrea2Conditioning is the other answer. It moves the reference from the latent side to the conditioning side: it encodes each tile's image, together with that tile's text, through Krea 2's native CLIP, and hands you four complete positive conditionings in TL/TR/BR/BL order. No VAE reference latents anywhere.

How it works

For each of the four tiles it builds a token sequence of the vision turn marker plus your prompt string, encodes that with the tile image through the native Qwen3-VL encoder, and returns the result as a conditioning with the tile's interval attached. A text-only encode of each baseline string - by default the model's own empty-prompt embedding - is blended in as a separate weighted entry: strength on the reference, 1 - strength on the baseline.

That blending detail has a cost worth internalising. Because the entries are weighted separately and the host normalises them, any strength between 0 and 1 means extra model work during the active interval. 0 short-circuits straight to baseline, 1 is pure reference, and 0.75 costs you more than either.

end_percent does the same job on a schedule: after that point in the diffusion percentage, only the text-only baseline applies. The author's own note is blunt that 0.5 does not mean half the steps or half the wall-clock - it's a native schedule cutoff, not a promise about time.

Inputs and output

  • clip - a native Krea 2 CLIP. This is the failure people hit first: a regular SDXL/Qwen text encoder won't do it, and you'll get told to load the text encoder with CLIPLoader type 'krea2'. Krea 2 image tokenisation and scheduled encoding are required.
  • reference_tiles - exactly four tiles in TL/TR/BR/BL order, RGB or RGBA. This is TileView's output, on the canvas the plan describes. Four tiles, not four images.
  • prompts (optional) - four literal strings, one per tile, same order. An empty string for a tile means that tile is encoded from the image alone; an absent list means all four are image-only, i.e. pure per-tile image prompting.
  • baseline (optional) - four strings encoded text-only, used both for blending and after end_percent. Empty or absent falls back to native empty-prompt embeddings. It does not inherit prompts, so if you want the blend to compare like with like, connect the same list to both inputs. This is the single most useful gotcha in the node: with an empty baseline and strength < 1, you're blending your real prompt toward nothing.
  • strength - 0 to 1, step 0.05.
  • end_percent - 0 to 1, default 1.
  • downsize_to_1mp - off by default. Turn it on and tiles bigger than 1024² get antialiased bicubic downscaled to roughly 1 MP, aspect preserved, in floating point, with native Qwen preprocessing still applied afterwards. Worth it when your crops are enormous, since the vision encoder is the expensive part.

Output is local_positive, a list of four CONDITIONING values. Wire it straight into TileSampler's local_positive. Each one replaces that tile's entire global positive, including whatever controls or reference metadata the global positive carried - so this is an either/or with a global prompt-plus-reference setup, not a stack.

Install

cd ComfyUI/custom_nodes
git clone https://git.colorized.life/tiled-diffusion-ng.git tiled-diffusion-ng
# restart ComfyUI

ComfyUI Manager: Tiled Diffusion NG. Zero pip dependencies. You need a ComfyUI new enough to ship the native Krea 2 text encoder modules this node imports, plus 16-channel Krea 2 image latents and canvas dimensions divisible by 16 pixels for the plan. On a Turbo checkpoint, run CFG 1 with ConditioningZeroOut as the negative.

Where people get burned

  • Connecting a list where an ordinary socket expects one item. Its ordinary inputs require exactly one item each, so sweep-style list inputs error rather than quietly encoding four clips.
  • Using it expecting preservation. This is conditioning-side reference, closer in spirit to what Qwen-Image-Edit does than to a masked inpaint: it's guidance about what the tile should look like, not a guarantee that pixels survive. Combined with the whole-canvas reference path this pack keeps for Krea 2, you have two different tools with two different behaviours - global rigid reference, or per-tile soft guidance. Pick per job.
  • Assuming there's community wisdom to copy. There isn't - the pack's name returns literally nothing in the usual discussion corpora, and this node is an unusual construction: reference conditioning built for tiling rather than borrowed from a whole-image workflow. The tooltips are the documentation, and the author wrote them like someone already bitten.
CategoryTiled Diffusion NG

Inputs (7)

NameTypeDefaultDescription
clipCLIP—
reference_tilesIMAGE—
strengthFLOAT1.000–1Blend model predictions: 0 selects baseline, 1 selects reference image/text conditioning. Intermediate strengths require additional model work during the active interval.
end_percentFLOAT1.0000–1After this native diffusion percentage, use only the selected text-only baseline. 0.5 does not guarantee half the steps or wall-clock time. Native scheduling includes both intervals at the exact cutoff.
downsize_to_1mpBOOLEANfalseDownsize tiles larger than 1024² pixels with antialiased bicubic, preserving aspect ratio and floating-point pixels. Native Qwen preprocessing still applies.
promptsoptSTRINGFour literal strings in TL/TR/BR/BL execution-list order. Empty strings omit tile text; an absent or empty list encodes images only.
baselineoptSTRINGFour literal strings in TL/TR/BR/BL execution-list order, encoded text-only for prediction blending and after end_percent. An absent or empty list uses native empty-prompt embeddings. Does not inherit prompts; connect the same list to both inputs to match their text.

Outputs (1)

NameTypeDescription
local_positiveCONDITIONING—