多边形数量问题
对于现今的大部分图形卡来说,多边形数量并不是大问题。我们一般认为对象数量和填充率更为重要。不幸的是,大部分老的集成芯片(Intel 945 / GMA 950 和类似型号)并非如此。其重要性要看顶点着色器或灯光的复杂度以及 CPU 的速度(不错,大部分集成显卡转换并照亮 CPU 的顶点)。
Big Bang Brain Games 游戏从不在使用 1-2 逐顶点灯和无像素灯(特别是顶点光照 (VertexLit) 渲染路径)的场景中使用超过 2.5 万个三角面。帧速率下降时采用质量设置 (Quality Settings) 自动提高性能。因此,在高端机器中,启用像素灯时质量设置也较高。
造成速度下降的原因是多次绘制物体,使用复杂的顶点着色器和许多多边形。这意味着:
可行时使用 顶点光照 (VertexLit) 渲染路径。这使得无论场景中有多少灯,每个对象都只会绘制一次。
尽量不用所有灯光,包括顶点灯。几何图形或灯光移动时灯才起作用。否则使用光照贴图 (Lightmapper) 烘烤照明,这会运行得更快,外观也更漂亮。
优化几何体(见下一部分)。
使用 渲染统计资料 (Rendering Statistics) 窗口和分析器 (Profiler)!
优化模型几何体
优化模型几何体时,有两条基本原则:
如果并非必须,不要使用过多的面。
使 UV 贴图接缝和硬边尽可能少。
请注意,图形硬件处理的实际顶点数通常与三维应用程序中显示的不同。建模应用程序通常显示几何顶点数,如构成模型的顶点数。
但对显卡而言,一些顶点必须分割成单独的点。如果顶点有多条法线(在“硬边”上)、多个 UV 坐标或多种顶点颜色,就必须分割。所以在 Unity 中看到的顶点数通常与三维应用程序中显示的不同。
烘培灯光。
烘培灯光至光照贴图或顶点颜色中。Unity 内置有出色的光照贴图 (Lightmapper),也可在许多三维建模包中烘培光照贴图。
生成光照贴图环境的过程只比在 Unity 的场景中放入灯光的时间长一点点,但是:
它的运行速度更快,特别是有多盏灯的情况。
因为可以烘培全局照明,所以外观好看许多。
下代游戏仍然很依赖光照贴图。一般来说,它们使用光照贴图环境,并只用一两盏实时动态灯。