⬡ Polyhedron Sigma Curve
A sigma schedule you can actually see, for any model family
- sigmas
Sigma curves are the boring-but-deep end of sampling. The scheduler you pick decides how the noise level falls across your steps, and the same step count under a different curve spends its budget somewhere entirely different - the reason "Karras broke my FLUX output" became a whole genre of confusion is that Karras concentrates effort mid-trajectory, which corrects a curved DDPM path and distorts a straight flow-matching one. The Polyhedron Sigma Curve makes that choice a wire you can see, instead of a hidden default.
The idea is straightforward: one named schedule (karras, exponential, laplace, and friends), a step count, and a noise range - emitted as a SIGMAS curve your sampler can take directly. "Universal" means it doesn't assume your model family: the two numbers you set at the top, sigma_max and sigma_min, are the entire model-family switch. Flow-matching models (WAN, FLUX, SD3) want sigma_max 1.0 and sigma_min 0.002; k-diffusion models (SDXL, SD 1.5) want 14.61 and 0.029. Get those right and the same node serves both worlds.
The inputs that matter
sigma_schedule- the curve shape.steps- the step count. The pack's own description points samplers and schedulers at this value for "single-point sync" - keep the curve's step count and your sampler's steps widget in agreement, because the curve's length is the schedule.sigma_max/sigma_min- the noise range, set per model family as above.rho- the shape parameter, and only forkarras,exponential, andlaplace. If the curve ignores it, it's harmless.
Output is a single sigmas of type SIGMAS, which plugs into the pack's own Sampler (sigmas input) or any SIGMAS-compatible sampler. The pack's Sampler documents the contract: an external curve is the schedule - it overrides scheduler/steps/denoise, its length is your step count, and its last value decides whether you finish clean or with leftover noise.
Installing it
It ships in the Polyhedron Suite pack:
cd ComfyUI/custom_nodes
git clone https://github.com/PolyhedronAI/ComfyUI-PolyhedronLoRAStack.git
# restart ComfyUI
Or ComfyUI Manager, search "Polyhedron Suite". No dependencies beyond what ComfyUI ships.
The honest take: for a beginner this node is a "if you know, you know" tool - the defaults (karras, 20 steps) are fine until they're not. It earns its keep the moment you're tuning a distilled model or matching a reference workflow's exact schedule, because now the curve is visible and editable instead of baked into a sampler's dropdown. If you're on Wan 2.2 and you reach for a custom curve, remember the flow-matching shift still applies - the curve owns the distribution of steps, but the model's sigma shift is a separate mechanism.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| sigma_schedule | COMBO | karras | Sigma curve shape — affects how steps are distributed across the noise range |
| steps | INT | 201–300 | Number of steps. Also passed through as output for downstream sync. |
| sigma_max | FLOAT | 1.0000.0001–1000 | Flow-matching (WAN/FLUX/SD3): 1.0 — k-diffusion (SDXL/SD1.5): 14.61 |
| sigma_min | FLOAT | 0.00200.00001–100 | Flow-matching (WAN/FLUX/SD3): 0.002 — k-diffusion (SDXL/SD1.5): 0.029 |
| rho | FLOAT | 7.00.1–20 | Shape param — only affects karras, exponential, laplace |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sigmas | SIGMAS | — |