Skip to content

Image generation

Image generation in the Immersion Canvas is a node graph you build on the board. Wire cards together (a prompt, a model, a size, a generator) and press Run. Everything here runs locally. For the optional cloud image and video nodes (your own API keys, cost estimates on every run), see Cloud AI.

The nodes are off until you enable them in Settings, then install the model-runtime packages from the Image Generation Requirements dialog. See Set up local models for model and GPU notes. Once enabled, the nodes live in the canvas right-click menu at Add ▸ Image generation.

  • Add nodes from Add ▸ Image generation, grouped into the categories below.
  • Wire sockets by dragging from one node’s output to another’s input. Sockets are typed, so a node only accepts input it understands.
  • Run from a generator node (Text-to-Image, Image-to-Image, and so on). The result appears in an Image node you can wire onward.
  • N (how many variations) always comes from the Size & Sampling node.
  • The switch nodes (Prompt Switch, Seed Switch, Image Reference Switch) give each variation a different prompt, seed, or reference image.

A node that fails to load still shows in the menu, marked (unavailable). Click it to see the error.

Right-click any wire to change how all the graph’s wires are drawn. The setting is global, not per-wire:

  • Wire style: Bezier (smooth curve), Linear (straight line), or Elbow (right-angle segments).
  • Elbow corner radius: a slider (0-100 px) rounding elbow corners. 0 keeps sharp 90° corners; the graph updates live as you drag.

Ctrl-click a wire to drop a reroute waypoint at the cursor and steer around other nodes. Right-click ▸ Delete connection removes a wire.

NodeWhat it does
PromptThe text prompt that drives generation.
Negative promptThings to exclude from the image.
Prompt MergeCombine several text sources (Prompt, Negative, sticky notes) into one prompt. Inputs grow as you fill them (max 20).
Prompt SwitchA different prompt per iteration: iteration i uses input i mod count. N comes from Size & Sampling.
Image to PromptDescribe a wired image as a prompt (reverse prompt).
NodeWhat it does
ModelPick a Hugging Face model.
Advanced ModelSplit MODEL / CLIP / VAE picker for wiring each part yourself.
LoRAStack a LoRA on top of the base model.
Video ModelPick a downloaded image-to-video model (SVD / LTX-Video) to feed the Image to Video node.
NodeWhat it does
ControlNetStructure-locked generation: pose, depth, edges, lineart.
Control MapExtract a pose / depth / edge map from an image, preview it, then wire it into ControlNet.
Reference ImageSource a local image for Image-to-Image, Inpaint, or ControlNet.
Size & SamplingWidth, height, steps, CFG, seed, and N (variation count).
Seed SwitchA seed per iteration: type a number to lock a variation, or leave a row on Random.
Image Reference SwitchA style reference per iteration: iteration i uses image i mod count.
NodeWhat it does
Text-to-ImageThe Run button; produces an image from a prompt and model.
Image-to-ImageReimagines a wired image via prompt + denoise.
Edit (Instruction)Rewrite a wired image from a text instruction. Needs an instruction-edit model (see compatibility below).
InpaintRegenerate only the painted area of an init image.
Style TransferApply a style from a reference image (IP-Adapter), or restyle a source image (img2img).
Image to VideoAnimate a still into an .mp4. Wire a Video Model; SVD animates the image, LTX also follows a prompt.
NodeWhat it does
UpscaleLanczos or Real-ESRGAN 2x / 4x upscale.
Detail UpscaleAI upscale that paints in prompt-guided detail, not just a bigger raster.
Face RestoreGFPGAN face restoration: fix eyes, skin, and hair on portraits.
Color AdjustBrightness / contrast / gamma / hue plus shadows-mids-highlights balance.
LevelsInput / output levels with gamma (black and white points).
HueSelective hue: rotate individual colors or all at once.
Film FXGlow, grain, and chromatic aberration look effects.
BlurGaussian or directional blur with a motion bias.
SharpenUnsharp-mask sharpening with amount / radius / threshold.
CropReframe by trimming each edge by a percentage.
TransformOffset / scale / rotate (affine).
Depth PassMonocular depth map (MiDaS): grayscale depth from any image.
Depth of FieldDepth-driven blur from Image + Depth inputs, with focus / range / amount.
NodeWhat it does
ConstantSolid-color image source at a chosen resolution.
GradientTwo-color linear or radial gradient source.
NoiseRandom noise (mono / RGB) source.
NodeWhat it does
BlendComposite two images with blend modes + opacity (honors alpha).
Chroma KeyKey out any color to a transparent matte; pick or eyedrop the color.
Background RemoverAI subject cutout (rembg) to a transparent background, RGBA out.
Canvas ExtendExtend / outpaint the canvas: pad edges (edge / reflect / color / transparent).
AI OutpaintAll-in-one outpaint: extend the canvas and AI-fill the new area in one Run.
ReformatChange output resolution: presets or W x H, with fit / fill / distort / none.
NodeWhat it does
ImageDisplays the generated PNG.
CompareSweep-compare two images side by side with a draggable divider.
Contact SheetLive grid of every generation from a wired generator node.
Write / ExportExport the chain result to PNG / JPG / WEBP / BMP / TIFF.
  1. Add a Model (or Advanced Model) and pick a checkpoint.
  2. Add a Prompt and type your description.
  3. Add Size & Sampling; set width, height, steps, CFG, and N = 1.
  4. Add Text-to-Image and wire the model, prompt, and Size & Sampling into it.
  5. Press Run. The result lands in an Image node.

