Nodes/RES4LYF/ClownOptions Cycles
ComfyUI Node Runs on cloud

ClownOptions Cycles

Unsample-and-resample loops for refinement

By ClownsharkBatwing·Created 2 years ago·Updated 18 days ago· 1,222
ClownOptions Cycles
  • options
  • options
cycles0.0
eta_decay_scale1.00
unsample_eta0.50
unsampler_overridenone
unsample_steps_to_run-1
unsample_cfg1.00
unsample_bongmathfalse

Cycles turns a single sampling pass into a refinement loop. The idea: after the sampler produces a result, you unsample it partway back toward noise and then resample it forward again, and repeat. Each round lets the model reconsider the image with the composition already roughly in place, which can clean up detail and coherence in a way a single forward pass doesn't. It's the same unsampling/RF-inversion family the pack is known for, packaged as an OPTIONS module you drop onto a sampler.

You'd use this when a one-shot generation is close but not quite settled - smearing that won't resolve, a face that's almost right, texture that's a little mushy. Rather than crank steps or re-roll the seed, you cycle it: nudge it back, run it forward, let convergence do the work.

How it works

The node configures the unsample leg of each cycle. cycles sets how many unsample/resample rounds to run. The unsample_* parameters control that backward pass - its eta, its CFG, whether bongmath is on, and optionally a different solver just for unsampling. The forward (resample) leg uses your main sampler settings. Package it as OPTIONS, feed it to the sampler, and the loop runs internally.

The inputs and outputs that matter

  • cycles (FLOAT, default 0) - how many refinement rounds. 0 means no cycling (the node is inert), so this is the one you must raise to make it do anything. 1–2 is plenty to start; each cycle costs another partial sampling pass.
  • unsample_eta (FLOAT, default 0.5) - noise amount on the backward pass. Governs how much the image is disturbed before being resolved again.
  • unsample_cfg (FLOAT, default 1) - CFG during unsampling; 1.0 (off) is the usual choice, matching the pack's advice that unsampling often needs no conditioning.
  • unsampler_override (default none) - optionally run a different solver for the unsample leg; none reuses your main sampler.
  • unsample_bongmath (BOOLEAN, default false) - bongmath on the backward pass.

The single output is options (OPTIONS) - wire it to your RES4LYF sampler, or chain it with other ClownOptions nodes.

Installing it

ComfyUI Manager: search RES4LYF, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/ClownsharkBatwing/RES4LYF/
cd RES4LYF
pip install -r requirements.txt

pip install in the venv or portable Python, restart, hard-refresh (F5). No downloads.

Where people get tripped up

The first surprise is that leaving cycles at 0 does nothing - it's the default, and the node is a no-op until you raise it. If you added the node expecting a change and saw none, that's why.

The second is cost and drift. Every cycle is roughly another sampling pass, so cycles of 3 means you're paying three-ish times the render time - this is not a free quality button. And too much cycling, or too high an unsample_eta, can walk the image away from what you wanted, softening or mutating it instead of refining it, because each backward pass gives the model room to change its mind. Start at one cycle with a modest eta, compare against the un-cycled result on the same seed, and add more only if it's genuinely improving. Like the other ClownOptions nodes, it's inert without a RES4LYF sampler to read the OPTIONS.

CategoryRES4LYF/sampler_options

Inputs (8)

NameTypeDefaultDescription
cyclesFLOAT0.00–10000
eta_decay_scaleFLOAT1.00-10000–10000Multiplies etas by this number after every cycle. May help drive convergence.
unsample_etaFLOAT0.50-10000–10000
unsampler_overrideCOMBOnone119 options: none, multistep/res_2m, multistep/res_3m, multistep/dpmpp_2m, multistep/dpmpp_3m, multistep/abnorsett_2m, +113
unsample_steps_to_runINT-1-1–10000
unsample_cfgFLOAT1.00-10000–10000
unsample_bongmathBOOLEANfalse
optionsoptOPTIONS

Outputs (1)

NameTypeDescription
optionsOPTIONS