docs: file #263 - Drudge Scrying Orb residual particle occlusion (deferred)

General composite-translucency fix (16ed6e7c) user-verified on other items; the orb keeps traces. Remaining hypotheses (ClipMap-opaque shell / unattached-emitter scope split) and the discriminating probe set are recorded in the issue.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-29 21:44:12 +02:00
parent 16ed6e7c5c
commit bc05f0f61f

View file

@ -97,6 +97,55 @@ Copy this block when adding a new issue:
---
## #263 — Drudge Scrying Orb still occludes its particles after the composite-translucency fix
**Status:** OPEN (deferred by user 2026-07-29)
**Severity:** LOW (single known item; "very subtle" per user)
**Component:** rendering / world translucency / particles
**Symptom (user report):** wielded items subtly hid particle effects, "missing
some translucent texture." The general fix landed as `16ed6e7c` (authored
`Surface.Translucency` was baked into texture alpha only on the shared-atlas
path; the per-instance composite paths — palette/texture overrides, i.e. most
wielded loot — never applied it, so translucent parts painted alpha=1 and
erased particles composited behind them). User confirms other items now render
correctly; the **Drudge Scrying Orb** still shows traces of the occlusion.
**Root cause / status:** the override-driven translucency loss is fixed and
verified on other items. The orb residual matches the remaining ranked
hypotheses from the 2026-07-29 investigation (transcript-level, not yet a
research doc):
- **H3 — ClipMap-only shell:** `IsOpaque` counts `Base1ClipMap` as opaque
(`WbDrawDispatcher.cs` `IsOpaque`, pipeline writes depth), so a
ClipMap-authored orb shell would depth-reject particles behind/inside it.
Only a divergence if retail composites that same surface blended.
- **H2 — scope-split ordering:** interior roots draw unattached scene
particles (`AttachedObjectId == 0`) BEFORE `FlushLandscapeAlpha`
(`RetailPViewRenderer.cs` ~:774-780), so an unattached emitter composites
in a strictly earlier scope than every dynamic's mesh regardless of
distance.
- Orb-specific authoring (interior particle system inside a glass sphere) is
the classic shape for both.
**Discriminating probes (no new code needed):** `ACDREAM_WB_DIAG=1` (a
translucent-looking orb part appearing in the opaque draw count = H3),
`ACDREAM_PROBE_OUTSTAGE=1` (owner-id in the late-landscape particle set vs
dynamics set = H2), `ACDREAM_DUMP_ENTITY=<orb setup id>`,
`ACDREAM_HIDE_PART=<index>` to confirm the occluding part by construction.
**Files:** `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.cs` (IsOpaque /
ClassifyBatches / DeferTransparentGroups), `src/AcDream.App/Rendering/TextureCache.cs`
(`DecodeFromDats` bake), `src/AcDream.Core/Textures/SurfaceDecoder.cs`
(`ApplyAuthoredTranslucency`), `src/AcDream.App/Rendering/ParticleRenderer.cs`
(scope deferral). Related: #225 (RetailAlphaQueue, final visual gate pending),
register rows AP-34/AP-21/AD-19.
**Acceptance:** the Drudge Scrying Orb's particle effect reads through its
shell like retail, wielded and on the ground, indoors and out, without
regressing the #225 lifestone/candle compositing.
---
## #262 — Run-on-the-spot at first login: no displacement until a recall reset
**Status:** OPEN