http://game.ceeger.com/Manual/Materials.html
Unity的每个标准安装包都有一个内置着色器的库。有超过30个内置着色器和六个基本族。
- Normal: For opaque textured objects.
标准:对于不透明纹理对象 这个最多
- Transparent: For partly transparent objects. The texture's alpha channel defines the level of transparency.
透明:对于部分透明的对象。纹理的alpha通道定义透明度 - TransparentCutOut: For objects that have only fully opaque and fully transparent areas, like fences.
透明剪影:对于拥有完全不透明和完全透明的区域的对象,比如栅栏 - Self-Illuminated: For objects that have light emitting parts.
自身发光:对于有发光部件的对象 - Reflective: For opaque textured objects that reflect an environment Cubemap.
反射:对于能反射外界立方体贴图的不透明纹理对象(比如镜子,本身不透明,但其反映的是外界环境的贴图——个人理解)
渲染路径和着色器性能
延迟光照和顶点关照路径有着可以预测的性能。在延迟光照中,每一个对象同城被描绘两次,不管光线是否影响到它。
而在顶点光照中,简单来说,每一个对象通常只被描绘一次。因此,纹理如何被使用和需要的计算量最大程度的影响着色器性能,而产生了性能的差别。
着色器的性能取决于着色器自身和场景中的灯光数量有关
前向渲染路径中的顶点照明着色器总是比像素着色器要廉价。这些着色器通过基于网格节点一次使用所有光照来计算光照。因此,不管多少光照正照射着物体,它总是只绘制一次。
像素着色器为每一个将被绘制的像素计算最终的光照。因此,物体将被环境光或主要的方向性光照绘制一次,然后为每一个额外的能照射到它的光源再绘制一次。这将是N次渲染通路。N是在照射在物体上的像素光照的最后数量。这增加了CPU的处理负担和发送到显卡的命令苏亮,在显卡处理顶点和绘制像素的处理。像素光照的物体在屏幕上的尺寸也会影响到其绘制的速度。物体越大,绘制越慢。
所以 尽量不要用像素光
光照能被强制进入像素模式(重要)或是顶点模式("不重要")。任何顶点光源在一个像素光照着色器中会被基于物体的顶点或是整个物体来计算,而不会增加渲染开销或是和像素光照相关的视觉特效。
在内置着色器以外,他们将依次略微增加一些复杂性。性能由上到下递增
- Unlit. 不发光。这只是一个纹理,不被任何光照影响
- VertexLit. 顶点光照
- Diffuse. 漫反射
- Normal mapped.
法线贴图,比漫反射更昂贵:增加了一个或更多纹理(法线贴图)和几个着色器结构 - Specular.
高光。这增加了特殊的高光计算 - Normal Mapped Specular.
高光法线贴图。这比高光更昂贵一点 - Parallax Normal mapped.
视差法线贴图。这增加了视差法线贴图计算 (近处大贴图 远处小贴图?)
- Parallax Normal Mapped Specular.
视差高光法线贴图。这增加了视差法线贴图和镜面高光计算
着色器工作原理:
一个着色器本质上定义了游戏中的明暗应该如何表现的规则。在任意给定的着色器里是一个属性(通常是纹理)的数量。着色器通过材质执行,直接附属到特定的游戏对象。在一个材质里,你可以选择一个着色器,然后定义属性(通常是纹理和色彩,但性质可能不同)由该着色器使用。