今天吃了没文化的亏,覆盘下
half3 UnpackScaleNormal(half4 packednormal, half bumpScale)
这个函数用来使用法线贴图,同时用bumpScale变量控制法线的强度.
那么问题来了,写进去后,bumpScale就是无效果,也无任何报错.滚来滚去查了1小时,想起去看这个函数的结构如下
half3 UnpackScaleNormal(half4 packednormal, half bumpScale)
{
#if defined(UNITY_NO_DXT5nm)
return packednormal.xyz * 2 - 1;
#else
half3 normal;
normal.xy = (packednormal.wy * 2 - 1);
#if (SHADER_TARGET >= 30)
// SM2.0: instruction count limitation
// SM2.0: normal scaler is not supported
normal.xy *= bumpScale;
#endif
normal.z = sqrt(1.0 - saturate(dot(normal.xy, normal.xy)));
return normal;
#endif
}
关键的来了 就在于#if (SHADER_TARGET >= 30) 这一句, 我SHADER中并未添加 #pragma target 3.0 所以这个判断就无效了
引以为鉴