admin管理员组

文章数量:817352

unity物体设置透明度

1.概述

本节中我们回顾一下两种透明方法,透明度混合与透明度测试。透明度混合用于实现半透明,透明度测试则用于实现消融效果之类“消失”效果。

2.透明度混合

透明度混合是一种混合方式,所谓混合,就是将两种颜色按照一定的公式混合在一起,对于两个重叠的物体A和B来说,如果A的颜色采一点,B的颜色拿一点,两者叠加起来,就是透明度混合。

虽然透明度混合一种算法,但是基本上不用我们自己手动计算,只需要设定好物体的渲染方式与渲染队列,以及设置混合模式就可以了。

在片元着色器中,我们虽然一直要输出一个half4类型的变量,但是其实第四个分量是不起作用的。因为我们设置的渲染类型为Opaque。所以首要的任务是设置渲染标签。

Tags

有了以上条件之后,之后设置混合模式就可以了。

Blend 

之后我们可以通过传入一个透明度值来控制透明度。以下是完整的代码

Shader 

下面是透明度混合的效果

不过这样渲染出来的效果是没有双面渲染的,也就是透过模型,我们没有办法看见模型的内部。为了解决这个问题,我们可以将模型剔除关闭。

Blend 

之后透过模型就可以看到模型的后面了。

3.透明度测试

透明度测试就是一种用于剔除透明像素的手段,它严格来说不是透明效果。而且把一部分像素挖掉。(也可以理解为把这部分像素的透明度设置为0),它本身还是不透明的,而且整个效果只依赖一个叫做clip的函数。

clip

一般,我们可以将value设置为​,这样就可以剔除alpha值低于threshold的像素了。除了这个函数的使用,复制一个基础的着色器过来就可以了。下面是全部的代码。

Shader 

下面是最终的效果。

带有透明通道的素材绘制到一个四边面上,透明像素还是会绘制出来。所以我们增加一个透明度测试来提出掉透明的像素,只留下不透明的部分。

这里用的是自己画的素材,(逃

4.总结

该部分比较简单,主要是回顾一下Blend,ZWrite,Cull操作符。

另外,本次使用到的所有代码都已经上传到了我的github,在下面的链接中可以找到。如果你喜欢这个系列的文章,欢迎关注该专栏,或者给我的github贡献一颗⭐,感谢阅读。

github/529324416/UnityShaderMagicBook​github

本文标签: unity物体设置透明度