16.8 减少计算复杂度
16.8.1 Shader的LOD技术
和16.5.2提到的模型的LOD技术类似,Shader的LOD技术可以控制使用的Shader等级。它的原理是,只有Shader的LOD值小于某个设定的值,这个Shader才会被使用,而使用了那些超过设定值的Shader的物体将不会被渲染。
我们通常会在SubShader中使用类似下面的语句来指明该shader的LOD值:
SubShader{
Tags{
"RenderType" = "Opaque"}
LOD 200
}
我们也可以在Unity Shader的导入面板上看到该Shader使用的LOD值。在默认情况下,允许的LOD等级是无限大的。这意味着,任何被当前显卡支持的Shader都可以被使用。但是,在某些情况下我们可能需要去掉一些使用了复杂计算的Shader渲染。这时,我们可以使用Shader.maximumLOD或Shader.globalMaximumLOD来设置允许的最大LOD值。
unity内置的Shader使用了不同的LOD值,例如,Diffuse的LOD为200,而Bumped Specular的LOD为400。
16.8.2 代码方面的优化
在实现游戏效果时,我们可以选择在哪里进行某些特定的运算。通常来讲,游戏需要计算的对象、顶点和像素的数目排列是对象数<顶点数<像素数。因此