XShader: 运行时环境光仅在全局开启后覆盖 bakedGI,编辑器保留场景 SH

修复编辑器预览中 XPbr/XTex/XTerrain 比 URP Lit 亮的问题:
旧写法无条件把 bakedGI 覆盖成 SampleXRuntimeAmbient,未运行 Game.cs 时
退回硬编码的高强度三色环境光(sky≈1.45),远亮于场景真实环境光探针。
现改为 _XRuntimeAmbientEnabled 开启后才覆盖,运行时行为不变。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ud18010
2026-07-15 20:27:08 +08:00
co-authored by Claude Opus 4.8
parent a405333bf7
commit ea93b3b217
3 changed files with 12 additions and 3 deletions
@@ -122,7 +122,10 @@ void InitializeInputData(Varyings input, half3 normalTS, out InputData inputData
#else
inputData.bakedGI = SampleSH(inputData.normalWS);
#endif
inputData.bakedGI = SampleXRuntimeAmbient(inputData.normalWS);
// 仅在运行时全局环境光开启后才覆盖(Game.cs 设置);否则保留场景自身 SH/光照贴图,
// 避免编辑器预览比 URP Lit 亮(旧写法无条件覆盖成硬编码的高强度三色环境光)
if (_XRuntimeAmbientEnabled > 0.5h)
inputData.bakedGI = SampleXRuntimeAmbient(inputData.normalWS);
inputData.normalizedScreenSpaceUV = GetNormalizedScreenSpaceUV(input.positionCS);
inputData.shadowMask = SAMPLE_SHADOWMASK(input.staticLightmapUV);