BF Parameters (watdafox)
One node to hold every sampling knob for a base, upscale and detail pass
- 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
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_schedulerdropdown - 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.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 301–1000 | — |
| cfg | FLOAT | 7.00–100 | — |
| sampler | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
| ups_steps | INT | 201–1000 | — |
| ups_cfg | FLOAT | 7.00–100 | — |
| ups_sampler | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| ups_scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| ups_denoise | FLOAT | 0.200–1 | — |
| dt_steps | INT | 201–1000 | — |
| dt_cfg | FLOAT | 7.00–100 | — |
| dt_sampler | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| dt_scheduler | COMBO | 17 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +11 | |
| dt_denoise | FLOAT | 0.400–1 | — |
Outputs (22)
| Name | Type | Description |
|---|---|---|
| seed | INT | — |
| steps | INT | — |
| cfg | FLOAT | — |
| sampler | euler,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 | — |
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |
| denoise | FLOAT | — |
| ups_steps | INT | — |
| ups_cfg | FLOAT | — |
| ups_sampler | euler,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_scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |
| ups_denoise | FLOAT | — |
| dt_steps | INT | — |
| dt_cfg | FLOAT | — |
| dt_sampler | euler,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_scheduler | simple,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_denoise | FLOAT | — |
| str_sampler | STRING | — |
| str_scheduler | STRING | — |
| str_ups_sampler | STRING | — |
| str_ups_scheduler | STRING | — |
| str_dt_sampler | STRING | — |
| str_dt_scheduler | STRING | — |