Nodes/ComfyUI-LatentDetailer/SpectralVAEDetailer (alias)
ComfyUI Node

SpectralVAEDetailer (alias)

SpectralVAEDetailer is LatentDetailer

By SparknightLLC·Created 8 months ago·Updated 4 months ago· 36
SpectralVAEDetailer (alias)
  • model
  • latent
  • positive
  • negative
  • LATENT
seed-1
sigmas0.40
luma_clarity0.00
boost_confidence0.00
bloom_strength0.00
bloom_threshold0.65
bloom_radius8
color_drift0.25
color_drift_radius16
cfg7.00
cfg_hf_boost5.00
cfg_lf_boost0.00
cfg_radius5
cfg_radius_flat0
cfg_radius_adaptivetrue
cfg_adapt_feather2
cfg_adapt_gamma2.00
detail_strength0.65
hf_radius4
mid_strength0.05
detail_chroma0.10
chromatic_aberration0.00
protect_lows0.90
soft_clip_detailtrue
soft_clip_detail_k2.20
soft_clip_cfgtrue
soft_clip_cfg_k2.00
noise_scale0.10
grain_luma0.00
noise_tail-1.00
noise_radius1
noise_flat_suppress1.00
hires_scale1.0
hires_strength0.75
hires_use_importance_masktrue
hires_mask_strength1.00
ignore_cond_timestep_rangetrue
debugfalse

Short version: SpectralVAEDetailer and LatentDetailer are the same node, and you'll see both in your node menu. If you came here from a saved workflow, nothing is wrong with your graph. Pick whichever name you like - the behavior is identical.

Here's why the confusion exists. This pack started life in December 2025 as ComfyUI-SpectralVAEDetailer, and the node's original name was SpectralVAEDetailer. In v0.3.0 (late December 2025) the author renamed the whole project to ComfyUI-LatentDetailer and gave the node the clearer name LatentDetailer - but kept the old name registered as an alias so nobody's existing workflows broke. In the actual source, SpectralVAEDetailer is the base class that contains all the logic, and LatentDetailer is a one-line subclass that inherits it. ComfyUI's node mapping points both names at the same implementation, with the old one displayed as "SpectralVAEDetailer (alias)".

What it does

A latent-space detail pass that slots between your KSampler and the VAE Decode. It runs your UNet one or more times at a chosen point in the denoise schedule (the sigmas input, default 0.40), computes the denoised estimate, extracts its high-frequency structure, and reinjects it into the latent - plus optional micrograin, bloom, color drift, and chromatic aberration. All in latent space, never decoded to pixels, so it's fast. It's aimed at SDXL photoreal work and the "everything looks too plastic" problem, though the author says it's model-agnostic if you re-tune the starting parameters.

The inputs and outputs are exactly the ones documented for LatentDetailer: model, latent, positive, negative, sigmas, detail_strength, hires_scale, noise_scale, bloom_strength, and about thirty more optional knobs; one LATENT output that feeds your VAE Decode. See the LatentDetailer writeup for the full mechanism, the inputs that matter, and the troubleshooting section - all of it applies here verbatim.

Install

Since both names ship in the same pack, installing either one gives you both. ComfyUI Manager, search "LatentDetailer", or:

cd ComfyUI/custom_nodes
git clone https://github.com/SparknightLLC/ComfyUI-SpectralVAEDetailer

Then restart ComfyUI. No dependencies, no model downloads, no requirements.txt - the only thing it needs is the same checkpoint and conditioning you're already feeding your sampler.

The one thing to watch

Old tutorials and Reddit posts from the original launch will say "SpectralVAEDetailer" and point at the old repo URL. Both still work: the clone command above is the old repo name and it's still the URL ComfyUI tracks, while the README and Registry entry now live under "LatentDetailer." If you're ever confused about whether a saved workflow is using the right node, the answer is yes - they're the same code.

Categorylatent/postprocess

Inputs (42)

