From 449e9c35401a9650855e0dfefc70341de54907d9 Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 27 Apr 2026 13:18:02 +0200 Subject: [PATCH] =?UTF-8?q?docs(issues):=20close=20#27=20(cloud=20parity)?= =?UTF-8?q?=20=E2=80=94=20DONE-via-Fix-2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cloud rendering parity with retail confirmed visually under Phase 0 of the #27 fix plan: launched acdream with no DG override (LCG-picked matches retail's pick), compared cloud coverage / color / edges / movement at the same in-game time. User verdict: "Cloud and colors look correct." The original #27 observation from earlier in this session was a side-effect of the broken `effEmissive=1.0` default that saturated every sky mesh's vTint to white. That bug, plus the orthogonal `surface.Translucency` plumbing gap, were both repaired in commit 4678b3e: - Fix 1 (Translucency): cloud surface 0x08000023 has Translucency=0.25, now plumbed end-to-end → clouds at 75% opacity instead of 100%. - Fix 2 (Luminosity): cloud surfaces have Luminosity=0.0, so post-fix they run through `vTint = ambient + sun·N·L` instead of saturating to white — clouds pick up the keyframe time-of-day tint. User also flagged that acdream's clock is "a few minutes ahead" of retail (sun higher on the horizon at the same wall-clock moment). That is the existing #3 (`Client clock drifts from retail after ~10 minutes — periodic TimeSync missing`), reproducing exactly as documented. Out of scope for the sky-fixes branch. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/ISSUES.md | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index bc39ced..b7eee93 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -272,29 +272,6 @@ missing is the plugin-API surface. --- -## #27 — Cloud meshes appear missing or faint compared to retail - -**Status:** OPEN -**Severity:** LOW (aesthetic feature-parity — doesn't break gameplay) -**Filed:** 2026-04-26 -**Component:** sky / clouds - -**Description:** After fixing Bug B (#26 — stars-as-square), the user observed during visual verification that cloud coverage in the sky doesn't match retail. Cloud meshes are authored in the dat (e.g. `0x010015B6`, `0x01004C35`-`0x01004C38`, `0x01004C36` etc) and `tools/StarsProbe` confirms they're loaded into the SkyObject lists with non-zero TexVelocity (so they get GL_REPEAT correctly under the post-#26 code path). They're not strictly missing — they're rendered — but their visual presence falls short of retail. - -**Root cause / status:** Unknown. Hypotheses: (a) cloud surfaces' alpha/blend mode is too subtle (cloud surface flags or shader path under-emphasise the texture); (b) cloud meshes positioned/scaled wrong relative to the dome so they're inside the dome and occluded; (c) DayGroup keyframe interpolation suppresses cloud transparency at certain times of day; (d) some cloud SkyObjects we should be rendering are filtered out by a Properties bit we mis-handle (Props=0x02 might mean something more than "cloud — render it"); (e) retail uses an additive cloud blend that our Translucency classifier doesn't apply. - -**Files:** -- `src/AcDream.App/Rendering/Sky/SkyRenderer.cs` — sky pass; check per-cloud blend / luminosity / transparency. -- `src/AcDream.Core/World/SkyDescLoader.cs` — Properties bit decoding. -- `src/AcDream.App/Rendering/Shaders/sky.frag` — cloud transparency math. -- `tools/StarsProbe/` — already dumps cloud GfxObj UVs + bounds; extend to dump per-DayGroup cloud surface flags. - -**Research:** None yet. `tools/StarsProbe` output already enumerates which DayGroups reference which cloud meshes — start there. - -**Acceptance:** Side-by-side launch of acdream and a retail client at the same `ACDREAM_DAY_GROUP` shows visually-comparable cloud coverage in the sky. - ---- - ## #28 — Aurora ("northern lights") effect not rendered **Status:** OPEN @@ -318,6 +295,14 @@ missing is the plugin-API surface. # Recently closed +## #27 — [DONE 2026-04-26] Cloud meshes appeared missing or faint vs retail + +**Closed:** 2026-04-26 +**Commit:** `4678b3e fix(sky): apply per-Surface Translucency + Luminosity for retail-faithful weather` +**Resolution:** Resolved as a side-effect of the Bug A fix. The original observation came from a session where every sky mesh got `effEmissive = 1.0` (saturated `vTint` to white), which made stars/clouds look full-bright instead of time-of-day-tinted. Fix 2 corrected the emissive default to `sub.SurfLuminosity` so cloud surfaces (Lum=0.0) now run through the ambient+diffuse vertex-lit path and pick up keyframe tint. Fix 1 separately plumbed `surface.Translucency` to the shader, picking up the 0.25 translucency on cloud surface `0x08000023` (75% opacity). Visual verification under Phase 0 of the followup plan: clouds and colors now match retail at LCG-picked DayGroups across the day cycle. + +--- + ## #1 — [DONE 2026-04-26] Rain falls only to horizon, not to the player's feet **Closed:** 2026-04-26