本文主要是介绍UnityShader源码2017---学习笔记与自我拓展043,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
源自Particle Add , Particle Alpha Blend,Particle AddMultiply,Particle AddSmooth,Particle Blend,Particle VertexLit Blended
这几个shader的不同点基本上就在blend和alpha的计算上。
好多东西一直都不愿意去写,但是群里好多人,每隔一段时间就会问一次。。。o(︶︿︶)o 唉
先说一下ColorMask
找一下帮助文档
MRT的部分这里不讨论。
ColorMask 0表示不写入任何颜色和alpha,(这样有什么用的呢,比如,如果shader了的zwirte on的话。。。)
同理 ColorMask R表示只写入R通道。。。
我把这个shader的ColorMask 改成ColorMask R,看一下结果
是的,只输出了R通道。
进一步看,我新建一个RenderTexture,丢给主相机。主相机的设置如下(就是简单的修改了一下ClearFlags)
然后看一下,Render Texture拿到的结果。
因为colormask r 所以只输出了r通道,而GBA都摒弃了。
在来看一下colormask ra的结果
回到ColorMask RGB上
经常有人问,为啥我把模型+特效弄得了RenderTexture之后,贴到UI上特效显示不对了呢。
这个问题基本上都是ColorMask的理解不够导致的
但是同样有一个问题就是,builtin里的,不过是Add,还是alpha blend ,这两个shader都是ColorMask RGB
这就使得在RenderTexture的使用上出现了一点问题。
我是在UGUI的RawImage上使用的
这里就能看出来了,不过是alpha(云)还是光点(光点),最后采取的都是叠加模式。
以为rawimage的shader我使用的是
Blend one oneminusSrcAlpha
如果要完全还原的话,把alpha blend的shader的ColorMask去掉即可。
后面的部分也没有什么可说的。
简单一带soft 部分的计算
(sceneZ-partZ)其实就是个深度差。
这篇关于UnityShader源码2017---学习笔记与自我拓展043的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!