Nodes/DDRK Omega Sampler/DDRK Omega Sampler
ComfyUI Node

DDRK Omega Sampler

When to reach for DDRK Omega Sampler

By HVOSTOVSKY·Created about a month ago·Updated about a month ago· 0
DDRK Omega Sampler
    • SAMPLER
    integratorauto
    sde_strength0.08
    sharpness0.30
    saber_fusion0.30
    saber_modeauto
    use_ema_sabertrue
    ema_decay0.70
    dyn_thresh_percentile0.995
    latent_rescale0.00
    hc2_corrector0.00
    sigma_adapt0.00
    hc2_max_order2
    limiter_kappa1.00
    momentum_beta0.25
    sde_seed-1
    s_churn0
    s_tmin0.0
    s_tmax999999
    s_noise1.00
    content_awaretrue
    auto_optimizetrue
    debug_modefalse
    debug_tag

    DDRK Omega Sampler is the low-level member of the DDRK Omega pack. Where the Unified KSampler does the whole job - model, conditioning, latent in, image latent out - this node only hands you a SAMPLER object for the stock SamplerCustom node to consume. If you just want images, use the Unified node and move on. Reach for this one when you're building a custom sampling graph where you control the SIGMAS yourself, doing img2img with a hand-picked schedule, or experimenting with the HC2 integrator in isolation.

    What it is under the hood

    Same engine as its big sibling: the sampler auto-detects whether your model is flow matching or EDM by reading the sigma schedule, routes sampling through three phases, and can use the HC2 exponential integrator - second order at one model call per step, a multistep method in the DPM-Solver++/UniPC line. The node itself takes no model input at all; it's a pure sampler configuration. Your wiring job is to pair it with a scheduler node that produces SIGMAS (the pack's DDRK Omega Scheduler works, so does any stock one) and feed both into SamplerCustom.

    The inputs you'll actually set

    • integrator - auto, hc2, rk4, heun, euler. This is the main event. hc2 is the pack's second-order-at-one-call integrator; auto picks per phase and step.
    • sde_strength - ancestral stochastic noise, FM only (silently ignored on EDM, which uses s_churn instead). 0 = deterministic.
    • sharpness - final-step perceptual sharpen, FM only by design. Set it on SDXL and nothing happens.
    • saber_fusion - spatial stabilization weight; 0 disables the module entirely. If you're doing text or graphics, that's usually the number to zero out.
    • dyn_thresh_percentile - a percentile latent limiter, 1.0 = off. Despite the name this is not Imagen-style dynamic thresholding; the README is upfront that the renormalization step is deliberately missing.
    • latent_rescale - attenuates values beyond ~2 std from the per-image mean. The tooltip hammers this home: it is not classical CFG-rescale, because ComfyUI combines conditional and unconditional predictions before the sampler runs, so the two tensors that method needs aren't available here. It was renamed from cfg_rescale to stop implying otherwise.

    Then the specialized clusters: limiter_kappa and hc2_max_order control HC2's slope limiter and order; hc2_corrector and sigma_adapt are marked experimental and default off (no measurable effect in the author's testing); s_churn/s_tmin/s_tmax/s_noise are Karras Alg 2 churn for EDM; sde_seed set to -1 derives the noise seed from the workflow seed so runs repeat from the seed widget.

    Installing and wiring it

    Same pack, same install, no extras - the README lists no dependencies beyond what ComfyUI already requires.

    cd ComfyUI/custom_nodes/
    git clone https://github.com/HVOSTOVSKY/DDRK-Omega-Sampler.git
    

    Restart, then: DDRK Omega SchedulerSIGMAS and this node → SAMPLER, both into SamplerCustom.

    Gotchas

    • At ≤6 steps the integrator is forced to euler unless you picked hc2; the console prints the override.
    • Remember the model-call arithmetic: HC2 and Euler cost one call per step, Heun two, RK4 four. On EDM, HC2's advantage evaporates - the author's measurements put it at +1.2% dynamic range while using 10% more calls. auto or heun is the EDM call.
    • sde_strength doing nothing on EDM and sharpness doing nothing on EDM are features, not bugs - they're gated per family.
    • Something weird in your latent? debug_mode writes a per-step JSON+CSV+summary to the ComfyUI output folder, which is honestly the fastest way to see which enhancers actually fired.
    Categorysampling/custom_samplers

    Inputs (23)

    NameTypeDefaultDescription
    integratorCOMBOauto5 options: auto, hc2, rk4, heun, euler
    sde_strengthFLOAT0.080–0.5Stochastic noise. 0 = deterministic. FM only.
    sharpnessFLOAT0.300–1.5Final sharpening. Auto-reduced for few-step.
    saber_fusionFLOAT0.300–1Stabilization. Auto-capped to 0.15 for FM photo models.
    saber_modeCOMBOautoAuto detects video by 5D latent with >1 frame.
    use_ema_saberBOOLEANtrue
    ema_decayFLOAT0.700–0.99
    dyn_thresh_percentileFLOAT0.9950.9–1Dynamic thresholding percentile. 1.0 = disabled. Universal (FM + EDM).
    latent_rescaleFLOAT0.000–1Attenuates latent values far from the per-image mean (beyond ~2 std). 0 = disabled. NOTE: this is NOT classical CFG-rescale (Lin et al.), which compares conditional vs unconditional predictions — those are already combined before this sampler is called, so that method cannot be implemented here. Renamed from 'cfg_rescale' to stop implying otherwise.
    hc2_correctorFLOAT0.000–1HC2 selective corrector. 0 = off. Otherwise, on any step where the high-order correction exceeds this fraction of the first-order step, HC2 spends a SECOND model call to re-evaluate the denoiser at the step's endpoint and redo the step with an interpolated slope instead of an extrapolated one. Costs one extra call per firing. Small values (0.01-0.05) fire almost every step; larger values fire only on difficult steps. EXPERIMENTAL: strong on synthetic tests, unvalidated on images.
    sigma_adaptFLOAT0.000–0.5HC2 adaptive step placement. 0 = off. Otherwise the sampler may move the intermediate sigma values by up to this fraction to equalise estimated error across steps. Step COUNT, start and terminal zero are unchanged, so timing and the progress bar are unaffected. EXPERIMENTAL and the most speculative option here: schedules are already heavily tuned per model family, and nudging them may fight that tuning. Try 0.10-0.20.
    hc2_max_orderINT21–3HC2 maximum order. 2 = second order, one model call per step (default). 3 = allow third order: uses two past denoiser evaluations, spends ONE extra model call on the first step to bootstrap (a multistep method's first step is otherwise first-order and caps the whole run's accuracy), and falls back to second order on any step where the expansion stops converging. Ignored by every other integrator.
    limiter_kappaFLOAT1.000.1–3HC2 slope limiter. Caps the 2nd-order correction at this multiple of the 1st-order step, per element. 1.0 = the correction may at most double or cancel the step, never reverse it. Lower it (0.5-0.7) if high CFG still blows out highlights; raise it toward 2-3 to let HC2 run closer to unlimited 2nd order on smooth content. Ignored by every other integrator.
    momentum_betaFLOAT0.250–0.8Velocity EMA. Reduces oscillation. 0 = disabled.
    sde_seedINT-1-1–18446744073709550000SDE noise seed. -1 = random (non-deterministic).
    s_churnFLOAT00–100EDM churn (Karras Alg 2). 0 = off. Try 5-15 for SDXL. EDM models only; silently ignored for Flow Matching.
    s_tminFLOAT0.00–999999EDM churn lower sigma bound (Karras Alg 2). Churn only fires while s_tmin <= sigma <= s_tmax. 0.0 = no lower bound.
    s_tmaxFLOAT9999990–999999EDM churn upper sigma bound. Default (max) means unbounded, matching Karras Alg 2's s_tmax=inf. Lower it to restrict churn to high-sigma steps only.
    s_noiseFLOAT1.000–2EDM churn noise multiplier. 1.0 = standard.
    content_awareBOOLEANtrueContent-aware SABER — edge-gated fusion. Disable for pixel-art/flat styles.
    auto_optimizeBOOLEANtrueAuto-disable SABER/SDE/momentum and force euler for FM few-step. Does NOT set steps/cfg.
    debug_modeBOOLEANfalseWrite a per-step diagnostics log (JSON+CSV+summary) to your ComfyUI output folder. Off by default; adds overhead only when on.
    debug_tagSTRINGOptional label included in the debug log filename, e.g. 'test1'.

    Outputs (1)

    NameTypeDescription
    SAMPLERSAMPLER