#标题创作挑战#
很多玩家为了让自己的游戏体验更好,喜欢时不时的升级一下运行平台的配置。但是,人们有时候会发现,无论自己的电脑多么强大,在玩一些游戏的时候还是会遇到卡顿。这是怎么回事?在保证硬件没有问题的前提下,游戏卡顿问题可能是“着色器编译”的过程造成的,这个问题在当今的PC游戏领域非常普遍。医生会带你去看一看。
每个人家里的PC硬件差异很大,尤其是显卡,所以游戏需要“着色器编译”的过程才能在不同品牌和型号的显卡上运行。由于种种原因,上述编译过程难免会出错,导致游戏卡顿。所以,有人问,什么是着色器?实际上,这是一个用于帮助确认渲染图形的各种细节的计算机程序。游戏开发者需要这个东西来提升游戏画面和性能。
比如一个游戏里有一个天气系统。当下雨时,开发者可以使用特殊的着色器来使游戏中的细节变得湿润,因此他们不需要自己在一个物品上创建水渍。所以所谓的shader可以让GPU的使用更加灵活高效,在一定程度上替代之前的固定函数流水线技术。
至于编译,其实是一个计算机术语,指的是将工程师编写的程序代码进行转换,使运行软件的特定处理器能够理解并执行。着色器程序代码也必须编译到特定的GPU品牌和型号上才能工作,显卡才能工作,也就是上面提到的“着色器编译”。如果GPU改变,驱动更新或者游戏更新,我们必须重新编译着色器。
举个简单的例子,我们可以把不同品牌不同型号的GPU想象成不同国籍的人。你说的语言需要先翻译成他们能听懂的语言,他们才能听懂。当有补充说明时,你自然需要再翻译一遍。那么,为什么有些电脑游戏会卡在着色器编译上呢?这和开发者的具体工作有关。
目前,一些开发者致力于优化编译过程,以便它(几乎)不会影响游戏的性能。换句话说,翻译器需要传达的内容非常简洁,无论哪种显卡都能“听懂”,自然不会卡;但是有些开发者在大量游戏中使用着色器,甚至滥用着色器,使得电脑在编译时压力很大,以至于卡顿成了问题!
看到这里,我们也可以理解:游戏主机不会出现着色器编译卡顿的问题。拥有游戏主机的硬件是固定的。开发者只需要预编译特定项目的所有着色器(滥用无所谓),因为每个玩家的硬件都不一样,所以不需要在本地系统上单独编译。现在我们知道了上面的原理,那么我们可以做些什么来处理上面提到的卡顿呢?告诉大家:可惜这种问题只能靠开发者来修复。而好消息是:随着游戏开发工具的发展,着色器编译卡顿问题会得到改善。
渲染为什么费钱
每一款新的大型游戏推出,都会在游戏爱好者圈子里掀起新的讨论热潮。在开始一个新游戏之前,玩家总是要评估自己的电脑设备是否能“调出”游戏的效果。而这个“拿来主义”的核心往往是显卡。
从十几年前的《孤岛惊魂》到更新的《赛博朋克2077》,这些对电脑配置要求很高的游戏也被称为“显卡危机”。
相信很多人都有这个疑问:为什么很多大型游戏对显卡要求很高?今天我们就来了解一下显卡是什么,有什么不可替代的作用。
显卡(显卡或显示适配器),即显示适配器,实际上是计算机进行图形计算的设备,是计算机主机和显示器之间的桥梁。
我们在电脑和手机上看到的图片都是由一个个像素组成的。这些像素如何显示正确的颜色?多亏了显卡。显卡的作用是转换计算机系统所需的显示信息,使正确的内容显示在计算机屏幕上。
我们在游戏中看到的所有图形信息,都是通过CPU给显卡下达指令,然后在显卡中计算,最后呈现给我们的。这个过程就是渲染(注意电脑显示的内容都是通过显卡呈现的,但并没有全部渲染完)。
渲染是指通过软件从三维模型生成图像的过程,包括几何、视点、纹理、光照和阴影。
我们看到科幻电影往往有非常漂亮酷炫的CG(计算机图形学计算机动画)画面,也是渲染出来的。但是,这些图片通常在后期制作阶段进行更精细的图片处理,而不是实时渲染。所以电影和游戏的CG在视知觉、光影、色彩、清晰度等方面普遍优于游戏的操作画面。
但是对于游戏来说,随着玩家的操作,游戏世界的任何一个角落都有可能从任何一个角度出现在玩家面前,也就是说每个玩家在任何一个时间点看到的画面可以说是不一样的。所以对于想要实时显示微积分画面的游戏,需要非常强的实时渲染能力,也就是对显卡的性能要求非常高。
显卡也叫GPU(图形处理单元)。是不是很像我们经常听的CPU(中央处理器)?他们不仅同名,而且长得很像。
来源|百度贴吧
这是我们常见的CPU。但是,CPU真正用于计算的部分并没有那么大,而是指甲盖那么小的一块。
开放后CPU的来源|快技术
开盖后,中间发亮的部分就是CPU的核心。
RTX3090来源| NVDIA
这个看起来像燃气灶的东西就是显卡,类似于CPU,真正进行的只是一小块图形计算。
GPU源码|见水印
两者的核心部分可以说非常相似。毕竟,那是很久以前的事了。在电脑刚刚出现的时代,还没有独立显卡,图像处理也是由CPU来打理。
打个不恰当的比方:如果说CPU是一个可以进行非常复杂计算的“大学生”,那么GPU就是一个“小学生”,其工作只是一些简单的计算。当然,大学生可以做小学生的工作,但这是一种资源浪费,于是GPU逐渐与CPU分离,出现了所谓的“独立显卡”。
单核CPU是串行计算的,相当于一个大学生在做非常复杂的工作。
串行CPU来源| CSDN
但是GPU是并行计算,相当于一大堆小学生在做非常简单的工作。
GPU并行计算来源| CSDN
流线处理
衡量GPU并行处理能力的是流处理器的数量。
处理器就是上面提到的“小学生”数。同样计算能力的小学生可以同时进行简单的计算。当然,数量越多越好。
但这是计算能力相同的小学生的比较。时代在进步,小学生的算术能力也在不断提高。提高每个小学生的计算能力,就是所谓的GPU架构升级。
记忆
前面说了,GPU用于相对简单的计算,草稿纸平时算术必不可少。GPU计算也需要草稿纸,叫做显存。
GPU内存频率性能参数示例图片来源|自制
但是,GPU的“草稿纸”是一次性的,一旦关闭,显存中的内容就消失了。而显存的大小就是草稿纸的页数。毕竟小学生那么多,草稿纸当然越多越好。
内存宽度
数量不够,草稿纸的大小也很重要,就是内存位宽。
内存宽度是指一个时钟周期内可以传输数据的位数,即小学生一次交的作业量。假设每个小学生都能填一张草稿纸,很明显,草稿纸越大,每次交的就越多。
记忆频率
在显卡里,所有的“小学生”,也就是流处理器,每秒都要交几百万份作业。这个赋值的频率也是内存频率,单位是MHz(兆赫兹),是流处理器在一个时钟周期内工作的次数。
记忆频率源|自制
存储带宽
知道了流处理器,也就是“小学生”每次交的作业,以及每秒交的次数,就可以得到每秒交的作业总量。
存储器位宽和存储器频率共同决定了显示芯片和存储器之间的数据传输速率(即存储器带宽)。这是决定这款显卡性能的最重要因素之一。
现在我们已经简单了解了显卡的原理,为什么显卡的性能会对游戏有这么大的影响?
在看电影、电视或电脑时,我们看到的画面都是连续放映的离散画面(对于普通电影,静止图像的速度至少要达到每秒24帧及以上,实时游戏的帧率要更高)。因为视觉暂留效应和补脑机制,最终形成观众眼中流畅的画面。
显卡的工作原理是一样的:计算CPU发出的指令,然后得到图片,也就是所谓的帧,然后在短时间内将这些图片反映到电脑的输出设备(显示器)上,让用户看到图片在动。
玩游戏时,游戏画面随着玩家的操作而变化,显卡也会对画面中显示的内容进行第一次渲染,并反馈给显示屏,这就是所谓的“实时渲染”。这意味着我们看到的每一帧都是新的,相应的,我们对显卡的性能也有了更高的要求。
RTX3090来源|某购物平台
随着人们对画质追求的提高,新显卡的性能也在不断增强。
为了处理阴影、光线、物体、颜色等需要实时显示的内容(意味着大量数据的实时存储、计算和传输),对显卡的计算能力等综合性能的需求也越来越大。这就是为什么一款画面优秀的游戏需要非常优秀的显卡才能流畅的玩下去(玩家的操作效果可以实时显示在屏幕里)。
顶级玩家来源|见水印
相信随着技术的发展,更新的显示设备会让我们在电影和游戏中看到更刺激、更逼真的视觉效果。或许,科幻电影《头号玩家》中的游戏,在不久的将来会成为现实。