KSampler Normal (Umbra Lab)
KSampler Normal — the plain sampler that labels itself for clarity
- model
- positive
- negative
- latent_image
- samples
- model_name
- seed
- steps
- cfg
- sampler_name
- scheduler
KSampler Normal (Umbra Lab) is a stock ComfyUI KSampler with extra outputs and a label that tells you what it's for: ordinary text-to-image / img2img sampling, as opposed to the hires-fix pass. Mechanically it is KSampler (Umbra Lab) - the source literally subclasses it - so everything that makes the Umbra KSampler interesting applies here. The only real difference is intent, written into the name.
What it does
It wraps ComfyUI's core common_ksampler and adds two things the stock node doesn't give you:
- Metadata outputs. Beyond
samples(the LATENT), it emitsmodel_name,seed,steps,cfg,sampler_name, andscheduleras typed outputs. That's the wiring-level deal Umbra's whole save pipeline depends on - you can feed those straight intoSave Image (Umbra Lab)so the PNG records what actually ran, instead of trusting the graph to stay in sync with the file. - Seed behavior that understands batches. The optional inputs -
seed_mode(fixed / increment_per_image / random_per_image),seed_step,repeat_behavior, andrepeat_step- let one sampler run a batch where each image gets its own seed. In the defaultincrement_per_imagemode a batch of four samples with seeds 10, 11, 12, 13 without you doing any math.
The inputs you actually touch
The required set is a normal KSampler: model, positive, negative, latent_image, seed, steps, cfg, sampler_name, scheduler, denoise. For a beginner, the ones that matter most are denoise (1.0 for txt2img from an empty latent, lower for img2img so you don't erase the source) and seed (locked vs. incrementing per batch image). Everything else behaves exactly like the core node you already know.
Normal vs. Hires Fix
The reason this node exists is graph legibility. Umbra's pack ships three samplers - plain KSampler, this KSampler Normal, and KSampler Hires Fix (Umbra UI) - and in a workflow that runs a base pass and a refinement pass, seeing "Normal" next to the first one and "Hires Fix" next to the second tells you at a glance which is which. It's the "explicit type is one less thing to get wrong" school of node naming, and honestly, it works.
Installing it
Part of Umbra-Nodes, the ComfyUI companion pack for Umbra Studio. ComfyUI Manager → search "Umbra Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nocturne-Ai-Labs/Umbra-Nodes
Restart ComfyUI. No pip dependencies, no model downloads - it calls ComfyUI's own sampler.
Gotchas
Two, both inherited from the family. If you set a repeat or per-image seed mode, the node forces itself to rerun every queue execution (it returns a special "always changed" signal), so don't be alarmed when it recomputes; that's correctness, not a leak. And because it emits metadata outputs, ComfyUI treats it as carrying information downstream - if you don't use the extra outputs, you're carrying a couple of idle wires, which is harmless. The real advice: if you only need a plain sampler, stock KSampler and this node are interchangeable, so pick the one whose output wires your save node wants.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_image | LATENT | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 7.00–100 | — |
| sampler_name | 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 | — |
| seed_modeopt | COMBO | increment_per_image | 3 options: fixed, increment_per_image, random_per_image |
| seed_stepopt | INT | 11–18446744073709550000 | — |
| repeat_behavioropt | COMBO | inherit | 4 options: inherit, increment_per_repeat, random_per_repeat, none |
| repeat_stepopt | INT | 11–18446744073709550000 | — |
| style_seed_behavioropt | COMBO | normal | 2 options: normal, same_seed_style_cycle |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| samples | LATENT | — |
| model_name | STRING | — |
| seed | INT | — |
| steps | INT | — |
| cfg | FLOAT | — |
| sampler_name | STRING | — |
| scheduler | STRING | — |