优化
前言
Godot遵循平衡的表现理念. 在效率表现中, 总是有需要权衡交易的东西, 可用性和灵活性. 一些实际的示例是:
- 有效地渲染大量的物体是很容易的, 但是当必须渲染一个大的场景时, 效率就会变得很低. 为了解决这个问题, 必须在渲染时加入可见性计算. 这使得渲染的效率降低, 但同时, 被渲染的对象也减少了. 因此, 整体的渲染效率得到了提高.
- 为每个需要渲染的对象配置每个材质的属性也很慢. 为了解决这个问题, 物体被按材质分类以减少成本. 同时, 排序也是有成本的.
- 在3D物理中, 也有类似的情况发生. 处理大量物理对象的最佳算法(如SAP)在插入/移除对象和射线传输方面都很慢. 允许更快的插入和移除以及射线传输的算法, 将无法处理那么多的活动对象.
而这样的例子还有很多!游戏引擎在本质上努力成为通用的. 平衡的算法总是受到青睐, 而不是那些在某些情况下可能很快而在另一些情况下很慢的算法, 或者那些快但更难使用的算法.
Godot在这方面也不例外. 虽然它被设计成可以为不同的算法交换后端, 但默认的后端将平衡和灵活性置于性能之上.
一般优化提示 开始.
常见的
- 一般优化提示
- 测量性能
- 分析器
- 原则
- 附录
- 利用服务器进行优化
CPU
- CPU优化
- 测量性能
- CPU分析器
- 手动计时函数
- 缓存
- 语言
- 线程
- SceneTree
- 物理学
GPU
- GPU优化
- 绘制调用, 状态更变和api
- 像素成本与顶点成本
- 像素/片段着色器和填充速率
- 透明度和混合
- 多平台建议
- 移动端和图块渲染
- 使用MultiMeshes优化
2D
- 优化3D性能
- 剔除
- 细节程度(LOD)
- 烘焙照明
- 动画和皮肤
- 庞大的世界
- 对数以千计的对象动画化
- 使用批处理优化
3D
- 优化3D性能
- 剔除
- 细节程度(LOD)
- 烘焙照明
- 动画和皮肤
- 庞大的世界 Multi-threading —
- 线程安全的 API
- 使用多线程
