今天吃了沒文化的虧,覆盤下
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 所以這個判斷就無效了
引以爲鑑