笔者注:
笔者作为一个技术宅,经常会有人问起关于显卡选购方面的一些意见。虽然笔者可以不厌其烦的为他们解释,但是视乎每个人的理解能力与接受程度的不同,也不乏有碰钉子的时候,诸如“别人说大显存就是好”,“你让我花更多的钱买这个显存这么小的不会是坑我吧”这样一类的话,着实是让笔者感到难过。第一,是朋友来问我选购意见的,那么多少应该尊重我的建议吧,为何将别人说的摆出来?第二,既然你认为我能给你最专业的意见,为何最终相信别人说的,还是买了大显存低核心的显卡?内心种种的不忿与无奈均化作了这次笔者希望写出的小型连载文章——浅谈游戏显卡的选购。笔者也将会以更直白的形式将该类问题给出客观易懂的解答。因为如果将该类问题充分展现并以最专业的形式写出来,那么可能会涉及到非常广的知识面与关联问题。
由直线构成的圆
在建模篇里,我们首先要理解我们在游戏中观看到的三维图形,到底是怎么出现的。在我们存活的世界里,所有的物体都拥有长宽高三个尺寸单位来构成世界,这就是对三维最直接的表述。
在二维图形中(也就是平面),我们以圆作为对曲线的表述例子。直线,是构成平面最基本的元素。圆,是通过许多条直线边组成一个图形,如果圆内嵌的正多边形边数越多,则由这个多边形组成的“圆”更接近圆本体。
这里提出了一个精细度的问题。那么该问题则可以类比到三维建模中去:由于三点确定一个平面,平面则是构成三维中最基本的元素。那么三维中的三角形越多,则精细度越高。下面让我们来看一组图片来理解这个建模精细度的说法。
10分段球体
上图,在3DMAX建模中使用的建立方式是“球体”。但是由于该球体使用的分段(精细度)仅只有10,令这个“球体”让大家难以信服为“球体”。
20分段球体
但是假如在建模过程中将球体的分段提高到20,那么球体已经让人开始感知是一个“球体”,只是表面并不光滑。
50分段球体
同样的方式我们继续改变球体的分段达到50。则该球体至少在远处看起来是一个球体了,只是当我放大该球体的时候它的表面会出现不光滑的情况。
100分段球体
100分段的球体在相同大小的情况下则更为光滑。不过,当笔者无穷放大该球体的时候,终究会有一个放大倍数会让人看出不光滑的情况。注意,这是一个同等大小的对比过程。更高的分段只是让球体在同等大小下看起来更光滑更像一枚球体。最终,它都仅仅由多个确定数量的三角形组成。由上图球体的精细度也不难看出,为此我们需要让计算机在有限的时间内,处理呈几何级数增长的多个小三角形拼接而成的球体!
汽车建模
建模在生活中的应用不在少数,每一款产品的出现或多或少都与建模有所联系。以汽车为例,工程师需要通过三维建模对于汽车的造型进行初步的确立,并通过该模型给予工程师一定的实用建议。在专业领域的建模讲求精确度,其顶点之多则是需要用几分钟去加载并打开一个建模。但是如果在家用游戏领域中即时演算一个建模需要几分钟时间,你还会玩这么一个游戏吗?
人体的三维建模
因此,关于游戏中的建模是和时效性挂钩的,并不是说用不着精细的建模,而是我们必须根据现有的图形处理性能与建模来找到一个精细度与演算效率的平衡点。
1996年发售的《古墓丽影1》
当年图形处理性能效率并不高,现在回首《古墓丽影1》这款3D游戏不得不说实在是丑爆了!人物建模基本上可以以块状来形容。我们在文中讨论的“三角形”组成面在该游戏中用手指都能数出来,这就是当时性能与建模精细度之间不得不接受的妥协。
现在的精确人物建模
显卡中对于三角形顶点的处理单元位于显卡核心。在DirectX 10时代之前,顶点引擎与像素引擎均是分开的。在DirectX 10时代开始,英伟达公司将其统一为“统一渲染引擎”。也就是当年需要分开独立工作的两个单元合并为一体,通过性能分配则可执行两种处理任务。这么说的意思在于,其实关于建模的图形处理,和显存没有任何关系。所有工作都是在显卡的处理核心完成的。
显卡核心
更直白的说法,如果一条流水线代表着一个公司的生产能力(图形核心),仓库代表着这个公司的储备能力(显卡显存)。那么即使没有仓库,这个公司也是可以生产产品的(图形处理)。至于为什么图形核心需要搭配显卡显存去进行工作呢?请关注我们下一期的文章《小型连载——浅谈游戏显卡的选购:贴图篇》。