docs: narrow the blend-state claim to what the live run actually showed
The fix is confirmed working — the black wedges are gone — but the log corrects the scope I wrote yesterday. [StageBlend] reports 1 of 31 materials corrected, not the 26 the offline dump suggested: mtl_env_live10149_blinklight000 on LightBlinkBlend, _DstBlend 0 -> 1, which is exactly the ground wash beams. Both numbers are right about different things. All 26 materials do store One/Zero, but a stored value only matters when the current shader declares the property and reads it as render state. Everywhere else it is another stale saved-properties entry that nothing consults — the same trap this file already warns about, which I then walked into while describing the fix. The self-limiting design held: only shader-declared properties were touched, so the other 30 materials were left alone. Corrected in both places rather than left standing, since an overstated claim in these files is what cost the most time this week. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UzXXkLzVC8pNA3JjyUGMbq
This commit is contained in:
@@ -123,6 +123,12 @@ pf = obj.read_typetree()["m_ParsedForm"] # m_Name, m_PropInfo.m_Props
|
||||
`StageMonitorBlend*`、`MirrorBallProjector`、`BgUnlitStencilAlpha`,全是发光/投影那一批。
|
||||
|
||||
被压成不透明后,加法光柱「颜色为黑 = 什么都不加 = 不可见」变成了**一堵实心黑墙**。
|
||||
|
||||
⚠️ **实际受害面比存档表窄得多,别照着 26 这个数推。** 只有**当前 shader 真的声明了**这两个
|
||||
属性的材质才会被读到;其余材质虽然也存着 `One/Zero`,但那只是过期条目,无人问津。
|
||||
live10149 实测(`[StageBlend]` 日志):31 个材质里**只有 1 个**被修正 ——
|
||||
`mtl_env_live10149_blinklight000` / `LightBlinkBlend`,`_DstBlend` 0 → 1,
|
||||
正是地面 wash 灯那批黑楔子。修完实机确认恢复正常。
|
||||
`StageController.RestoreAuthoredBlendState()` 在舞台初始化时把这两个属性写回 **shader 声明的
|
||||
默认值**(`Shader.GetPropertyDefaultFloatValue`),对本来就该不透明的 shader 是空操作,自限。
|
||||
改了哪些材质会逐条打进 `[StageBlend]` 日志。
|
||||
|
||||
+1
-1
@@ -249,7 +249,7 @@ Unity 的 playAutomatically 播的是默认 clip,为空就什么都不播 —
|
||||
| 现象 | 状态 |
|
||||
|---|---|
|
||||
| 舞台地板长期偏亮发白 | ✅ 2026-08-06 解决。**白的不是文档里记的那三个物件** —— 是与 `plane_000` 同位同尺度、叠在一起的 `mirror_a`(同在 `pfb_env_live10149_main000` 下,局部变换全为单位)。它用 `Cygames/MirrorAndShadow/ReceiveMirror`,`_ReflectionRate` 默认 1.0 而 `_ReflectionTex` 从没赋值,Unity 对未绑定采样器代入白贴图 = 满强度白反射。实现 `Gallop.MirrorReflection` 接上反射 RT 后恢复正常。**教训见 `CLAUDE.md`「现象描述不是 ground truth」**:整轮排查都围着文档里那三个名字转,那个「`_EnvRate` 归零无变化」的实验切的是另一批物件 |
|
||||
| 小灯泡渲染成黑块 / 光柱变实心黑墙 | 🔧 2026-08-07 **找到根因并已修**(待实机确认):Gallop 发光类 shader 的混合状态写作 `Blend [_SrcBlend] [_DstBlend]`,从材质属性读;而 live10149 **26/26 个材质**都被盖上了 URP Lit 的属性表,`_DstBlend` 是 URP Lit 不透明预设的 Zero。全库 16 个声明该属性的 shader 里 **14 个作者默认是 One/One(加法)**,于是所有光柱/闪光/投影都被按不透明画 —— 加法下「颜色为黑=不可见」变成了「实心黑墙」。`StageController.RestoreAuthoredBlendState()` 已把这两个属性恢复成 shader 声明的默认值。**注**:`StageTransmittedLightMask`/`StageMirrorBallShine` 无颜色属性是另一回事,仍未解 |
|
||||
| 小灯泡渲染成黑块 / 光柱变实心黑墙 | 🔧 2026-08-07 **找到根因并已修**(待实机确认):Gallop 发光类 shader 的混合状态写作 `Blend [_SrcBlend] [_DstBlend]`,从材质属性读;而 live10149 **26/26 个材质**都被盖上了 URP Lit 的属性表,`_DstBlend` 是 URP Lit 不透明预设的 Zero。全库 16 个声明该属性的 shader 里 **14 个作者默认是 One/One(加法)**,于是**凡是当前 shader 真读这两个属性的**光柱/闪光/投影都被按不透明画 —— 加法下「颜色为黑=不可见」变成了「实心黑墙」。`StageController.RestoreAuthoredBlendState()` 已把这两个属性恢复成 shader 声明的默认值,**实机确认修复**。⚠ 受害面比存档表窄:live10149 实测 31 个材质里只有 1 个真被读到并修正(`mtl_env_live10149_blinklight000` / `LightBlinkBlend`,`_DstBlend` 0→1),其余材质存的是无人问津的过期条目 —— 别拿 26/26 这个数推广。**注**:`StageTransmittedLightMask`/`StageMirrorBallShine` 无颜色属性是另一回事,仍未解 |
|
||||
| LED 大屏黑屏 | MonitorControl (10) 未实现,见上 |
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user