Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

性能

前言

Godot follows a balanced performance philosophy. In the performance world, there are always tradeoffs, which consist of trading speed for usability and flexibility. Some practical examples of this are:

  • 有效地渲染大量的物体是很容易的, 但是当必须渲染一个大的场景时, 效率就会变得很低. 为了解决这个问题, 必须在渲染时加入可见性计算. 这使得渲染的效率降低, 但同时, 被渲染的对象也减少了. 因此, 整体的渲染效率得到了提高.

  • 为每个需要渲染的对象配置每个材质的属性也很慢. 为了解决这个问题, 物体被按材质分类以减少成本. 同时, 排序也是有成本的.

  • 在3D物理中, 也有类似的情况发生. 处理大量物理对象的最佳算法(如SAP)在插入/移除对象和射线传输方面都很慢. 允许更快的插入和移除以及射线传输的算法, 将无法处理那么多的活动对象.

而这样的例子还有很多!游戏引擎在本质上努力成为通用的. 平衡的算法总是受到青睐, 而不是那些在某些情况下可能很快而在另一些情况下很慢的算法, 或者那些快但更难使用的算法.

Godot在这方面也不例外. 虽然它被设计成可以为不同的算法交换后端, 但默认的后端将平衡和灵活性置于性能之上.

明确了这一点后, 本教程部分的目的是解释如何从Godot中获得最大的性能. 虽然这些教程可以按任何顺序阅读, 但最好从 通用优化提示 开始.

常规

CPU

GPU

3D

线程