Nodes/ComfyUI_Fill-Nodes/FL KSampler Sigma
ComfyUI Node

FL KSampler Sigma

Draw your own noise schedule instead of picking a scheduler

By filliptm·Created 3 years ago·Updated a day ago· 630
FL KSampler Sigma
  • model
  • positive
  • negative
  • latent_image
  • vae
  • image
  • model
  • positive
  • negative
  • latent
  • vae
  • image
  • sigmas
seed0
steps20
cfg7.00
sampler_name
denoise1.00
sigma_max_hint14.61
sigma_min_hint0.029
schedule_curve

Every KSampler you've used picks its noise removal schedule from a dropdown - Karras, exponential, simple, whatever. That scheduler is really just a curve: how much noise to strip at each step, from a starting sigma down to (near) zero. FL_KsamplerSigma lets you skip the dropdown entirely and draw that curve by hand on the node itself, then runs a standard sampler against it. It's for the case where none of the built-in schedules shape denoising the way you want and you'd rather sculpt it directly than fight a preset.

Why this matters (quick sampler/scheduler refresher)

The sampler is the algorithm (Euler, DPM++, etc.) that decides how to step from noisy to clean; the scheduler decides how big those steps are at each point in the process. A Karras schedule front-loads noise removal in the early-middle steps because that's where SD 1.5/SDXL-style models benefit most - but that assumption doesn't hold for every architecture or every use case, and a curve you draw yourself sidesteps the question of which named scheduler is "correct" for what you're doing.

The inputs and outputs that matter

  • schedule_curve - this is the actual sigma curve, populated by the on-node drawing widget rather than typed in by hand (it defaults to empty). sigma_max_hint (14.6146) and sigma_min_hint (0.0292) set the axis bounds for that drawing surface - those two numbers are the standard SD-family default sigma range, so they're a sane starting point even if your model's real range differs.
  • steps, cfg, sampler_name, denoise - the usual KSampler knobs, applied on top of your custom curve rather than a named scheduler.
  • latent_image or image (optional, pick one) - like FL_KsamplerBasic, this node will VAE-encode an input image for you if you hand it one along with a vae, instead of requiring you to pre-encode.
  • Outputs are generous: model, positive, negative, latent, vae, image all pass through so you can chain straight into a decode or another sampler without rewiring your other nodes, plus sigmas - the actual computed sigma tensor, which you can plug into another sampler node or just inspect to see what your drawing produced numerically.

How to install it

Through ComfyUI Manager: search "ComfyUI_Fill-Nodes" and install. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes

then restart ComfyUI. No special dependency for this node - it's built on ComfyUI's own sampling and scheduler internals. The pack as a whole is a large, general-purpose collection from one active solo developer (filliptm) spanning image FX, PDF handling, GPT/Gemini/Fal API integrations, and this KSampler family; unrelated node groups carry their own separate dependencies, not this one.

Common issues & troubleshooting

The curve looks wrong / sampling barely changes anything. Check sigma_max_hint/sigma_min_hint first - if your model's actual working sigma range is far outside those bounds, whatever you draw on the widget gets scaled into a range that doesn't match the model's expectations, and denoising will look muted or overcooked no matter how carefully you drew it.

You're not sure your custom curve is doing anything at all. Wire the sigmas output into a debug/print node (or reuse it in a second sampler) to actually see the numbers you produced - eyeballing a drawn curve and trusting it matches your intent is an easy way to fool yourself.

This is overkill for most workflows. If a named scheduler like Karras or sgm_uniform already gives you what you want, there's no reason to reach for hand-drawn curves - this node earns its place specifically when you've hit a case the presets don't cover, not as a default replacement for KSampler.

Category🏵️Fill Nodes/Ksamplers

Inputs (14)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT7.000–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
denoiseFLOAT1.000–1
sigma_max_hintFLOAT14.610.001–1000
sigma_min_hintFLOAT0.0290–1000
schedule_curveSTRING
latent_imageoptLATENT
vaeoptVAE
imageoptIMAGE

Outputs (7)

NameTypeDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latentLATENT
vaeVAE
imageIMAGE
sigmasSIGMAS