Nodes/Doom_Flux_NodePack/Doom Flux1 Sampler Advanced
ComfyUI Node

Doom Flux1 Sampler Advanced

Flux.1 img2img with step control and a 'dynamic CFG' that isn't quite

By PeterMikhai·Created about a year ago·Updated 6 days ago· 1
Doom Flux1 Sampler Advanced
  • model
  • conditioning
  • latent_image
  • output
  • denoised_output
noise_seed0
steps20
sampler_nameeuler
schedulersimple
start_at_step0
end_at_step10000
denoise1.00
cfg_start7.0
cfg_end3.0
max_shift1.15
base_shift0.50

Doom Flux1 Sampler Advanced is the sibling of the plain DoomFlux1Sampler, with one big difference: instead of building an empty latent from a width and height, it takes an existing latent as input and denoises it. That makes it the pack's img2img node for Flux.1 - VAE-encode a real image, plug the latent in here, and it re-samples it toward your conditioning. The pack's own img2img example workflow uses exactly this node.

It also adds three dials the base sampler doesn't have: start_at_step / end_at_step (a window of the schedule to run), denoise (how much of the original latent survives), and a pair of CFG values that the README describes as a ramp from cfg_start to cfg_end.

How it works

The pipeline is straightforward: it takes your input latent_image, mixes it with noise according to denoise (latent * (1-denoise) + noise * denoise), slices the sigma schedule to your start_at_step/end_at_step window, and samples. The two latent outputs are the usual output and denoised_output (the x0 prediction), both to be decoded externally.

Now, the honest caveat. The README and the node description sell cfg_start → cfg_end as a dynamic CFG that ramps over the sampling run. In the current code, it doesn't. The sampler runs a single positive-only pass at CFG 1 (like every sampler in this pack), and the only value that actually reaches the model is cfg_start, which is injected as the guidance embedding - the distilled guidance Flux reads from conditioning, not classic classifier-free guidance. cfg_end is accepted as an input and then never used. So treat this as a guidance-setting node plus a step-window node, and don't expect an interesting CFG curve. It's a small dishonesty in the docs, not a broken node - the img2img mechanics work well.

The shift handling is the same as the base sampler: max_shift/base_shift (defaults 1.15/0.5) are resolved from the latent's dimensions automatically.

Inputs you'll actually touch: latent_image (from a VAEEncode), conditioning, denoise (1.0 = full resample; ~0.4-0.6 keeps more of the original), start_at_step/end_at_step, steps, noise_seed, and cfg_start for adherence. There's no negative input - it's a single-pass CFG-1 sampler.

Installing it

Same pack, same story:

cd ComfyUI/custom_nodes
git clone https://github.com/PeterMikhai/Doom_Flux_NodePack

Restart, or install via ComfyUI Manager. No extra dependencies. Requires a recent ComfyUI (V3 io.ComfyNode API). The README's DoomAI_nodes.git clone line is stale - the repo is now Doom_Flux_NodePack.

Common issues

  • Forgetting to encode the image first. This node wants a LATENT. Drop a VAEEncode between your image and latent_image.
  • "I set cfg_end and nothing changed." Known. cfg_end isn't wired into the current version. Set your guidance with cfg_start and move on.
  • Denoise 1.0 with a tiny input latent effectively ignores the input image. If you're doing gentle edits, lower denoise - that's the main lever for "keep the original but change X."
  • Old workflows with start_at_step set from a prior ComfyUI version - the semantics (slice the sigma schedule) are stable; just double-check the window isn't empty, because an empty window short-circuits to a passthrough.

It's the node to grab when your Flux.1 work is "change something about this existing image, controlled and deliberate" rather than "dream a fresh one."

CategoryDoom/Sampler

Inputs (14)

NameTypeDefaultDescription
modelMODEL
noise_seedINT00–18446744073709550000
stepsINT201–10000
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
conditioningCONDITIONING
latent_imageLATENTВходной латент (например от img2img)
start_at_stepINT00–10000
end_at_stepINT100000–10000
denoiseFLOAT1.000–1
cfg_startFLOAT7.00–100CFG на старте
cfg_endFLOAT3.00–100CFG в конце
max_shiftFLOAT1.150–100
base_shiftFLOAT0.500–100

Outputs (2)

NameTypeDescription
outputLATENT
denoised_outputLATENT