前言:
在一开始学习unity的时候就总是会听到这种声音,”Shade很难。。先学好基础再说吧。。shader是必学的。。会shader的人都是大牛。。“。好吧,到这里我表示你们说得真对。没办法,shader这东西真的得学,如果一个使用unity引擎的人,只会拖拽按钮,排好Panel,那身为计算机科班的人我真的鄙视自己,有人会说我客户端也有代码,也有交互啊,甚至一些逻辑也要放在客户端啊,我想说那点代码又能等价多少薪水,我们应该感谢shader,因为它的存在,我们才可以和后端人员斗一斗(汗。团队里还是很友好的哈)。好接下来我们就来剖析以下shader这个让人望而生畏的神秘物种。
Shader作用原理:
想学好一个东西就必须要知道它的原理,这样我们才能扼住他的喉咙让他为我们做事。
Shader其实就两个东西:顶点着色器,片段着色器(也有人喜欢叫片元着色器)
顶点着色器获取到模型自带的顶点信息进行一些转换然后确定屏幕上显示的形状,再把形状的信息传到片段着色器中进行渲染,也就是上颜色等一些绚丽的效果。分工很明确对吧,所以逻辑也会很清晰。修改形状就去改变顶点着色器的计算,想来点绚丽的效果就去搞片段着色器。接下来我会针对两个着色器一点点来剖析。
顶点着色器:
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);