理论
FPS:
FPS: 控制在30(一秒30帧,花费33.3ms)至60(一秒60帧,花费16.6ms)即可。
CPU:
- 游戏逻辑处理(脚本):
游戏状态更新: 处理游戏的基本逻辑,例如角色移动、碰撞检测、游戏规则执行等。
输入处理: 读取和响应玩家的输入(如键盘、鼠标、触摸屏等),更新游戏状态。 - 物理计算:
物理引擎: 进行物理模拟,包括刚体运动、碰撞检测和响应、重力和摩擦等计算。
粒子系统: 处理粒子效果的生成和更新,如烟雾、火焰和其他视觉效果。 - 更新动画:
角色动画: 更新角色的动画状态,根据输入和游戏逻辑计算当前动画帧。
混合和转场: 处理动画之间的混合和转场,确保动作流畅自然。 - 渲染准备:
剔除: 确定哪些对象在视野内并需要渲染,进行视锥剔除和层级剔除等。
排序:从前到后、从后到前。
绘制Draw:向GPU提交DrawCall、SetPassCall、Batches等 - 同步、等待:
等待GPU计算完毕后。(如果CPU完成所有线程,等待GPU即为GPU瓶颈)
GPU:
- 图形渲染:
场景渲染: 将 3D 场景中的对象(如模型、光源、材质)渲染到屏幕上,包括处理每个帧的图像输出。
光照计算: 处理场景中的光源,并计算它们对物体的影响,包括实时光照、阴影和反射等效果。 - 纹理处理:
纹理映射: 将纹理(图像)应用到 3D 模型的表面,以增加细节和真实感。
纹理过滤: 在渲染过程中处理纹理的缩放和过滤,以确保在不同距离和角度下的视觉效果。 - 计算着色器:
着色器执行: 运行顶点着色器、片段着色器(像素着色器)和计算着色器,以实现自定义的图形效果和后处理效果。
后处理效果: 处理图像后期效果,如模糊、色彩校正、HDR(高动态范围)和抗锯齿等。
DrawCall:
- 定义: Draw Call 是指 CPU 向 GPU 发送绘制命令的过程。每个 Draw Call 通常对应于一组图形数据(如顶点、索引)和相关的状态(如着色器、材质)。
- 组成: 一个 Draw Call 通常包括以下内容:
- 顶点数据(Vertex Data)
- 索引数据(Index Data)
- 着色器程序(Shader Program)
- 材质属性(Material Properties)
- 纹理和其他资源
SetPassCall:
定义: SetPassCall 是指在渲染过程中,GPU 设置渲染状态的次数。这包括切换材质、着色器、纹理和其他渲染状态。每个 SetPassCall 通常对应于一个需要设置的材质或着色器。
开销: 每当需要更改渲染状态时,都会触发一个 SetPassCall。这意味着频繁的状态切换会导致性能下降,因为它们会引入额外的 CPU 和 GPU 之间的上下文切换。
显存:
专门用于存储图形数据和纹理,供显卡(GPU)使用。
功能:
存储图像、纹理、着色器和其他与图形渲染相关的数据。
提供高带宽以支持快速图形渲染和显示。
与 GPU 的关系:
GPU 直接使用显存来存取图形数据,显存的容量和速度影响图形性能和质量。
内存:
随机访问存储器(Random Access Memory),用于临时存储计算机正在使用的数据和程序。
功能:
存储操作系统、应用程序和当前使用的数据。
提供快速读取和写入数据的能力,影响系统的多任务处理能力和响应速度。
与 CPU 的关系:
CPU 通过内存访问数据和指令,内存的速度直接影响 CPU 的性能。