Unity3D Built-in Shader 详解一 Unity3D 的 Shader Unity 里面的Shaders 是使用一种叫ShaderLab 的语言编写的,它同微软的
FX 文件或者NVIDIA 的CgFX 有些类似
传统意义上的vertex shader 和pixel shader 还是使用标准的Cg/HLSL 编程语言编写的
( 因此Unity 文档里面的Shader,都是指用ShaderLab 编写的代码) 然后我们来看下Unity3D自 带 的60 多个Shader
这 些Shader 被 分为五个大类:Normal,Transparent,Transparent Cutout,Self-llluminated,Reflective
由于数量比较多,将分几个篇幅一一介绍
(一 ) Normal Shader Family 这个家族一共9 个 Shader, 都是针对不透明的对象的
(1) Vertex-Lit: 最简单的一种Shader 之一,所有照射在该物体上的光在一个Pass 里面渲染完,光源只在顶点计算
所以不会有任何基于像素渲染得效果,比如说:normal mapping,light cookies 和shadows
这个shader 对模型的剖分(将一个物体从几何描述变为多边形表示的过程)非常敏感,如果你将一个点光源放在很靠近一个立方体的一个顶点那里,并且对立方体使用这个shader,光源只会在角落计算
基于像素光照的shader 对剖分没有要求,在表现圆形高光上效果也很好
如果上述情况时你想要的效果,你可以考虑使用一个基于像素光照的shader 或者增加模型的剖分
(增加顶点数) 总的来说,这个shader 的渲染代价比较小
这个shader 包含了2 个 subshader,分别对应可编成管线和固定管线
是所有硬件都支持的一个最基