[Unity]关于大的Quad在移动设备上使用Unity自带雾效的问题

如果创建一个足够大的Quad(比如用作地形),然后给它使用Unity自带的雾效,会发现在PC上表现正常,到移动设备上就成了从Quad下方到上方逐渐变浓的雾,原因是Unity自带雾效在移动平台(#if defined(SHADER_API_MOBILE))的时候会强制做逐顶点插值而不是做逐像素插值,所以我们需要自己重写一下UNITY_TRANSFER_FOG和UNITY_APPLY_FOG这两个宏.当然这样会增加性能开销,所以需要根据项目实际情况选用.以下片段是根据Unity这两个宏自己改写的

#if defined(FOG_LINEAR) || defined(FOG_EXP) || defined(FOG_EXP2)
	#define UNITY_TRANSFER_FOG_CUSTOM(o,outpos) o.fogCoord.x = (outpos).z
	#define UNITY_APPLY_FOG_CUSTOM(coord,col) UNITY_APPLY_FOG_COLOR_CUSTOM(coord,col,unity_FogColor)
	#define UNITY_APPLY_FOG_COLOR_CUSTOM(coord,col,fogCol) UNITY_CALC_FOG_FACTOR((coord).x); UNITY_FOG_LERP_COLOR(col,fogCol,unityFogFactor)
#else
    #define UNITY_TRANSFER_FOG_CUSTOM(o,outpos)
	#define UNITY_APPLY_FOG_CUSTOM(coord,col)
#endif

你可能感兴趣的:([Unity]关于大的Quad在移动设备上使用Unity自带雾效的问题)