Ard Empty Latent Image
An empty latent node with an extra dial you should almost never touch
- LATENT
Every text-to-image run in ComfyUI starts in the same place: an empty latent tensor that the sampler fills with your image. The built-in "Empty Latent Image" node makes one, and Ard Empty Latent Image is that node with one extra parameter, divx, bolted on. Everything else is identical - width, height, batch_size - and the single output is the LATENT you feed into a KSampler.
Here's the mechanism, and it's worth understanding because it explains the whole pack's obsession with this "divx" thing. The latent isn't full-size pixels; the VAE compresses images 8× per side, so a 1024×1024 output is a 128×128 latent (4 channels deep). This node builds that tensor as torch.zeros([batch, 4, height // divx, width // divx]). With divx = 8 (the default), you get the standard, correct latent. Set divx to 16 and you'd build a latent half the size of what the model expects - and the sampler would happily run on it, producing something either shrunken or nonsense, because the model's VAE is trained for the 8× compression. So: leave divx at 8. The dial exists so this pack's "make everything divisible by a number" philosophy extends to latent creation, but for the standard case it is a footgun with no upside.
What you actually set:
- width / height - the output image size in pixels (16 to 8192, step 8). Note that unlike the core node's multiples, this one lets you enter any 8-stepped value and the divx logic handles the rest.
- batch_size - how many images the latent holds at once. More than 1 means the sampler generates several images in a single run, which is memory-hungry; 1 is the sane default.
Gotchas: this creates empty (all-zero) latents. For img2img you don't want an empty latent - you want the VAE-encoded version of your input image (via VAE Encode). An empty latent is only correct for pure text-to-image or for the pack's Control Box pattern where the box itself generates the latent for you. If you wire an empty latent into a low-denoise img2img pass expecting it to refine a picture, you'll get noise.
Honest verdict: compared to the built-in Empty Latent Image this is a strict tie with a risk attached. The divx parameter is genuinely useful only if you're following the pack's "dimensions must be divisible by N" workflow and want the latent to respect the same rule - otherwise use the core node and save yourself the temptation. There's nothing wrong with it, it's just not an upgrade.
Install is the standard pack route - ComfyUI Manager → search ComfyUI-Ardenius, or:
cd ComfyUI/custom_nodes
git clone https://github.com/ArdeniusAI/ComfyUI-Ardenius
then restart ComfyUI. Pack-wide notes: civitai and moviepy install with the pack (nothing to do with this node), and a stray import error at startup is the Save Image node wanting comfyui_controlnet_aux - the rest of the pack still loads.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 102416–8192 | The width of the latent images in pixels. |
| height | INT | 102416–8192 | The height of the latent images in pixels. |
| batch_size | INT | 11–4096 | The number of latent images in the batch. |
| divx | INT | 88–4096 | image dimensions divx. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | The empty latent image batch. |