为让女性角色更生动,GPU竟在游戏中做这些事儿——光栅化
在《为让女性角色更生动,GPU竟在游戏中做这些事儿》的文章中,相信很多人已经深入的了解了GPU这个“好色”的硬件为了让游戏中的女性角色变得更加细腻可人,而在几何单元方面做出的杰出贡献。
不过在我们今天要讲述的环节,GPU却又显得不那么怜香惜玉,甚至堪称恶魔。它为了迎合“金主爸爸们(用户)”的现实需要,哪怕好色的GPU还是选择了将栩栩如生的世界压成一张扁平的画面(三维——二维),在这个画面里,没有厚度,一切都是冰冷的。
或许有人会说,为什么要这样,游戏的视界那么精致,而她们又那么迷人,那么……,为什么要将其压成一张张“标本”,其实这一切的罪魁祸首便是我们面前的显示屏幕。不管是超博的机身设计还是超大的屏幕尺寸都局限其只能显示二维的画面。
这一矛盾其实由来已久,自第一台显示器诞生开始,我们的视觉体验方式便决定了图形处理过程的命运,要知道,不管在3D的世界中表现得多么惟妙惟肖,最终输出给人们观看的只能是二维画面。
而在GPU当中,执行这一命令的就是我们熟知的光栅化中最重要的单元——Rasterizer。接下来,就让我们一起看看他是如何压扁“一个又一个世界的”。凝固生命的光栅化在光栅化将3D世界的几何单位转化成为二维画面时,首要考虑的问题便是:线透视关系。
其实有关透视方面的研究在很早以前就有人开始,旨在通过平面画幅将立体物体的图像转化在平面上。与最初利用一块透明的平面看景物不同,随着研究的深入,开始根据一定的原理,利用线条来现实物体之间的空间关系。这种方式,也就成了今天图形渲染工业中Rasterization的基础
至于线透法,则是将物体的每个点全部以连接的方式进行表达,也就是与我们的眼睛相连,接着将平面放置在这些线上,由先穿透平面所构成的投影确定物体在画面中的形态,正是在线透法的加持下,我们才能看到“接近现实的游戏画面”。
所谓的光栅化,其实就是将几何单元构建的立体物体反应在屏幕上的过程。我们在上面提到的Rasterizer单元,做的事情便是破坏原有3D世界中的本质。立体物体的变形之前我们讲到,在几何单位中,每一个点都依靠完整的三维坐标才能存在,但想要让这些点在二维的世界里依旧表现出合理性,就需要对立体物体进行变形:Transform单元。它不仅需要将点固定在二维世界当中,还需要符合透视关系。
这同样是一道数学题,经过计算,所有三维空间的点都可以在保证与观察者也就是摄像机位置存在正确关系的前提下,变成一个没有真实Z轴的二维点。
或许很多人将光栅化理解成为了一种相机拍照的过程,但很显然,GPU没有足够多的晶体管来存放这些“照片”,也正因此,才会有Transform过程,通过坐标变化的方式将一些都引入到数字关系当中。你以为到光栅化就这么结束了?当然没有!!
当构成几何世界的顶点坐标由3D坐标转变为2D坐标后,Rasterizer会创建一个由像素构成的2维平面,之后根据运算结构,将构成模型的定点一一对应到平面的像素点上。在这一过程之外,Rasterizer还需要对物体的位置进行前后判断,以便于将倍遮蔽物体的顶点进行删除(Z-culling)。最后一幅能够投影到2D平面上的画面就由像素构成啦。再把它交给后续的单元进行像素和材质操作,并等待下一个几何物体的到来。
光栅化最大意义其实并非简单的满足二维平面的坐标变化要求,同时还肩负着减轻后期无效渲染的作用。表面看上去,光栅化过程对Z轴进行判断,将看不到的部分进行了剔除,似乎确实做到了减轻后续压力的作用,但要明白,光栅化是建立在模型完全建立,并完成基本光照以及对应纹理操作之后的环节。
这就意味着,由于缺乏足够的Z线检查,并没有办法做到有效减轻无效光照操作负担的问题。好在Deferred Shading技术出现了,它将光照操作的步骤直接转移到整个流水线后端的MRT(多目标渲染)里,并在Compute Shader(DX 11引入)的帮助下,发挥着越来越重要的作用。
以上就是图形渲染当中光栅化的全部过程,可以说,光栅化的作用就在于适应屏幕,将涉及Z值比对的立体向平面坐标进行变换。难道好色的GPU突然转性,变成了一个单纯的恶棍?当然不是,在后续的图形渲染流水线纹理、像素、混合……中,GPU还将一如既然的表现出自己好色的本质,你觉得呢?













