Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

性能

前言

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

线程