Gallery
Sections
Reading settings
No voice for this language in this browser.
More voices
Code and English terms
Off: the page’s voice reads everything, with no pause between two voices.
No voice for this language in this browser.
More voices
More voices: Microsoft Edge has natural online voices, and Windows (Settings › Time & language › Speech), macOS and Android install others.
Every image of this course, in the order the lessons render them. Each keeps the note written where it appears: the ComfyUI version, the model, the seed and the workflow, so that any of them can be rendered again. The workflows are in code/comfyui/workflows/, and each link below points at the exact revision that produced the image.
Several of these are failures, kept on purpose. A course that shows only what worked teaches half of it.
1. The node graph, installing, and a first image
Section titled “1. The node graph, installing, and a first image”
Rendered by ComfyUI v0.36.0: Stable Diffusion XL base 1.0, seed 42, 25 steps, euler sampler, normal scheduler, CFG 7, 1024 × 1024, workflow 01-txt2img.api.json, reduced to 768 × 768 for this page.
2. Diffusion, and what makes an image reproducible
Section titled “2. Diffusion, and what makes an image reproducible”All the images below were rendered by ComfyUI v0.36.0 from the lesson 1 workflow with one input changed. Every image: Stable Diffusion XL base 1.0, 1024 × 1024, positive prompt “a brass metronome on an old wooden workbench, morning light through a window, dust in the air, photograph”, negative prompt “blurry, text, watermark”, workflow 01-txt2img.api.json, reduced for this page. Unless the caption says otherwise: seed 42, 25 steps, CFG 7, euler sampler, normal scheduler.

Seed 42; 1, 4, 10, 25 and 50 steps.

Seed 42; CFG 1, 3, 7 and 12.

Seed 42; euler with normal, dpmpp_2m with karras, euler_ancestral with normal.

Seeds 42, 43 and 7; then the second image of a batch of two with seed 42 (batch_size 2).

Left: first run after starting the server. Middle: the same graph run again after the negative prompt was re-encoded. Right: where they differ, eight times amplified, dark where the difference is large.

Rendered by ComfyUI v0.36.0: Stable Diffusion XL base 1.0, seed 42, 25 steps, CFG 7, euler, normal, workflow 05-img2img.api.json with the prompt “a watercolor painting of a brass metronome on an old wooden workbench, morning light through a window”. From left to right: the starting image, then denoise 0.3, 0.5, 0.7 and 0.9.

Rendered by ComfyUI v0.36.0: Stable Diffusion XL base 1.0, and the SD-XL inpainting 0.1 UNet for the last crop; seed 42, 25 steps, CFG 7, euler, normal, prompt “a small brass bell on an old wooden workbench, morning light through a window, photograph”. From left to right: the original, 05-inpaint-vaeencode, 05-inpaint-noisemask with denoise 1 and 0.8, and 05-inpaint-model with denoise 0.99. Each crop is the result pasted back into the original.

Rendered by ComfyUI v0.36.0: SD-XL inpainting 0.1 UNet with the SDXL base 1.0 text encoders and VAE, seed 42, 25 steps, CFG 7, euler, normal, denoise 0.99, workflow 05-outpaint.api.json: 256 pixels added on the left and on the right, feathering 40.

Rendered by ComfyUI v0.36.0: Stable Diffusion XL base 1.0 with xinsir’s ControlNet union SDXL ProMax at strength 0.8, seed 42, 25 steps, CFG 7, euler, normal. From left to right: the edges of lesson 1’s image, Canny 0.4 and 0.8; the render of 06-canny.api.json, prompt “a metronome carved from blue ice on an old wooden workbench, morning light through a window, photograph”; the Lotus depth map; the render of 06-depth.api.json, prompt “a small robot made of polished wood on an old wooden workbench, morning light through a window, photograph”.

Rendered by ComfyUI v0.36.0: Stable Diffusion XL base 1.0 with xinsir’s ControlNet union SDXL ProMax, seed 42, 25 steps, CFG 7, euler, normal, workflow 06-canny.api.json. From left to right: strength 0.3, strength 1.0, and strength 0.8 with end_percent 0.3.
7. LoRA: loading, stacking, and what training one involves
Section titled “7. LoRA: loading, stacking, and what training one involves”![]()
Rendered by ComfyUI v0.36.0: Stable Diffusion XL base 1.0 with Pixel Art XL, seed 42, 25 steps, CFG 7, euler, normal, prompt “pixel art, a brass metronome on an old wooden workbench, morning light through a window”, workflow 07-lora.api.json. From left to right: strength_model and strength_clip 0.5, 1.0 and 1.5.

Rendered by ComfyUI v0.36.0: Stable Diffusion XL base 1.0, seed 42, prompt “a brass metronome on an old wooden workbench, morning light through a window, dust in the air, photograph” for the first three. From left to right: 01-txt2img.api.json with 4 steps, CFG 7, euler, normal and no LoRA; 07-lcm.api.json, LCM-LoRA, 4 steps, CFG 1, lcm, sgm_uniform; 07-lightning.api.json, SDXL-Lightning 4-step LoRA, 4 steps, CFG 1, euler, sgm_uniform; 07-lora-stack.api.json, LCM-LoRA at 1.0 and Pixel Art XL at 1.2, 8 steps, CFG 1.5, lcm, sgm_uniform, prompt “pixel art, a brass metronome on an old wooden workbench, morning light through a window”.
8. Recent models and their licenses, quantization and VRAM
Section titled “8. Recent models and their licenses, quantization and VRAM”
Rendered by ComfyUI v0.36.0: Z-Image-Turbo, seed 42, 8 steps, CFG 1, res_multistep, simple, shift 3, prompt “a brass metronome on an old wooden workbench, morning light through a window, dust in the air, photograph”, workflow 08-z-image-turbo.api.json. From left to right: bf16 network with the bf16 text encoder; int8 convrot with fp8 mixed; nvfp4 with fp4 mixed; nvfp4 with bf16.

