本文主要是介绍[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自带雾效的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!