“OceanAdvanced” Shader打包报错但是在编辑器中运行完全正常
maximum temp register index exceeded
Compiling Fragment program with DIRECTIONAL SHADOWS_SCREEN
Platform defines:
UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS
UNITY_PBS_USE_BRDF1
UNITY_SPECCUBE_BOX_PROJECTION
UNITY_SPECCUBE_BLENDING
UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP
UNITY_COLORSPACE_GAMMA
原因是着色器中有太多的全局变量
DX9.0c级别的显卡只有256个全局寄存器,之前的版本更少,而一个矩阵就要占用4个,所以全局变量要省着用
解决方法:
将Nature/OceanAdvanced.shader中的#define NB_INTERACTIONS 64 改成
#define NB_INTERACTIONS 32