Shader的作用
在Unity中渲染一个物体的外观是通过材质Material来完成的,其中材质上可以包含一个Shader脚本
材质决定了一个物体表面怎么样被渲染,包括对纹理Textures的引用,颜色的信息等,材质Material发挥什么样的具体功能操作,是通过Shader来完成的。
比如现在有一个红色的球,那么材质Material的颜色信息是红色的,我们想把球变成绿色的就是通过Shader来操作的.
Shader是一个脚本,里面包含一些算法,比如会有一些算法,根据输入的光的信息和材质的信息影响每个像素点Pixel的渲染,
我们可以通过shader实现很多效果,比如水的流动,粒子效果,夜视效果,模型一部分高光,草的折射效果,序列帧动画等
下图我们使用一个汽车纹理图,两个shader(一个控制颜色为红色的shader,一个控制颜色为绿色的shader),三个材质(汽车轮子的材质,红车的材质,绿车的材质)实现了两种颜色的汽车,这样我们就不需要用两张纹理图了
物体会受到环境中各种光的影响,比如环境光,反射光,直射光等,我们可以通过shader来控制各种光对我们的物体产生的影响
比如我们在unity中创建一个小球和一个直射光,如下图
我们看到小球的左上角明显比小球的右下角亮,这是因为我们在创建小球的时候,unity已经默认为我们的小球添加了一个材质,材质上有一个默认的shader
这个默认的shader控制了物体受到光照时所产生的影响