优化

前言

Godot遵循平衡的表现理念. 在效率表现中, 总是有需要权衡交易的东西, 可用性和灵活性. 一些实际的示例是:

  • 有效地渲染大量的物体是很容易的, 但是当必须渲染一个大的场景时, 效率就会变得很低. 为了解决这个问题, 必须在渲染时加入可见性计算. 这使得渲染的效率降低, 但同时, 被渲染的对象也减少了. 因此, 整体的渲染效率得到了提高.
  • 为每个需要渲染的对象配置每个材质的属性也很慢. 为了解决这个问题, 物体被按材质分类以减少成本. 同时, 排序也是有成本的.
  • 在3D物理中, 也有类似的情况发生. 处理大量物理对象的最佳算法(如SAP)在插入/移除对象和射线传输方面都很慢. 允许更快的插入和移除以及射线传输的算法, 将无法处理那么多的活动对象. 而这样的例子还有很多!游戏引擎在本质上努力成为通用的. 平衡的算法总是受到青睐, 而不是那些在某些情况下可能很快而在另一些情况下很慢的算法, 或者那些快但更难使用的算法. Godot在这方面也不例外. 虽然它被设计成可以为不同的算法交换后端, 但默认的后端将平衡和灵活性置于性能之上. 一般优化提示 开始.

    常见的

  • 一般优化提示
  • 测量性能
  • 分析器
  • 原则
  • 附录
  • 利用服务器进行优化

    CPU

  • CPU优化
  • 测量性能
  • CPU分析器
  • 手动计时函数
  • 缓存
  • 语言
  • 线程
  • SceneTree
  • 物理学

    GPU

  • GPU优化
  • 绘制调用, 状态更变和api
  • 像素成本与顶点成本
  • 像素/片段着色器和填充速率
  • 透明度和混合
  • 多平台建议
  • 移动端和图块渲染
  • 使用MultiMeshes优化

    2D

  • 优化3D性能
  • 剔除
  • 细节程度(LOD)
  • 烘焙照明
  • 动画和皮肤
  • 庞大的世界
  • 对数以千计的对象动画化
  • 使用批处理优化

    3D

  • 优化3D性能
  • 剔除
  • 细节程度(LOD)
  • 烘焙照明
  • 动画和皮肤
  • 庞大的世界 Multi-threading —
  • 线程安全的 API
  • 使用多线程