Nodes/comfyui-art-venture/KSampler Adv. Fooocus
ComfyUI Node Runs on cloud

KSampler Adv. Fooocus

The Fooocus sampler, split across passes

By sipherxyz·Created 3 years ago·Updated 4 months ago· 352
KSampler Adv. Fooocus
  • model
  • positive
  • negative
  • latent_image
  • LATENT
add_noise
noise_seed0
steps20
cfg8.0
sampler_name
scheduler
start_at_step0
end_at_step10000
return_with_leftover_noise
sharpness2.00

This is Fooocus_KSampler's bigger sibling: same Fooocus-flavored sampling - including the sharpness knob that fights SDXL's tendency toward plastic-looking skin - but built for runs that need to be split across more than one sampler call instead of denoised in a single pass. If you've used ComfyUI's built-in KSampler (Advanced) for a base-model-then-refiner handoff, or to resume sampling on a latent that's already partway denoised, this is that same shape with Fooocus's tricks layered on top.

Fooocus itself has been frozen at SDXL-only, bug-fixes-only since August 2024 - its author pointed anyone wanting newer architectures at Forge or ComfyUI and isn't developing it further. What made Fooocus's output distinctive wasn't the app, though, it was a handful of internal tricks including a low-weight self-attention-guidance term tuned specifically against waxy skin. This node carries that trick into a live, still-updated ComfyUI graph, in the multi-pass form.

How it works

The mechanism is standard split-sampling: instead of denoising a latent from full noise straight through to steps, you tell the node which slice of the schedule to run (start_at_step to end_at_step) and whether to add fresh noise at the start or continue from an already-noisy latent. Chain two of these nodes - one covering the early steps, a second continuing where the first left off, possibly with a different model or LoRA stack in between - and you get a base/refiner-style two-stage generation. The sharpness guidance rides along on every pass, same as the simple version.

The inputs and outputs that matter

Everything from a stock advanced sampler is here: model, noise_seed, steps (default 20), cfg (default 8), sampler_name / scheduler (the full 44-sampler, 9-scheduler lists), positive/negative, and latent_image. Four fields specifically manage the split:

  • add_noise (enable/disable) - enable for a pass that starts from pure noise (your first stage); disable to continue denoising an already-noisy latent handed off from a previous sampler, without injecting fresh noise on top.
  • start_at_step / end_at_step - which slice of the steps schedule this call actually runs. A first-stage node might run steps 0–15 of 20; a second-stage node picks up at 15 and runs to the end.
  • return_with_leftover_noise (disable/enable) - enable if this pass hands off to another sampler afterward (keeps some noise in the latent for the next stage to consume); disable on the final pass so you get a fully denoised result ready for VAE decode.

Plus the same sharpness dial as the simple node (optional, default 2, 0100) - the Fooocus anti-plastic-skin trick, subtle by default.

Output is a single LATENT.

How to install it

Ships with the Art Venture pack. ComfyUI Manager: search comfyui-art-venture, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/sipherxyz/comfyui-art-venture

then pip install -r comfyui-art-venture/requirements.txt and restart. No model download - it's a sampler.

Common issues & troubleshooting

Just want one clean pass - this feels like overkill. It is, for that case. Use the plain Fooocus_KSampler instead; it has a normal denoise dial and none of the step/noise bookkeeping.

Double-denoised, mushy output when chaining two of these. Check return_with_leftover_noise on the first-stage node - it needs to be enable so the second stage receives a latent that still has noise left to work with. Leave it disable only on your last stage.

Artifacts or a hard seam partway through the image. start_at_step/end_at_step on the two nodes don't line up - gaps or overlaps in the step range produce exactly this. The second node's start_at_step should equal the first node's end_at_step.

Skin still looks flat even with sharpness cranked up. The effect is subtle by design - Fooocus's own default is low for a reason. Also check your CFG isn't past the point where SDXL starts burning out regardless (5–9 is the usual sweet spot); no amount of sharpness fixes an already-oversaturated image.

CategoryArtVenture/Sampling

Inputs (14)

NameTypeDefaultDescription
modelMODEL
add_noiseCOMBO2 options: enable, disable
noise_seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.00–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
start_at_stepINT00–10000
end_at_stepINT100000–10000
return_with_leftover_noiseCOMBO2 options: disable, enable
sharpnessoptFLOAT2.000–100

Outputs (1)

NameTypeDescription
LATENTLATENT