3D 动画演示显卡工作原理!游戏玩家必看,硬核科普涨知识~
发布时间:2025-12-31 08:08:45 浏览量:14
海外研究所。
发明显卡的人真是个天才,它竟然可以把硬盘中的数据转化为精美逼真的游戏画面,究竟是怎么做到的?注意图像渲染主要有三个步骤:顶点着色、光栅化和片段着色。
·顶点着色是使用相机的视角来计算场景中的每个物体在显示器的2D画面中的位置。在这个示例场景中有1100个不同的模型,相机的视野只把玩家所看到的部分划分出来,这样需要渲染的对象数量就减少到600个,大大提高效率。
以火车为例,虽然看起来整个模型表面非常复杂,但实际上也一点不简单,它是由762000个平面三角形拼接而成,使用382000的顶点和9种不同材质或颜色。游戏时整个火车是作为一个整体显示出来,但实际上火车的数十万个顶点中的每一个都是逐个移动的,这是一个令人难以置信的计算量。
但显卡和视频游戏主机中的GPU被设计成三角形网格渲染怪兽,经过数十年的发展已经可以做到每毫秒处理数百万个三角形。拿熟悉的3090显卡来说,GPU有1万多个核心,每秒可以执行35万亿次的32位乘法和加法运算,每秒渲染120帧甚至更多游戏画面。现在所有的顶点都移动到了2D平面上。
·下一步是使用单个三角形的三个顶点找出在显示器上哪些特定的像素被这个三角形覆盖,整个过程就是光栅化。4K显示器分辨率是3840乘2160,大约有830万像素。使用给定三角形在显示器上的x和y坐标,GPU会计算它在这个庞大网格内的位置以及哪些像素被该三角形覆盖。
接下来使用分配给这个三角形的纹理或颜色对这些像素进行着色,这样相同的操作执行350万次,最终形成我们所看到的4K图像。
·在玩3A游戏时你可能经常看到一个选项叫做抗锯齿。什么是抗锯齿?以这个三角形为例,显示器上的像素是按网格排列的呈正方形,当屏幕上出现对角线或者曲线时物体边缘就呈现出锯齿状。游戏时为了保持透视关系,大量的模型线条抗锯齿关闭。会在你移动角色的时候变得扭曲。
为了减少这些锯齿状边缘的出现,GPU采用了一种称为超采样抗锯齿的技术,叫做Surface Normal法线。将每个像素额外分布16个采样点,采集边缘状态,将边缘颜色淡化。所以下次再玩游戏时,如果显卡支持,一定记得把抗锯齿打开,获得更好的画质。
另外还需要告诉你的是,GPU会对游戏中的每一帧进行顶点着色、光栅化和片段着色计算。以每秒120帧的画面来说,整个过程只需要8.3毫秒。这样看来,是不是你的显卡也挺累的。
·最后再来讲讲片段着色。把场景中模型的每个三角形简单上色是远远不够的。为了使场景更加真实,必须考虑光照方向、光照强度、相机的位置反射以及其他物体投射的阴影。如何解决这个问题?回答问题前,如果你对这种动画科普感兴趣,可以下载左下角的抖音精选ID进行观看。游戏里面的合集广场都是优质的长视频合集,赶紧下载体验一下。
言归正传,片段着色的基本原理和现实一样。如果一个表面直接对着光源,比如太阳,那么它的颜色会更亮。而如果一个表面与光垂直或背离,它会变暗。
为了计算三角形的着色,有两个关键的细节需要知道。首先是光的方向,其次是三角形表面朝向的方向。以火车为例,组成它的许多三角形都面向不同的方向,垂直于这个三角形的方向就叫做法线。通过计算法线与光源之间的角度,就可以获得准确的明暗关系。
当场景中存在多个光源时,GPU会对不同的光源方向和强度执行多次计算,然后把值相加,多光源将会多出很多计算量。因此,游戏场景通常限制独立光源的数量,并限制光源的影响范围。
但片段着色还会产生新问题,模型的每个三角形都只有一个法线,因此每个三角形会在同一个表面上呈现相同的颜色,这样在曲面上看起来相当不真实。为了着色更加平滑,把三角形法线改成每个顶点的法线。顶点法线通过计算相邻三角形的法线的平均值得到,这样每个像素都将成为法线的一部分,颜色就变得平滑了。
