ComfyUI Node

Thermal Latenator

Be the resolution and seed master of your whole workflow

By Hellrunner2k·Created 2 years ago·Updated about a year ago· 2
Thermal Latenator
  • First_Seed
  • Reseed_Latents
  • Latents
  • Seeds
  • Seed String
  • Width
  • Height
Ratio_Selected1:1 1024x1024 1MP #
Width_Override0
Height_Override0
Batch_Count1
Batch_Size1
Batch_Seeds

The Thermal Latenator is the node that makes "one knob for everything" workflows possible. It's a latent and seed and resolution controller in one: it hands you empty latents at an SDXL-native resolution, a batch of seeds to go with them, a seed string for chaining, and the width and height it chose - all from one node at the top of your graph. The idea is that a single master node feeds your KSampler chain, so changing resolution or seed happens in exactly one place instead of scattered across five nodes.

The inputs that matter

  • Ratio_Selected - a dropdown of SDXL-native resolutions, like "1:1 1024x1024", "16:9 1344x768", "21:9 1536x640". Pick the ratio, get the correct MP size for free.
  • Width_Override / Height_Override - set either above 0 to override the ratio's size. 0 means "use the ratio."
  • Batch_Count - how many seeded latents to produce (each is one "batch").
  • Batch_Size - how many sub-images inside each latent.
  • First_Seed - the starting seed, the thing you randomize when you want variety.
  • Batch_Seeds - a seed override. It handles hyphen ranges (1234-1235) and line breaks, so you can paste a whole seed list.
  • Reseed_Latents (optional) - feed a latent in here and it gets rebatched by Batch_Size, with its resolution derived from the latent rather than the ratio.

How it works

The function literally creates torch.zeros([Batch_Size, 4, height//8, width//8]) latents - it's an EmptyLatentImage with extra opinions. For each batch it picks a seed: yours from Batch_Seeds if you gave one, else First_Seed, else a random one for any overflow. The Seed String output gives you a hyphen-separated string of all the chosen seeds, so you can paste it into the next Latenator's Batch_Seeds and reproduce a multi-stage chain exactly. That's the "thermal" part - the whole point is chaining upscale passes where every stage uses the same seeds, so the final image is comparable to the first pass.

A real gotcha from the changelog: if you put anything in Batch_Seeds, its first entry overrides First_Seed. The node doesn't merge them; the explicit list wins. And if you list fewer seeds than Batch_Count, the rest are filled with random values - so a short list gives you a reproducible start and a chaotic tail.

Outputs and wiring

  • Latents (list) and Seeds (list) - one latent and seed per batch. At Batch_Count 1, life is simple: wire Latents into your KSampler's latent input and Seeds into its seed input. At higher counts you're producing lists, which want list-aware samplers or a list index node in front - ComfyUI won't silently feed a list into a scalar seed input.
  • Seed String - the chaining tool, paste it into the next Latenator.
  • Width / Height - plain integers describing what the Latenator chose. Wire these into anything that needs to know the resolution (a conditioning encoder's width/height, for instance) so you never type 1024 twice.

Installing it

This is one node in Hellrunner's Magical Nodes. Install the pack once via ComfyUI Manager (search "Hellrunner's Magical Nodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/Hellrunner2k/ComfyUI-HellrunnersMagicalNodes.git

Restart after. No extra pip dependencies - it only needs torch, which ComfyUI already has. Note the README's install path says custom-nodes/ with a hyphen; the real folder is custom_nodes.

Troubleshooting

  • Resolution came out wrong? Check whether Width_Override or Height_Override is stuck above 0 - a leftover override silently beats the ratio dropdown.
  • Seed chaining not reproducing results? Make sure every stage's Latenator has the same Batch_Count and Batch_Size; the seed string encodes seeds but not batch layout.
  • Feeding Reseed_Latents changes width/height to the incoming latent's size and ignores the ratio entirely - that's by design for upscale chains, not a bug.
CategoryHellrunner's

Inputs (8)

NameTypeDefaultDescription
Ratio_SelectedCOMBO1:1 1024x1024 1MP #SDXL Native resolution selection
Width_OverrideINT00–16384>0 Overrides Width
Height_OverrideINT00–16384>0 Overrides Height
Batch_CountINT11–1125899906842624Number of seeded batches
Batch_SizeINT11–64Number of batched sub-images
First_SeedINT:seed11–1125899906842624Initial seed
Batch_SeedsSTRINGSeed Override for easy chaining. Can deal with hyphen separation (1234-1235) and line breaks.
Reseed_LatentsoptLATENTInput latents to be rebatched and reseeded with current seed options

Outputs (5)

NameTypeDescription
LatentsLATENTLatents
SeedsINTBatch Seeds
Seed StringSTRINGSeed String for easy chaining
WidthINTLatent Width
HeightINTLatent Height