MCPLive > 杂志文章 > 从曲面细分看GPU图形和游戏的发展

从曲面细分看GPU图形和游戏的发展

2010-06-02望穿秋水《微型计算机》2010年5月上

传统GPU应用的困局—几何性能停滞不前

看到这里,有读者可能会说,个人电脑也可以增加建模的精细程度,使用更多的三角形来完成图形构建,依然可以实现精细的画面—真的可以吗?

前面我们提到,目前3D游戏中的场景建模,依旧主要依靠CPU计算完成,GPU只是起辅助作用。但当下主流CPU计算能力难以承担大规模的三角形计算,即使多核心CPU发展如此迅速,但短期内我们不可能看到一个场景模型使用几千万个三角形的情况出现。不仅如此,PCI-E总线的限制,也令CPU难以迅速和GPU交换海量的图形数据。因此,游戏开发商们只有使用比较简单的几何结构来表达创意和想法。

正因为此,技术人员将更多的目光转向了GPU。如果赋予GPU足够的自由度,在程序员的控制下让显卡能够自由为图形添加几何元素,比如框线、三角形等,这样就能在一定程度上“投机取巧”,增加模型的细腻程度,让后的图形看起来更为真实、更为细腻。


从GeForce FX5800开始,到GeForce 6800 Ultra以及后期的
GeForce 8800 Ultra,显卡的几何性能都有一定增长,但并不显著。

不过这种想法在长时间内都只是镜花水月。因为一直以来, 无论是玩家、厂商以及游戏制作公司,都极为重视画面的光影效果,比如HDR、柔和阴影、次表面散射等和像素计算相关的特效被反复被强调,这些效果的确对画面的改善更为直接,为游戏画面带来了更为精细的光影效果、更为精确的色彩过渡以及更完美的纹理表现。相对而言,GPU的几何性能就不那么受人重视。再加上过去建模等工作主要依赖于CPU,因此GPU只设计了一个前端控制电路模块来进行辅助几何性能的计算,几何性能发展非常滞后。这为游戏带来了另一方面的软肋—模型不够精细。这种不够精细的模型对画质的负面影响甚至已经超过了大幅度增强的像素处理能力带来的正面影响,毕竟没有人愿意看到精美的人物皮肤纹理下面是多边形棱角明显的头颅。

另一方面,即使有人意识到了这个问题想加以改善也找不到合适、通用的API接口进行相关设计。在DirectX 10 API之前,几乎所有的DirectX API都没有对GPU几何运算进行优化。一些厂商虽然有自己的解决方案,但鉴于技术能力和应用范围的问题,终究没有推广开来。

有数据表明,从GeForce FX 5800到GeForce GTX 285,GPU的几何性能增长只有三倍左右。相比之下,后者的像素处理能力几乎是前者的150倍!另一些测试数据表明,GeForce GTX 280相比GeForce 8800 GTX,几何性能几乎没有增长。而之前GeForce 7900 GTX到GeForce 8800GTX,几何性能有增长,但也不足够显著。


DirectX 10的几何引擎第一次带来了真正意义上的通用的几何处理规范

这一局面终于在DirectX 10 API上得到了改善。在DirectX 10发布后,其新加入的几何引擎就引起了众多厂商和玩家的注意。这说明API已经为单独的几何处理留出了空间。DirectX 10内含的几何引擎强大之处在于,它能够根据顶点处理单元的数据以及其它控制数据,自主地生成大量图元。几何引擎可以独立生成五种类型的图元:点、线、三角形、带邻接点的线、带邻接点的三角形。这五种类型的图元完全可以满足计算机进一步优化图形并增加新细节的需求。打个比方来说,CPU和顶点处理单元“造”出了一棵“原始树”,几何引擎就能根据这颗“原始树”,通过微调数据,自主生成一片“森林”。当你去考察这片“森林”中的树木时,你会发现这些树木甚至都存在着微小的差异。只要计算足够精细,几何引擎完全可以让所有的树木都不一样。

这样的结果就非常激动人心了。我们知道,好莱坞电影之所以震撼,是因为在原始建模的过程中就采用了足够庞大、极为精细的模型。在3D游戏里面,虽然我们尚不能采用如此“暴力”的计算方法,但几何引擎以及几何处理应用的出现已经为3D游戏打开了一个通向更细腻画面的捷径—GPU可以“半自主”生成批量的重复单元和物体,如果应用得当,将会极大增强画质,并显著改善场景的真实程度。解决方法已经有了,但GPU却尚未准备好。从实际的性能来看,GeForce 8800 GTX、Radeon HD 2900 XT级别的显卡仍然采用过去单一前端模块的设计来进行几何计算,几何处理能力极为有限,在面对重负载的几何处理时性能下降非常明显。因此在DirectX 10时代,几何处理尚未大规模走上前台。

分享到:

用户评论

用户名:

密码: