UnpackScaleNormal函 使用遇到的問題

今天吃了沒文化的虧,覆盤下

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 所以這個判斷就無效了

引以爲鑑

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章