Dreamy Look Advanced
The dreamy pass that decides what your image is before it finishes it
- image
- texture_1
- texture_2
- texture_3
- image
- info
ComfyUI-RealisticBokeh's plain Dreamy Look node applies the same dreamy treatment to everything you feed it. Dreamy Look Advanced is the version that checks what it's looking at first: it classifies your image as a photograph, an illustration, a digital illustration or a vintage illustration, then applies the treatment that fits. Glow, diffusion and grain for a photo; paper texture and displacement for a drawing; nothing but a soft touch for clean digital art. Same family, much smarter defaults.
How the detection works
The detector widget picks the classifier, and this is where the pack's one real decision hides:
- siglip (default) - zero-shot SigLIP so400m, ~1.6 GB. It's often already cached by captioning workflows, and the README notes it falls back to CLIP, then to statistics, if it can't load.
- clip - CLIP ViT-B/32, ~600 MB one-time download, the lightest model option.
- statistics - pure torch heuristics (edge hardness, saturation, texture, tonal fade, palette size). Zero downloads, and honestly the least reliable on stylized AI art.
The model weights download on first use, not at install. If you have no interest in a 1.6 GB surprise download mid-workflow, set detector to statistics, or skip detection entirely by forcing a mode. For a photograph or a clean render you don't even need the classifier - the whole point of forcing mode is that detection is a convenience, not a requirement.
The detected class then selects which effects fire: photos get glow + diffusion + grain, illustrations get the texture stack (plus displacement), digital illustrations get glow + diffusion without grain or paper, vintage illustrations get grain plus the full paper treatment.
The controls that matter
- mode -
autoruns detection; or forcephotograph/illustration/digital_illustration/vintage_illustration; or pickmanualto drive every toggle yourself (manual is what unlockshazeandhalation, which the auto modes don't use). - painterly_threshold - only visible in auto mode. Per the tooltip, when the image reads as digital illustration, a second pass inspects native-resolution crops for visible brushwork and upgrades to
illustrationif the vote beats this number. 0.65 is calibrated for siglip; use ~0.55 for clip. The tooltip's own advice is the honest summary: raise it if painterly-ish digital art keeps getting paper texture it shouldn't. - overall_strength - the master blend back toward the original.
It takes up to three optional texture_1..3 image inputs, each with a blend mode (multiply, overlay, soft_light, screen, hard_light, linear_light, normal), opacity, scale (1 stretches to fit, higher tiles) and displace. The displace bit is the clever one: the texture's luma physically warps the image as a displacement map, so paper fibers push the "ink" around instead of just sitting on top. A slot at opacity 0 with displace > 0 acts as a pure displacement map. This is genuinely fiddly to get right - treat it as the advanced feature it is.
Two outputs, not one
It returns image plus an info string that reports the detected mode, the per-class scores and the measured statistics. Wire info into a text display once to see why it made the call. When a borderline image lands in the wrong class, that printed vote tells you exactly where to push painterly_threshold.
Real-world gotchas
Detection runs on the first frame of a batch. And the README is refreshingly honest about a known blind spot: soft-painterly images with no visible stroke texture (it names the zijzo style) read as digital under every tested detector. If you're working in that genre, just force mode and stop arguing with the classifier.
Honestly? If everything you feed it is photographs, the simpler Dreamy Look node gives you the same glow-diffusion-grain pass with fewer knobs. Reach for Advanced when your workflow mixes media - you're running a character sheet that's half render, half hand-drawn, or you want paper texture on sketches without it ever touching your photos.
Install is the same as the rest of the pack - ComfyUI Manager search for ComfyUI-RealisticBokeh, or:
cd ComfyUI/custom_nodes
git clone https://github.com/marcsole96/ComfyUI-RealisticBokeh.git
Restart ComfyUI and it shows up under image/postprocessing. No runtime dependencies beyond what ComfyUI ships; the only downloads are the siglip/clip detector weights on first use.
Inputs (41)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| mode | COMBO | auto | 6 options: auto, photograph, illustration, digital_illustration, vintage_illustration, manual |
| detector | COMBO | siglip | 3 options: siglip, clip, statistics |
| painterly_threshold | FLOAT | 0.650–1 | auto mode: brushwork vote above this upgrades digital_illustration to illustration; 0.65 calibrated for siglip on the user dataset (use ~0.55 for clip); raise it if painterly-ish digital art gets textures it shouldn't |
| overall_strength | FLOAT | 1.000–1 | — |
| texture_1opt | IMAGE | — | |
| texture_1_blendopt | COMBO | multiply | 7 options: multiply, overlay, soft_light, screen, hard_light, linear_light, +1 |
| texture_1_opacityopt | FLOAT | 0.350–1 | — |
| texture_1_scaleopt | FLOAT | 1.000.25–8 | — |
| texture_1_displaceopt | FLOAT | 4.00–64 | — |
| texture_2opt | IMAGE | — | |
| texture_2_blendopt | COMBO | overlay | 7 options: multiply, overlay, soft_light, screen, hard_light, linear_light, +1 |
| texture_2_opacityopt | FLOAT | 0.350–1 | — |
| texture_2_scaleopt | FLOAT | 1.000.25–8 | — |
| texture_2_displaceopt | FLOAT | 4.00–64 | — |
| texture_3opt | IMAGE | — | |
| texture_3_blendopt | COMBO | soft_light | 7 options: multiply, overlay, soft_light, screen, hard_light, linear_light, +1 |
| texture_3_opacityopt | FLOAT | 0.350–1 | — |
| texture_3_scaleopt | FLOAT | 1.000.25–8 | — |
| texture_3_displaceopt | FLOAT | 4.00–64 | — |
| glowopt | BOOLEAN | true | — |
| diffusionopt | BOOLEAN | true | — |
| hazeopt | BOOLEAN | false | — |
| halationopt | BOOLEAN | false | — |
| grainopt | BOOLEAN | true | — |
| texturesopt | BOOLEAN | true | — |
| glow_strengthopt | FLOAT | 0.500–1 | — |
| glow_radiusopt | FLOAT | 0.0150.005–0.5 | — |
| glow_thresholdopt | FLOAT | 0.900–1 | — |
| diffusion_strengthopt | FLOAT | 0.050–1 | — |
| haze_amountopt | FLOAT | 0.100–1 | — |
| halation_strengthopt | FLOAT | 1.000–1 | — |
| grain_strengthopt | FLOAT | 0.350–1 | — |
| grain_sizeopt | FLOAT | 0.5000.5–8 | — |
| grain_shadowsopt | FLOAT | 0.800–1 | — |
| grain_highsopt | FLOAT | 0.100–1 | — |
| grain_coloropt | FLOAT | 0.500–1 | — |
| warmthopt | FLOAT | 0.00-1–1 | — |
| tintopt | FLOAT | 0.00-1–1 | — |
| saturationopt | FLOAT | 1.000–2 | — |
| seedopt | INT | 19960–4294967295 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| info | STRING | — |