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 所以这个判断就无效了

引以为鉴

 

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