Nodes/comfyui-watdafox-nodes/BF Parameters (watdafox)
ComfyUI Node

BF Parameters (watdafox)

One node to hold every sampling knob for a base, upscale and detail pass

By postosh·Created 9 months ago·Updated 8 months ago· 0
BF Parameters (watdafox)
    • seed
    • steps
    • cfg
    • sampler
    • scheduler
    • denoise
    • ups_steps
    • ups_cfg
    • ups_sampler
    • ups_scheduler
    • ups_denoise
    • dt_steps
    • dt_cfg
    • dt_sampler
    • dt_scheduler
    • dt_denoise
    • str_sampler
    • str_scheduler
    • str_ups_sampler
    • str_ups_scheduler
    • str_dt_sampler
    • str_dt_scheduler
    seed0
    steps30
    cfg7.0
    sampler
    scheduler
    denoise1.00
    ups_steps20
    ups_cfg7.0
    ups_sampler
    ups_scheduler
    ups_denoise0.20
    dt_steps20
    dt_cfg7.0
    dt_sampler
    dt_scheduler
    dt_denoise0.40

    BF Parameters is a "parameter pack": one node that holds every sampling setting for a three-pass workflow - a base pass, an upscale pass (ups_*), and a detailer pass (dt_*) - and outputs them all as wire-able values. Think of it as a control panel for the classic ComfyUI pipeline that community workflows keep reinventing by hand.

    Why this shape exists: the standard high-quality flow is base generate → upscale (hires-fix-style second pass) → detail (the Impact Pack FaceDetailer loop that rescues faces/hands at full resolution). Each pass wants its own steps, cfg, denoise, and often its own sampler. Stock ComfyUI makes you scatter those settings across three KSamplers in different corners of the graph, and when you're iterating you end up editing them in three places. BF Parameters collects all sixteen into one node, so "lower the upscale denoise to 0.15" is one widget, not a hunt.

    How it works

    The input list reads like a KSampler exploded into triplicate: seed, steps, cfg, sampler, scheduler, denoise for the base pass; ups_steps, ups_cfg, ups_sampler, ups_scheduler, ups_denoise (default 0.2) for upscaling; dt_steps, dt_cfg, dt_sampler, dt_scheduler, dt_denoise (default 0.4) for the detailer. The sampler combos carry all 44 samplers ComfyUI knows; the base/upscale schedulers use the standard 9, and dt_scheduler gets the extended list - the detailer-aware schedulers like AYS SDXL and OSS FLUX that this pack's Detailer Scheduler Arg node exposes. The seed has the control_after_generate flag, so you get the standard randomize/fixed behavior.

    Outputs mirror every input, plus six str_* outputs - str_sampler, str_scheduler, str_ups_sampler, str_ups_scheduler, str_dt_sampler, str_dt_scheduler - the same values as STRING, explicitly for logging or UI use. That's the part the README calls out: you can record which samplers actually ran.

    What you'll actually set

    • seed - the base seed (with control_after_generate).
    • denoise (base, default 1.0), ups_denoise (default 0.2), dt_denoise (default 0.4) - the three denoise values that define the whole multi-pass feel. These are the knobs you'll turn most.
    • The dt_scheduler dropdown - the one with the extra detailer schedules.

    Wire the sampler/scheduler outputs into your base KSampler, the ups_* ones into the upscale sampler, and dt_* into your detailer's sampler. Category: watdafox/parameter.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/OhSeongHyeon/comfyui-watdafox-nodes.git
    

    Restart ComfyUI, or ComfyUI Manager → "comfyui-watdafox-nodes". No pip dependencies, no model downloads.

    The honest take

    This is a workflow-organization node, not a quality node - it generates nothing and improves nothing by itself. It earns its place if you iterate hard on multi-pass workflows and are tired of editing samplers in three places. If you want a lighter version, the pack's BF Parameters Simple drops the upscale group and most of the str_* outputs for a single sampler/scheduler pair plus two denoise values. And if you never run detailer passes, this node's dt_* group is dead weight - the Simple variant is probably the better fit.

    Categorywatdafox/parameter

    Inputs (16)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000
    stepsINT301–1000
    cfgFLOAT7.00–100
    samplerCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
    schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
    denoiseFLOAT1.000–1
    ups_stepsINT201–1000
    ups_cfgFLOAT7.00–100
    ups_samplerCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
    ups_schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
    ups_denoiseFLOAT0.200–1
    dt_stepsINT201–1000
    dt_cfgFLOAT7.00–100
    dt_samplerCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
    dt_schedulerCOMBO17 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +11
    dt_denoiseFLOAT0.400–1

    Outputs (22)

    NameTypeDescription
    seedINT
    stepsINT
    cfgFLOAT
    samplereuler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2
    schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal
    denoiseFLOAT
    ups_stepsINT
    ups_cfgFLOAT
    ups_samplereuler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2
    ups_schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal
    ups_denoiseFLOAT
    dt_stepsINT
    dt_cfgFLOAT
    dt_samplereuler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2
    dt_schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal,AYS SDXL,AYS SD1,AYS SVD,GITS[coeff=1.2],LTXV[default],OSS FLUX,OSS Wan,OSS Chroma
    dt_denoiseFLOAT
    str_samplerSTRING
    str_schedulerSTRING
    str_ups_samplerSTRING
    str_ups_schedulerSTRING
    str_dt_samplerSTRING
    str_dt_schedulerSTRING