初来简书,也不知道分享什么好,正好最近在学习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,是对遮挡部分的处理,编译指令写透视alpha;o.alpha是透视度;遮挡部分可以加上一些颜色;在这个模型效果中会出现模型本身出现一些遮挡的情况,也会出现透视和颜色效果,还没有想出方法解决,哪位大神有方法,让我抱抱大腿呗。
ZTestShader代码 ZTestShader代码() Shader中的一些效果用Unity也能实现,但Shader却是一种很好用的处理渲染效果的方式,确实博大精深,想要精通需要优秀的图形学美学等方面的造诣,希望这些东西对大家有用。
网友评论