From there, wire the Image into Refine or Composite nodes.

One Run can produce a set of variations:

  • Prompt Switch changes the prompt each iteration. Set N in Size & Sampling to the number of prompts.
  • Seed Switch locks or varies the seed. Same seed with a Prompt Switch changes only the prompt; Random gives fresh compositions.
  • Image Reference Switch rotates the source / reference image each iteration.

Restyle your own image (Image-to-Image). Wire a Model + a Prompt + your image (into the Source / Style socket) + Size & Sampling into Image-to-Image. Lower denoise (around 0.45) stays close to your source; higher leans on the prompt.

A different prompt per image. Wire a Prompt Switch into Text-to-Image, set N to the number of prompts, and Run.

Lock or compare seeds. Wire a Seed Switch into the generator’s Seed input: Same seed for identical composition across iterations, Random for all different.

Rotate the source each iteration. Wire several images into an Image Reference Switch, output into Image-to-Image’s Source / Style socket, set N to match, and add a Seed Switch on Same seed so only the source changes.

Most “Failed to load” errors are a model the node can’t use:

NodeModel it needs
Text-to-Image, Image-to-ImageSD 1.5 or SDXL checkpoint
ControlNetSD 1.5 or SDXL, plus a control / structure image
Inpainta dedicated inpainting checkpoint, not the base model
Style Transfer (IP-Adapter)SD 1.5 / SDXL with a matching IP-Adapter
Edit (Instruction)an instruction-edit model such as FLUX Kontext or Qwen-Image-Edit (base SDXL / SD 1.5 will not load here)
Image to Videoan image-to-video model (SVD or LTX-Video) via the Video Model node

Size & Sampling detects a wired cloud API model: local-only controls (Steps / CFG / Sampler / Seed) grey out, and N is capped per Run to keep costs predictable (right-click the cap to raise it, with a cost acknowledgement).

A wired Negative prompt node is ignored. Its text is never sent to the cloud image APIs, so it has no effect on an API-model run. Steer an API model with the positive prompt instead. The same node still works against local checkpoints.

The Settings ▸ API tab holds your keys and a running spend ledger. See Cloud AI for the full provider and node catalog.

  • Run one generation node at a time. They share the GPU.
  • On a device-side assert, fully quit and relaunch before trying again. The GPU context does not recover on its own.
  • “Failed to load … expected [‘transformer’…]” means the wrong model class for that node; check the table above.
  • “no file named … in text_encoder” usually means a half-downloaded model; re-download it in the Model Manager.