Nodes/ComfyUI-PolyhedronLoRAStack/⬡ Polyhedron Sigma Curve
ComfyUI Node

⬡ Polyhedron Sigma Curve

A sigma schedule you can actually see, for any model family

By PolyhedronAI·Created 3 months ago·Updated a day ago· 2
⬡ Polyhedron Sigma Curve
    • sigmas
    sigma_schedulekarras
    steps20
    sigma_max1.000
    sigma_min0.0020
    rho7.0

    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 for karras, exponential, and laplace. 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.

    CategoryPolyhedron/Sigma

    Inputs (5)

    NameTypeDefaultDescription
    sigma_scheduleCOMBOkarrasSigma curve shape — affects how steps are distributed across the noise range
    stepsINT201–300Number of steps. Also passed through as output for downstream sync.
    sigma_maxFLOAT1.0000.0001–1000Flow-matching (WAN/FLUX/SD3): 1.0 — k-diffusion (SDXL/SD1.5): 14.61
    sigma_minFLOAT0.00200.00001–100Flow-matching (WAN/FLUX/SD3): 0.002 — k-diffusion (SDXL/SD1.5): 0.029
    rhoFLOAT7.00.1–20Shape param — only affects karras, exponential, laplace

    Outputs (1)

    NameTypeDescription
    sigmasSIGMAS