当前位置: 华文问答 > 游戏

对于不同类型的游戏,提升画质或帧率,分别对应增加负载偏向于CPU还是显卡?其中对应相关部分具体原理?

2023-08-07游戏

这个问题的答案其实取决于游戏的类型。对于目前的计算机架构来说,游戏对计算机的所有硬件都有相当重的负载:

  • CPU 主要负责处理游戏逻辑,处理游戏的网络通讯和与GPU进行数据上的沟通。这部分的负载相对较小。在一些最新的游戏中,CPU可能也会需要负责一部分渲染(软光栅着色/遮挡剔除等)。
  • 外存 主要负责将游戏场景中所需要的资源传入内存/显存。考虑到目前的硬件水平,我们无法将一个游戏中的所有资源都不经压缩地放进内存或者显存中。一个朴素的理解是,我们只去加载「可以看见」的东西。当我们的人物在场景中移动时,不断出现的新的场景以及物体会需要从外存中加载得到的新的资源。
  • 内存和显存 主要负责存储从外存中读到的东西。内存的压力相对较低,主要为了游戏逻辑提供资源以及为显存提供交换区。显存的压力更大,它需要以极高的带宽为渲染管线中的每一次随机纹理采样提供数据,每一帧会进行数十次到数千次的纹理采样,而每一秒都有着数十帧甚至数百帧。当然,显存也有着自己的缓存加速。
  • 显卡 负责大部分的渲染。一般的渲染管线包含 顶点着色器 (vertex shader,VS),进行(相当多次的)矩阵运算; 像素着色器 (pixel shader,PS)或 片元着色器 (fragment shader,FS)计算屏幕上每个点颜色是什么。这些着色器曾经是硬件概念,有着自己的专属硬件;但是在近些年的显卡架构中逐渐成为软件概念,顶点和像素着色器使用相同的硬件单元。以现代的角度来看,着色器是一个并不合适的名字:它并不是为像素「着色」的「机器」,而是一种通用的、有着极高并行度的计算单元。当然,还有着其他类型的着色器。现代的显卡是一种综合硬件,因此还提供了AI加速器(tensor core,张量计算器)和光线追踪加速器(RT core,光线追踪单元,提供光线追踪加速结构的构建)。
  • 上面的内容是一个朴素的计算机结构科普。回到题目中的问题,我们可以总结出几种情况:

  • 提升 画质 ,比如在设置菜单将所有选项都从极低变为极高。这些选项的变动可能会引起一帧中更多的render pass,VS中稍多的顶点计算,PS中更多的采样和运算。总体来说,提升画质主要影响对显卡的需求,显存和PS的压力都会极大增加,而VS的压力会稍许增加。
  • 提高 分辨率 ,比如从1080P变为2160P。VS的压力取决于可见三角面片的数量,所以压力不会增大。而对于PS,需要着色的像素数量变为4倍,一般也意味着其运行时间变为4倍长。在CPU端,游戏逻辑的处理与分辨率关系并不大,但是由CPU运算的软光栅会更耗时。
  • 提升 帧率 。帧率是一个被动的变量而不是输入,一般取决于你的硬件上限。在这里假设一款游戏从(你手动锁死的)30帧升到60帧。在显卡端,VS、PS和显存的压力都成倍增加,在60帧下的运算量/吞吐量是30帧下的两倍;在CPU端,游戏逻辑的tick可以和帧率分离也可以和帧率绑定,所以对CPU端的影响可大可小。
  • 在许多游戏社区中都流行着这样一种说法:低分辨率吃CPU,高分辨率吃显卡。结合以上分析,这一说法相对合理,CPU的压力与分辨率的关系并不大,所以在低分辨率的条件下,显卡的压力相对更小,CPU可能成为瓶颈。