Files
ark-stronghold-protocol/public/js/render
xcdoge 80abaaf1b1 #549:棋盘材质的自发光对齐官方 _EmissionColor(0.25 → 1),棋盘亮度再 +4%
接上一提交(官方场景的两个增益改回 1)之后,剩下的偏暗还有一处同类问题:棋盘瓦片材质的自发光被手调压暗了。

官方真值(UnityPy + tools/local-extract/aklz4.py 的 LZ4AK 解码器 dump 客户端
arts/maps/map_autochess/res.ab 的 Material):

  MT_autochess          _Color = (1,1,1,1)   _EmissionColor = (1,1,1,1)
                        _MainTex = TX_autochessi_D   _EmissionMap = TX_autochessi_E
                        _MetallicGlossMap = TX_autochessi_M   _BumpMap = TX_autochessi_N
                        _Metallic = 0   _Glossiness = 0
  MT_autochess_common   _EmissionColor = 0.5588(同样带 _EmissionMap)
  MT_autochessi_BG      _Color = 0.71323 + shader Torappu/Unlit/Texture
                        ⇒ 与代码里的 LIGHTING.bg.color = 0.713 完全一致(这条本来是对的)

也就是说官方棋盘是**自发光**的(albedo 加 emission),不是靠环境灯照亮;而 materials.js 里 boardMaterial 的
emissive 默认就是 1(emissive / emissiveMap 直接对应上面两个材质),decalMaterial(_common 图集)也已经是
官方的 0.559 —— 只有 scene.js 的 LIGHTING.emissive = 0.25 把它整体压到四分之一。

改动:LIGHTING.emissive 0.25 → 1,注释写明官方 _EmissionColor 的来源与它为什么必须是 1(与上一提交那两个
增益同一类问题:照截图手调的系数)。

实测(同一 m04 场景、同一相机,只取棋盘区域求平均,官方截图同口径):

  官方截图      亮度 129.0
  最初          亮度  89.7(−30%)
  场景增益改回 1  亮度 103.3(−20%)
  本提交        亮度 107.4(−17%)

已知未尽:还剩约 −17%。官方棋盘瓦片的着色器是自定义的(dump 里 m_Shader 读不到完整定义),无法直接比对公式,
下一步需要把画面按材质逐区域分离(棋盘瓦片 / 场景沙地 / 水)再分别对齐,而不是继续拧全局系数。
2026-10-12 23:52:31 +08:00
..
2026-10-12 15:00:10 +08:00