Sigmas SmoothStep
Ease a schedule in and out like a graphics engineer would
- sigmas
- SIGMAS
Smoothstep isn't a diffusion-specific idea - it's a decades-old staple of computer graphics and animation, the standard trick for making a value ease in and out instead of moving at a constant rate. This node borrows it directly and applies it to a sigma schedule: instead of whatever raw shape your schedule started with, values near the two edges you specify change slowly, and the middle does most of the moving, producing a smooth S-curve.
mode gives you a choice between the classic version and a refinement of it. smoothstep is the original 3t² − 2t³ formula. smootherstep is Ken Perlin's later tweak (6t⁵ − 15t⁴ + 10t³), which also flattens out the rate of change at the edges, not just the value - an even gentler ease at the start and end, at the cost of a slightly more aggressive middle.
The inputs and outputs that matter
sigmas is the schedule to reshape. edge0 and edge1 define the range the easing curve operates over - think of them as the two reference points the S-curve is built between, not necessarily your schedule's literal min and max. mode picks smoothstep or smootherstep. One output: SIGMAS.
Compared to Sigmas SquareRoot or Sigmas Modulus, this is the tool to reach for specifically when what you want is symmetric easing - slow, fast, slow again - rather than a curve that's simply concave or convex all the way through. If you only want to soften one end of a schedule and leave the other alone, a square root or a percentile rescale is the more direct fit; SmoothStep's whole character is the matched ease at both ends.
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
Portable installs use the embedded pip.exe in place of plain pip. Restart and hard-refresh afterward.
Where people get tripped up
edge0 and edge1 default to 0 and 1 - if your schedule's actual values sit well outside that range (which most sigma schedules do), the easing effectively happens at the extreme tail of your data rather than spread across it, and the result looks like barely anything changed. Set edge0/edge1 to match the actual range of the schedule you're feeding in, not the node's defaults, to see the S-curve applied where you expect it.
Beyond that, the choice between smoothstep and smootherstep is subtle enough that it's easy to not notice a difference at a glance - if you're trying to judge which one you prefer, compare them on the same schedule with everything else held fixed rather than eyeballing a single generation.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| sigmas | SIGMAS | — | |
| edge0 | FLOAT | 0.00-10000–10000 | — |
| edge1 | FLOAT | 1.00-10000–10000 | — |
| mode | COMBO | smoothstep | 2 options: smoothstep, smootherstep |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |