[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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值