Geowizard Model Loader
The 4.7GB download lives in this node, and that's the whole point
- vae
- geowizard_model
The Geowizard Model Loader looks like the boring half of kijai's Geowizard pack, and it sort of is. But it's also where the whole experience starts: the first time you queue a workflow, this node quietly downloads a ~4.7GB diffusion model into ComfyUI/models/diffusers/geowizard and builds the full inference pipeline around your VAE. Everything the sampler does later depends on what this node hands it, so getting this one right matters more than its two inputs suggest.
The pack wraps GeoWizard, a research model from the original fuxiao0719 repo. Unlike the Depth Anything / MiDaS line of discriminative estimators, GeoWizard is generative - it's a Stable Diffusion-style UNet that denoises its way to a depth map, like Marigold does. Its party trick is handling transparent and reflective objects (glass, water, mirrors), the classic failure mode for depth estimators, and it outputs depth and surface normals in one pass instead of making you derive one from the other.
The two inputs that matter
- vae - any SD 1.5 or 2.1 VAE works, per the README. The pack doesn't ship one; you wire in whatever you already have loaded, and the node converts it into the diffusers
AutoencoderKLthe pipeline expects. Thevae-ft-mse-840000checkpoint in the example workflow is the safe default. - dtype -
fp16(default) orfp32. fp16 is the right call for anything but the most VRAM-poor setups; the sampler runs the denoise loop through torch autocast anyway. If your model ever looks like it's hallucinating garbage, you can flip to fp32 to rule out precision, at roughly double the memory.
The output is a single geowizard_model of the custom GEOWIZMODEL type. It doesn't display anywhere, it doesn't render - it just plugs into the Geowizard Sampler's top input. That's the only thing it connects to.
How it actually works
On first queue, the loader calls snapshot_download on the lemonaddie/geowizard HuggingFace repo (skipping the VAE, checkpoint and safety-checker files) and pulls the UNet, scheduler, and CLIP image encoder into models/diffusers/geowizard. It then assembles a DepthNormalEstimationPipeline and caches it, so re-running the same config is cheap - the node only rebuilds when you change the VAE or dtype, and it clears the cache before doing so. If xformers is available it enables memory-efficient attention, which is a nice freebie on older cards.
This is also the honest reason to use the pack at all: the full diffusion pipeline is heavy, and this node is what parks it in VRAM.
Installing it
ComfyUI Manager (search "Geowizard") handles both the install and the pile of Python deps in requirements.txt - diffusers, transformers, accelerate, omegaconf, opencv-python, scikit-image, matplotlib. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/kijai/ComfyUI-Geowizard
# restart ComfyUI
Where people get burned
- Disk space. 4.7GB doesn't download until the first queue, and it won't stream lazily - make sure you have room before that first run, or the load fails halfway.
- First run is slow, and looks frozen. The download plus the initial build can take a couple of minutes with no progress bar on some setups. Give it one queue and let it finish.
- VRAM is real. This is not the lightweight preprocessor you're used to from Depth Anything; on a 8GB card keep fp16 and lean on the sampler's lower ensemble/steps instead of switching this node to fp32.
GeoWizard won't knock Depth Anything V2 off its spot as the default depth preprocessor - the community's 8-model comparison mostly rated it "impressive, not the winner" - but for transparent/reflective scenes and for getting normals for free, this loader is the door in.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| vae | VAE | — | |
| dtype | COMBO | fp16 | 2 options: fp32, fp16 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| geowizard_model | GEOWIZMODEL | — |