我看过雨凇大神是怎么解决半透明在rendertexture问题,直接在渲染模型特效背景加个sprite2d背景,其实这种非常不通用而且使用限制很大。我使用方案参考NGUI写一个给shader可以支持半透明就可以
因为以前用过NGUI的Unlit/Premultiplied Colored这个shader,然后换上这个shader,观察效果,模型无描边,粒子也能正常显示
所以就有必要看看NGUI的Unlit/Premultiplied Colored,看它是如何做到完美显示半透明和粒子。
1.为什么粒子特效也不显示?
不显示是正常的,因为当前为背景的点设置为A为0时已经被剔除,当前位置粒子特效的颜色也会被剔除。
因为clip发生在融合blend之前,blend发生在所有颜色输出之后的帧缓存。
2.为什么NGUI的Unlit/Premultiplied Colored的shader能正常显示半透明粒子?
主要是因为使用了Blend One OneMinusSrcAlpha // 源rgba*1 + 背景rgba*(1-源A值)
这样就融合了源的A和背景的A,所以就正常显示了。