Eric Krea2 Decode VAE Loader
Swap Krea 2's 'plastic skin' VAE for natural grain — without upscaling
- decode_vae
Krea 2's own VAE is the Qwen-Image one, and it's the source of the model's signature "plastic" skin and airbrushed texture - Krea's CEO said on the release livestream that for photorealism he'd use the Flux VAE, which is as close to an official admission as you'll get. But there's a cheaper fix than switching VAEs: the Wan 2.1 VAE shares the identical latent space (same latents_mean/std, same 16-channel f8 layout), so it can decode Krea 2 latents directly, and its reconstruction grain reads as more natural. This node is the loader that makes that swap one connection.
Eric Krea2 Decode VAE Loader loads a plain 1× decode VAE - no upscaling - and hands it out as a KREA2_DECODE_VAE. The community pattern is exactly this: keep generating with Krea's VAE, decode with the Wan one, and trade the plastic look for film-like grain. It's the texture A/B that costs nothing to try.
Inputs are sparse and self-explanatory. vae_source accepts an HF repo id (default Wan-AI/Wan2.1-T2V-1.3B-Diffusers, which uses its vae subfolder), a local diffusers folder, or a bare .safetensors like a downloaded wan_2.1_vae.safetensors. dtype defaults to float32 - the tooltip is honest that float32 is safest for a clean decode, with bf16/fp16 as lighter options. vae_name lets you instead pick any Wan-2.1-family VAE from ComfyUI's models/vae folders (it takes precedence over vae_source when set) - the warning to heed is that an SD/SDXL/FLUX VAE will fail to load, because this loads as AutoencoderKLWan, and only Wan/Qwen-Image VAEs live in that latent space. decode_vae_preset is the ★ Save Preset recipe dropdown, same pattern as the rest of the pack. And vae_tiling/vae_tile_px give this VAE its own tiled-decode policy - auto tiles above 1024 px, off is the tile-seam diagnostic, and the "move the tile size, see if the pattern pitch moves" trick tells you if you're chasing a decode artifact or a generation one.
One output: decode_vae. It plugs into Multi-Stage Ultra's decode_vae input (final decode and stage previews) or into the pack's Eric Krea2 VAE Decode node for a plain 1× decode. Note the precedence subtlety from the README: if upscale_vae_mode is doing a VAE 2× final decode, decode_vae is ignored for the final image but still governs the stage previews - so you can have the upscale VAE for the final and a specific grain VAE for previews, and keep both connected without conflict.
How to install
Part of EricRollei/Krea2_ComfyUI_Advanced: ComfyUI Manager → search "Krea2_ComfyUI_Advanced", or clone into custom_nodes and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/Krea2_ComfyUI_Advanced
The whole pack needs a git-installed diffusers with Krea2Pipeline (--force-reinstall, because the version string never bumped past 0.39.0.dev0) plus transformers>=4.57.0, and your own Krea 2 weights.
Common issues
- "Failed to load as AutoencoderKLWan" - you picked an SD/SDXL/FLUX VAE. Only Wan-2.1-family and Qwen-Image VAEs share Krea 2's latent space.
- Default repo id fails to resolve - the default is a diffusers repo; if you're offline or behind a proxy, pass a local
wan_2.1_vae.safetensorsinstead. - Texture doesn't change - check whether
upscale_vae_modeis doing a VAE 2× final decode; in that mode this VAE only affects previews.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| vae_source | STRING | Wan-AI/Wan2.1-T2V-1.3B-Diffusers | HF repo id (uses its 'vae' subfolder), a local diffusers folder, or a local .safetensors file (e.g. a downloaded wan_2.1_vae.safetensors). |
| dtypeopt | COMBO | float32 | float32 is safest for a clean decode; bf16/fp16 are lighter. |
| vae_nameopt | COMBO | none | Pick a VAE from ComfyUI's models/vae folders (takes precedence over vae_source when not 'none'). Must be a Wan-2.1-family / Qwen-Image VAE - an SD/SDXL/FLUX VAE will fail to load as AutoencoderKLWan. |
| decode_vae_presetopt | COMBO | custom | Load a saved decode-VAE recipe (source / dropdown / dtype) into the panel for this run. 'custom' = use the panel as-is. Use the ★ Save Preset button to add one; the list refreshes on graph reload. |
| vae_tilingopt | COMBO | auto | Tiled-decode policy for THIS VAE, honored by every node that decodes with it. auto: tile only above 128 latent (>1024 px) - previous behavior. force: always tile. off: never tile - for A/B-testing tile-seam pattern noise; a large non-tiled Wan-family decode can leave a bottom-edge band and spike VRAM, so treat off as a diagnostic, not a daily driver. |
| vae_tile_pxopt | INT | 00–2048 | Custom tile size in PIXELS (0 = the VAE default). Needs >=256 to take effect; stride is 75% of tile (25% overlap). Bigger tiles = fewer seams, more VRAM. Seam diagnostic: if the pattern pitch moves when you move this, it IS the tiling. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| decode_vae | KREA2_DECODE_VAE | — |