Unity中几种有意思的Shader效果

作者: d71d783fb21a | 来源:发表于2016-08-14 20:50 被阅读473次

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

            下面我们就进入正题

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

    SliceShader切片效果

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

    SliceShader代码

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

    Cubemap立方体贴图

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

    Cubemap代码

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

    Cubeline边缘高光

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

    Cubeline代码

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

    ZTestShader透视效果

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

    ZTestShader代码 ZTestShader代码()

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

    相关文章

      网友评论

      • c49ed887992f:小编的vs shader 高光提示插件是???

      本文标题:Unity中几种有意思的Shader效果

      本文链接:https://www.haomeiwen.com/subject/qjqysttx.html