NameTypeDefaultDescription
seedINT-1-1–2147483647Random seed for grain/color drift. Use -1 for random each run.
sigmasSTRING0.40Comma-delimited list of normalized sigma positions (0..1). Each entry runs one UNet evaluation and the denoised estimates are averaged. Example: 0.25,0.55. 0=start (noisiest), 1=end (cleanest).
modelMODEL
latentLATENT
positiveCONDITIONING
negativeCONDITIONING
luma_clarityFLOAT0.000–1Mid-band local contrast on latent channel 0. 1.0 is intentionally strong.
boost_confidenceFLOAT0.000–1Boosts UNet-proposed micro detail ONLY where it appears confident; suppresses flats and strong edges.
bloom_strengthFLOAT0.000–1Approximate photographic bloom/halation by spreading bright highlights (luma only). Best paired with a little noise_scale (e.g. 0.02–0.08) for a more convincing photographic rolloff.
bloom_thresholdFLOAT0.650–1Only highlights above this luma threshold contribute to bloom.
bloom_radiusINT80–64Blur radius for bloom spread. Larger is softer but slower.
color_driftFLOAT0.250–1Noise-driven granular color drift (micro color distribution). Higher = stronger.
color_drift_radiusINT160–64Granular drift scale. 1..3 is typical; 16 is very broad/slow drift.
cfgFLOAT7.000–10Base CFG. This node applies additional HF/LF shaping when cfg > 1.
cfg_hf_boostFLOAT5.000–5How strongly to inject high-frequency CFG detail (from den_pos - den_neg).
cfg_lf_boostFLOAT0.000–2How strongly to inject low-frequency CFG contrast (usually keep low).
cfg_radiusINT50–64CFG split radius. In adaptive mode, this is the DETAIL radius.
cfg_radius_flatINT00–64CFG split radius used in flat/low-detail regions when adaptive mode is ON.
cfg_radius_adaptiveBOOLEANtrueIf ON, blends between cfg_radius_flat (flat) and cfg_radius (detail).
cfg_adapt_featherINT20–32Blur radius applied to the adaptive mask. Higher reduces halos but can soften detail reach.
cfg_adapt_gammaFLOAT2.000.5–3Mask curve. >1 shrinks 'detailed' regions (less spill/halo). <1 expands them.
detail_strengthFLOAT0.650–2Strength of injected high-frequency detail from denoised estimate.
hf_radiusINT40–64Detail split radius for base projection (larger = coarser separation).
mid_strengthFLOAT0.050–0.5Adds some mid/low component of the base projection (contrast/shape).
detail_chromaFLOAT0.100–2Scales how much the detail + CFG injections affect chroma latent channels (1..3). This is NOT chromatic aberration (no spatial shift).
chromatic_aberrationFLOAT0.000–1Lens-like chromatic aberration (spatial misregistration) applied to chroma latent channels (1..3) after all other adjustments. Very subtle effects are usually best (0.02–0.10).
protect_lowsFLOAT0.900–1Prevents HF detail from over-applying in low-frequency regions (reduces harshness).
soft_clip_detailBOOLEANtrueSoft-limits HF detail to reduce halos/zipper edges.
soft_clip_detail_kFLOAT2.200.5–8Detail soft-clip amount. Higher = weaker limiting.
soft_clip_cfgBOOLEANtrueSoft-limits HF CFG injection to reduce harsh edges and background speckle.
soft_clip_cfg_kFLOAT2.000.5–8CFG soft-clip amount. Higher = weaker limiting.
noise_scaleFLOAT0.100–0.5Micrograin intensity in latent space.
grain_lumaFLOAT0.000–1Luma-dependent grain: increases grain in shadows and reduces it in highlights. This primarily modulates the grain injected by noise_scale (and shaped by noise_radius).
noise_tailFLOAT-1.00-1–1Tail-heaviness of the grain noise distribution. 0 = Gaussian. + = heavier tails (more occasional strong specks / grit). - = lighter tails (smoother). RMS-normalized so noise_scale stays comparable.
noise_radiusINT10–16Grain correlation radius. 0=white, 1..3 often looks most photographic.
noise_flat_suppressFLOAT1.000–1Suppresses grain in flat regions (local smoothstep mode, always-on).
hires_scaleFLOAT1.01–4If >1, runs ONE UNet pass at upscaled latent resolution, then downsamples denoised estimates back to 1x before post-processing.
hires_strengthFLOAT0.750–1How much of the hires-derived correction to apply. 0=off, 1=full.
hires_use_importance_maskBOOLEANtrueIf ON, applies hires correction mostly where small/foreground-ish features are detected (cheap heuristic).
hires_mask_strengthFLOAT1.000–10 = uniform hires blend, 1 = fully importance-masked blend.
ignore_cond_timestep_rangeBOOLEANtrueIf ON, strips timestep limits from conditioning ranges (more consistent behavior).
debugBOOLEANfalsePrints diagnostics to console.

Outputs (1)

NameTypeDescription
LATENTLATENT