Unity中几种有意思的Shader效果

        初来,也不知道分享什么好,正好最近在学习Shader中的表面着色器,就把最近学习中遇到的几种有意思的Shader效果分享给大家瞧瞧吧。

        下面我们就进入正题

1、SliceShader切片效果(名字我自己起的哈,别深究)

Unity中几种有意思的Shader效果_第1张图片
SliceShader切片效果

        效果就是这样,把模型切成一片一片的,部分镂空,有没有想起烤鸭,原谅我突然饿了。。。代码如下,代码中_Num1调节切片的密度;_Num2调节每一个切片的宽度;纹理贴图贴图和法线贴图其实不影响效果,只是没有的话,整个模型会变成黑色,不太好看;frac函数:返回标量或者矢量的小数部分;clip(v)函数:小于v的部分的像素将会被去掉;公式自己理解哈,这个不太好解释。

Unity中几种有意思的Shader效果_第2张图片
SliceShader代码

2、Cubemap立方体贴图(我更喜欢叫他金属化)

Unity中几种有意思的Shader效果_第3张图片
Cubemap立方体贴图

        有没有很帅啊,左右看上去有些区别,是因为左边的加了法线贴图,右边的没有,看要什么样的效果,如果要比较真实的效果,加上法线贴图会好一点,如果追求亮、炫,那么右边的是你最佳的选择,代码如下,其中o.Emission表示自发光颜色;texCUBE函数:立方体纹理查找;CUBE是一种纹理格式,需要使用Cubemap格式的贴图;WorldReflectionVector():世界反射向量。

Unity中几种有意思的Shader效果_第4张图片
Cubemap代码

3、Cubeline边缘高光(就别去认真的翻译了呗,要是按英文翻译出来是多维数据集线,什么鬼啊)

Unity中几种有意思的Shader效果_第5张图片
Cubeline边缘高光

        这个效果我感觉还是很实用的,尤其在游戏中选中一个角色,可以显示这个效果标注出来。代码如下,代码中,dot(A,B)函数:返回A和B的点积;其中A括号里的IN.viewDir:视野到模型某点的向量,B是模型这点的法向量;pow(A,B)函数:A的B次方;_IsRim只是作为这个功能的开关使用,在脚本中可以直接调到这个_IsRim来控制边缘高光功能的开关。

Unity中几种有意思的Shader效果_第6张图片
Cubeline代码

4、ZTestShader透视效果(就是深度测试)

Unity中几种有意思的Shader效果_第7张图片
ZTestShader透视效果

        这种效果也是很有用第一种效果,主要是ZTest深度测试函数的运用,上半部分的代码前写了ZTest LEqual,是对非遮挡部分的处理。后半部分ZTest Greater,是对遮挡部分的处理,编译指令写透视alphao.alpha是透视度;遮挡部分可以加上一些颜色;在这个模型效果中会出现模型本身出现一些遮挡的情况,也会出现透视和颜色效果,还没有想出方法解决,哪位大神有方法,让我抱抱大腿呗。

Unity中几种有意思的Shader效果_第8张图片
ZTestShader代码
Unity中几种有意思的Shader效果_第9张图片
ZTestShader代码()

        Shader中的一些效果用Unity也能实现,但Shader却是一种很好用的处理渲染效果的方式,确实博大精深,想要精通需要优秀的图形学美学等方面的造诣,希望这些东西对大家有用。

你可能感兴趣的:(Unity中几种有意思的Shader效果)