Files
UmaViewer/Assets/Scripts
ritenseki 30ef1b1929 cleanup: one shared property block, explicit resolve report, drop dead diagnostics
No behavioural change intended; this is the tidy-up pass after five rounds of track fixes.

Director.cs
  * Six MaterialPropertyBlock fields (chara / bgColor1 / bgColor2 / spotlight / uvScroll /
    blinkLight) become one shared `PropBlock`. Every use is the same self-contained
    Get -> modify -> Set, and the block carries no state across frames or handlers, so the
    separate fields were pure duplication. The reason the Get is mandatory (SetPropertyBlock
    replaces rather than merges — this is what made GlobalLight dead for 59/59 songs) now
    lives on the one shared field instead of being restated per handler.
  * ResolveStageTargets wrote four instance fields as de facto out-parameters that
    LogBgColor1Resolution read back. Replaced with a returned StageResolveReport, which also
    lets the logger become static. `props` is now a required parameter — the `= null` default
    silently meant "BgColor1's channel", which is the wrong default for a BgColor2 caller.
  * Three duplicated blocks removed: shader-description building (BgColor1 and BlinkLight
    logs -> DescribeRendererShaders), vocal entry resolution (InitializeMusic and
    GetLiveAllVoiceEntry -> ResolveVocalEntry), and the FOV frame marking copied verbatim
    into SaveCameraVMD and SaveMultiCameraVMD (-> MarkFovFrames, which additionally no longer
    throws on an empty frame list).
  * OnEffectUpdate's three identical "record the frame, bail out" branches collapse into
    LoadEffectPrefab returning null.
  * HdrBloom's handler and the Bloom volume override are gone. hdrBloomKeys is empty in all
    59 songs, and the field-to-URP mapping was never confirmed — so this was code that could
    only ever be wrong, plus an effect nobody wrote to. The data layer and the dispatch stay,
    so re-adding it is one subscription.
  * The BlinkLight TODO no longer lists palette slot mapping: that was reverse-engineered
    (slot = the lightNNN_/alphaNNN_ prefix of the renderer or its nearest ancestor).

StageEnvMapDiag.cs deleted (with StageEnvRateToggle and its F9 hotkey). It existed to test one
hypothesis — that the floor blow-out came from DefaultEnvMapNoAmbient's env reflection — and
the verdict experiment ran: _EnvRate = 0 changed nothing. The real cause turned out to be
mirror_a and is fixed. Keeping it meant a full-hierarchy sweep on every stage load and a
hotkey, for a question already answered.

StageController no longer calls it; StageMissingScriptCensus's doc comment stops restating the
signature list that CLAUDE.md already carries.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UzXXkLzVC8pNA3JjyUGMbq
2026-08-07 13:10:13 +08:00
..
2024-11-06 23:58:45 +01:00
2025-09-01 22:41:41 +02:00
2023-07-03 18:51:54 +08:00
2023-07-03 18:51:54 +08:00
2023-06-30 14:08:40 +08:00
2023-07-12 17:22:00 +08:00
2023-12-14 01:45:07 +01:00
2025-08-02 09:19:38 +02:00
…
…
2025-10-03 23:21:48 +02:00
2023-07-13 01:41:59 +08:00
2023-08-20 13:16:12 +02:00
2023-07-05 02:25:27 +08:00
2024-11-06 23:58:45 +01:00