Nodes/Umbra Nodes/KSampler Normal (Umbra Lab)
ComfyUI Node

KSampler Normal (Umbra Lab)

KSampler Normal — the plain sampler that labels itself for clarity

By Nocturne-Ai-Labs·Created 2 months ago·Updated 10 days ago· 0
KSampler Normal (Umbra Lab)
  • model
  • positive
  • negative
  • latent_image
  • samples
  • model_name
  • seed
  • steps
  • cfg
  • sampler_name
  • scheduler
seed0
steps20
cfg7.0
sampler_name
scheduler
denoise1.00
seed_modeincrement_per_image
seed_step1
repeat_behaviorinherit
repeat_step1
style_seed_behaviornormal

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 emits model_name, seed, steps, cfg, sampler_name, and scheduler as typed outputs. That's the wiring-level deal Umbra's whole save pipeline depends on - you can feed those straight into Save 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, and repeat_step - let one sampler run a batch where each image gets its own seed. In the default increment_per_image mode 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.

CategoryUmbra Lab

Inputs (15)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT7.00–100
sampler_nameCOMBO44 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
seed_modeoptCOMBOincrement_per_image3 options: fixed, increment_per_image, random_per_image
seed_stepoptINT11–18446744073709550000
repeat_behavioroptCOMBOinherit4 options: inherit, increment_per_repeat, random_per_repeat, none
repeat_stepoptINT11–18446744073709550000
style_seed_behavioroptCOMBOnormal2 options: normal, same_seed_style_cycle

Outputs (7)

NameTypeDescription
samplesLATENT
model_nameSTRING
seedINT
stepsINT
cfgFLOAT
sampler_nameSTRING
schedulerSTRING