Our port vs the real Godot — solving the top-down glare

2026-06-28 · the actual Bonkahe SunshineClouds2 ExampleScene rendered on the real GPU (Godot 4.6, Vulkan) vs our three.js port, from the same world camera (pos 8262,30000,−10000, pitch −37.6°), top-down. This is the "match the right target" check before we change anything.

The CD's read: "Godot's clouds from top-down don't have that glaring hurtful white — surely they're doing something to solve this shadowing problem."  Right instinct. We rendered the real engine to find out what — and one popular guess died on the way.

1. The guess that died: it is NOT fog

Godot's scene has aggressive depth-fog (end=40000). Natural guess: that's what hides the far glare. So we rendered Godot with fog and with fog disabled (--nofog ablation, real engine). Drag — they're identical.

godot no fog godot full
◀ Godot FULL (fog on)
Godot --nofog ▶

Measured: full blown 5.5% · darks(p5) 110 · range 141 vs nofog 5.4% · 110 · 141 — fog changes nothing at this vantage. Fog hypothesis refuted. (Proving our own guess wrong is the point — the CD asked for exactly this break-it process.)

2. What Godot actually does: deep darks (not less brightness)

Drag between Godot and our port, same camera. Godot's lit tops are if anything brighter than ours (they even clip) — but it never reads as "glaring" because every crevice goes deep blue-grey. Our port is milky: same tops, but the shadows stay pale.

our port godot
◀ GODOT (deep darks)
OUR PORT (milky) ▶
full-frame value structuredarks (p5)value rangelocal contrastblown
Godot (the target)1101416.35.5%
our port (current)1361044.20.0%

The whole difference is value depth: Godot's shadows reach 26 levels deeper and it holds ~35% more range. Same scene, same FILMIC tonemap, same sun — Godot just isn't milky. The "glaring white" was never the brightness; it's the missing darks.

3. The root: our ambient was lifting the shadows

A surgical test pinned the cause. Deeper self-shadow alone (sk16) does NOT darken the crevices (darks p5 136→135) — because the ambient light sets a floor the shadows can't sink below. Lowering the ambient (amb×0.6) is what deepens them (p5 136→107), straight toward Godot.
port settingdarks (p5)rangelocal contrast
current1361044.2
+ sk16 only1351035.0 (darks unchanged!)
+ ambient ×0.61071315.1
+ sk16 & ambient ×0.61061306.0 ≈ Godot

4. The fix — drag to see it land on Godot

Our port with ambient ×0.6 + sk16 vs the current milky look. Same bright tops, but the crevices now carry Godot-deep darks → real dimensional form.

current fixed
◀ FIX (deep darks)
current (milky) ▶
Godot — the reference (p5 110 · range 141)
Our port, fixed — amb×0.6 + sk16 (p5 106 · range 130)

Verdict

Your instinct was right — Godot solves it with shadowing, not fog or less light. The precise root: our ambient floor was lifting the crevice darks into milk. Lowering ambient (+ a touch of self-shadow) reaches Godot's value depth — bright tops untouched, 0% clipping. This is a global value-structure fix; it deepens form everywhere there's clumping.

Next: confirm this same ambient fix helps your original red merged-mass camera (it should deepen what little relief is there) + the genuinely smooth masses still want the clumping work + the grain on lit faces wants a motion check. Then two neutral teams → your eye, on a hosted build.

Method: real Godot via study-godot-sunshine/_cap.gd (+ --nofog ablation) · port matched via qa/tools/_godot-match-cap.mjs · cd-twin/tools/features.py (value structure) · this page. The fog hypothesis was rendered and refuted; the CD's eye is the verdict — this is a pre-screen.