Nodes/FL PixelGen/FL PixelGen Generate
ComfyUI Node

FL PixelGen Generate

Live pixel-space sampling with a progress bar that actually shows the image forming

By filliptm·Created 6 months ago·Updated 4 months ago· 13
FL PixelGen Generate
  • model
  • text_encoder
  • images
promptA beautiful landscape
negative_prompt
width512
height512
steps25
cfg4.0
seed0
batch_size1
timeshift3.0
solver_order2

This is the node you build the whole graph for. Give it the model from the model loader and the text_encoder from the encoder loader, type a prompt, hit go, and you get an IMAGE out. It's a complete text-to-image pipeline in one box - no KSampler, no latent, no VAE decode - because PixelGen works in pixel space with flow matching. The solver is hardcoded (AdamLM, order 2 by default, on a linear schedule), so all those scheduler knobs you spent months learning on SDXL don't exist here. That's fine; the defaults are sane.

The nice part you'll actually notice: live step-by-step preview. The node pushes a JPEG preview of the predicted clean image after every sampling step, so you watch the image assemble instead of staring at a frozen progress bar. It's a genuinely pleasant touch, and it makes dialing in a prompt feel like steering rather than guessing.

Inputs that matter:

  • prompt / negative_prompt - both multiline. Remember this is a Qwen3 LLM encoder: write full sentences, forget CLIP weighting.
  • width / height - 128–1024, stepped by 32 (and internally rounded to a multiple of 32 anyway). 512² is the sweet spot on 12GB VRAM; 1024² is the top of the range and it shows.
  • steps - 1–100, default 25. Flow matching doesn't need 50; 25 is plenty, and you can drop to 20 with little pain.
  • cfg - default 4.0. Again: flow-matching territory, not SDXL. Karras-style scheduler tricks don't apply because there's no scheduler choice at all.
  • seed - standard, full-range int. batch_size - 1–4, and 4 at 512² will test your VRAM.
  • timeshift (optional, default 3.0) and solver_order (optional, 1–4, default 2) - the two knobs that actually change the solver's behavior. Higher solver_order is more accurate but slower; timeshift moves sampling effort around the trajectory. Leave both alone until you've run the defaults for a while.

Output: images, a standard ComfyUI IMAGE tensor ([B,H,W,C], floats 0–1). It plugs into the normal Save Image / Preview Image nodes, and because it's a plain image tensor you can stack anything on it - upscale, img2img-adjacent edits, whatever your existing graph does. The VAE-style decode is an identity (PixelAE) that just handles normalization, so what comes out of the solver is essentially what you see.

Install is the pack story - ComfyUI Manager search "FL PixelGen", or clone + pip install -r requirements.txt and restart. First run downloads the denoiser and Qwen3 encoder (multi-GB total) and that can look like a hang; it isn't.

Troubleshooting: if negative prompts seem to do nothing, that's the LLM-encoder family, not you. If your output is unexpectedly a different resolution than you typed, that's the 32-multiple rounding doing its job. And if generation fails with an out-of-memory, drop to 512², batch_size 1, and bfloat16 in the model loader before touching anything else. Also worth knowing: because this node runs its own bundled sampler, third-party sampler packs like RES4LYF don't apply - you can't route a SamplerCustom in here. It's a sealed box, but the box is well-tuned.

CategoryFL/PixelGen

Inputs (12)

NameTypeDefaultDescription
modelPIXELGEN_MODEL
text_encoderPIXELGEN_TEXT_ENCODER
promptSTRINGA beautiful landscape
negative_promptSTRING
widthINT512128–1024
heightINT512128–1024
stepsINT251–100
cfgFLOAT4.00.1–10
seedINT00–18446744073709550000
batch_sizeINT11–4
timeshiftoptFLOAT3.00.1–5
solver_orderoptINT21–4

Outputs (1)

NameTypeDescription
imagesIMAGE