Rendered by ComfyUI v0.36.0. First: Z-Image-Turbo bf16, seed 43, settings as above. Then: FLUX.2 klein 4B distilled, bf16, with the Qwen3 4B text encoder, seeds 42, 43 and 44, 4 steps, CFG 1, euler, Flux2Scheduler, same prompt, workflow 08-flux2-klein.api.json.

Rendered by ComfyUI v0.36.0: the detail at (384, 384) of the first render of the next section, enlarged 4 × with ImageScaleBy nearest-exact, ImageScaleBy lanczos, and ImageUpscaleWithModel with RealESRGAN_x4plus.safetensors, workflow 09-upscale-model.api.json. Each panel shows the middle 512 × 512 pixels of the 1024 × 1024 result, at 1:1.

Rendered by ComfyUI v0.36.0: Z-Image-Turbo nvfp4 with Qwen3 4B fp4 mixed, seed 42, 8 steps, CFG 1, res_multistep, simple, shift 3, prompt “an acoustic guitar leaning against a brick wall in a small music shop, warm evening light, photograph”, workflow 09-hires-fix.api.json. From left to right: the first pass; the crop (768, 768) to (1280, 1280) of Lanczos 2 ×, Real-ESRGAN then Lanczos 0.5, and the hires fix at denoise 0.33 with seed 42.

Rendered by ComfyUI v0.36.0: the same workflow and first pass, second pass denoise 0.2, 0.33, 0.5 and 0.7, crop (768, 256) to (1280, 768).

Rendered by ComfyUI v0.36.0: Z-Image-Turbo nvfp4, same first pass, LatentUpscaleBy bislerp 2 ×, second KSampler with 8 steps, res_multistep, simple, denoise 0.3, 0.55 and 0.75, workflow 09-latent-upscale.api.json.

Rendered by ComfyUI v0.36.0: Z-Image-Turbo int8 convrot with Qwen3 4B fp8 mixed, seed 42 for both passes, 8 steps, CFG 1, res_multistep, simple, prompt “flat top-down photograph of dark rosewood, fine straight grain, even soft lighting, no shadows, wood texture”, workflow 09-seamless.api.json. From left to right: the render, the offset, the mask, the result.

Rendered by ComfyUI v0.36.0: the same workflow and model. From left to right: rosewood as rendered, repaired; maple, prompt “flat top-down photograph of pale maple wood, a planed board with fine straight grain, even soft lighting, wood texture”, as rendered, repaired. Each panel is a 2048 × 2048 repeat shown at 512 × 512.

Drawn by the GA Chord Diagram node with Pillow, not by a diffusion model: C, G, Am, F, E7 and Bm7b5, 256 pixels each, the images of expected/.

Drawn by the GA Fretboard Control Map node with Pillow: the lines output for the chord C, frets 0 to 5, and the depth output for A Aeolian, frets 5 to 12; both 1024 × 1024, cropped around the neck and reduced.

The first render. ComfyUI v0.36.0: Stable Diffusion XL base 1.0, seed 42, 25 steps, euler, normal, CFG 7, 1024 × 1024, workflow 01-txt2img.api.json.

The two seed-42 images. ComfyUI v0.36.0: Stable Diffusion XL base 1.0, seed 42, 25 steps, euler, normal, CFG 7, workflow 01-txt2img.api.json. Left: first run after starting the server. Middle: the same graph after the negative prompt was encoded again. Right: where they differ, amplified eight times.

Two inpainting failures and the fix, before pasting back. ComfyUI v0.36.0: Stable Diffusion XL base 1.0, seed 42, 25 steps, CFG 7, euler, normal. From left to right: 05-inpaint-vaeencode.api.json with denoise 0.5; the same workflow with denoise 1 and a mask with a 24-pixel soft edge; 05-inpaint-model.api.json, the SD-XL inpainting 0.1 UNet with denoise 0.99, on the same soft mask.

The Canny node’s output on the author’s machine, pixel hash 77af5cb1b7e93a5c, 464 edge pixels, enlarged four times without smoothing. ComfyUI v0.36.0 on the CPU, no model, thresholds 0.05 and 0.15, workflow 05-masks.api.json. The three CI runners each drew 467 edge pixels, with three other hashes.

ComfyUI v0.36.0: Z-Image-Turbo, seed 42, 8 steps, CFG 1, res_multistep, simple, workflow 08-z-image-turbo.api.json. From left to right: bf16 with the bf16 text encoder, int8 with fp8, nvfp4 with fp4, nvfp4 with bf16.

ComfyUI v0.36.0. First: Z-Image-Turbo bf16, seed 43, workflow 08-z-image-turbo.api.json. Then: FLUX.2 klein 4B, seeds 42, 43 and 44, 4 steps, CFG 1, euler, workflow 08-flux2-klein.api.json.

Failures, before the fix. ComfyUI v0.36.0: Z-Image-Turbo nvfp4 with Qwen3 4B fp4 mixed, seed 42, 8 steps, CFG 1, res_multistep, simple, workflow 09-seamless.api.json with its cross set to 160 pixels, 64 of feather and denoise 0.7. From left to right: rosewood repeated 2 × 2; the middle 512 × 512 pixels of the rosewood; the prompt “flat top-down photograph of pale maple, subtle straight grain, even soft lighting, no shadows, wood texture”, repeated 2 × 2.