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)其实就是个深度差。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值