参考网址:https://docs.unity3d.com/cn/current/Manual/shader-Performance.html
1、内置着色器的用途Unity的内置着色器是通过材质来使用的,材质本质上结合了着色器代码和纹理等参数。着色器是通过材质来实现的,每种材质在inspector面板看起来会有所不同,具体取决于其具体使用的着色器,着色器本身决定了可在inspector中调整的属性。可在多个材质中使用单个着色器,但单个材质不能使用多个着色器。
2、 性能着色器性能主要取决于2个方面:
2.1、着色器本身
一般着色器复杂程度从低到高
a、无光照(Unlit)这只是一种纹理,不受关照影响。
b、漫射(Diffuse)
c、法线贴图(Normal mapped)此项比漫射的成本略高:增加了一个纹理(法线贴图)和一些着色器指令。
d、镜面反射(specular)此项增加了镜面高光计算
e、法线贴图镜面反射(Normal mapped specular)同样,此项比镜面反射的成本略高。
f、视差法线映射(Parallax Normal mapped)此项增加了视差法线贴图计算
g、视差法线贴图镜面反射(Parallax Normal Mapped Specular)此项增加了视差法线贴图计算和镜面高光计算。
2.2、项目或者摄像机使用的渲染路径
a、在Unity支持的渲染路径中,延迟着色(Deferred Shading) 和顶点光照(Vertex Lit)具有最可预测性的性能。
在延迟着色渲染路径中,每个对象通常被绘制一次(无论哪些光源影响它)
同样,顶点光照中,每个对象通常被绘制一次。
因此,着色器的性能差异主要取决于,使用的纹理数量以及他们执行的计算。
b、在前向渲染路径(Forward )中,着色器性能主要取决于着色器本身和光照这两种因素。
从性能角度看,有两种基本的着色器类别:顶点光照 (Vertex-Lit)和像素光照 (Pixel-Lit)
顶点光照着色器比像素光照着色器的成本更低,这些着色器同时使用所有光源基于网格顶点来计算光照,因此无论对象身上有多少光照,都只需要绘制一次。
像素光照绘制每个像素的最终光照,因此必须绘制一次对象获取环境和主方向光照,并针对每次额外关照再绘制一次对象。
因此,方案为 N 个渲染 pass,其中 N 表示照射在对象上的最终像素光照数。这种方案增加了 CPU 处理和发送命令到显卡以及在显卡上处理顶点并绘制像素的工作负载。
1、如果使用内置着色器,请从Moblie或Unlit类别中选取,这些类别也适用于非移动平台,但他们是更复杂着色器的简化和近似版本。
2、使用像素着色器或纹理组合器来混合多个纹理而不是使用多 pass 方法。
3、最大限度减少在像素着色器中使用复杂的数学运算,例如 pow、sin 和 cos。



