正文内容 评论(0)
从DX10技术看未来显卡的架构和游戏的趋势
众所周知,目前的GPU仍然严格的划分了两个区域来存放Vertex Shader(顶点着色器,简称VS单元)阵列和Pixel Shader(像素着色器,简称PS单元)贴图流水线,GPU会按顺序处理两种数据,对于功能相仿的VS和PS单元来说,这无疑是一种资源冗余,而且这也加重GPU的设计难度及成本。

『ATI为Xbox 360设计的Xenos芯片已经采用统一渲染架构』
传统的GPU因为采用了分离式的架构,所以经常会出现数据分配问题,极大的影响了渲染效率。而DirectX 10中最大的改进便是引入了统一渲染架构(unified shader),所谓统一渲染架构,最容易的理解方式就是Shader着色单元不再分离。

在传统的渲染方式中,因为游戏画面的渲染内容不同造成的PS、VS单元负载不同已经不复存在,无论几何图形过于复杂、或者像素渲染过于复杂,GPU都能有效的合理分配处理单元,有效的分配硬件资源。全新的整合图形架构GPU会计算游戏画面的Shader数据类型,从而灵活的调配Shader单元进行不同的数据类型运算,达成资源的合理利用,有效的提高GPU的运算效率。

『Dircet X各个版本开发者可用硬件资源的汇总』
像素渲染已经成为现今游戏引擎的一个性能瓶颈,下面有一个关于渲染指令在游戏中采用频率的统计结果,从中可以看到:几年来渲染指令已经在游戏中被越来越多的采用。自从微软2001年于DirectX 8版本的API中导入可编程的渲染引擎后,渲染处理开始在游戏中变的非常普遍,而渲染指令的复杂程度也在以每年1.8倍的速度增长。
游戏的shader处理大幅度增加,几年走势分析
更多对3D游戏中的渲染处理详细调查报告表明:渲染的复杂程度不仅在逐渐的增加,就连它们的渲染方式也在发生改变。渲染指令大致可以分为两个类别:
从显存中拾取数据的纹理操作。
完成数学变换的算术处理操作。

『统计表明目前基本所有的3D游戏都应用了可编程的渲染』
早期的渲染处理是粗略的把渲染资源平等的分配给上述两种类型的渲染指令,但近来的分配给算术处理操作的渲染处理资源比重越来越大,在最近的游戏中,这个平均的比例是算术处理操作:纹理操作=5:1,从许多下一代的3D游戏设计蓝图看来,这个比例还有继续往上增加的趋势。
在另一些对现今3D游戏的研究报告中指出,大部分的像素处理过程都是双线性过滤操作或者从整数纹理中进行点取样,并没有纹理查找的过程,这些渲染操作都能被纹理处理单元在一个或更少的时钟周期内执行,而剩下的像素处理操作则是三线性过滤、各向异性过滤和浮点指令纹理查找过程,这些操作将被安排在超过一个时钟周期后执行。
在算术处理与纹理操作之间一个很重要的差异就是:纹理操作过多依赖显存容量和带宽这些外界因素,当在显存容量和带宽不够用的情况下,去增加更多的纹理操作单元对纹理操作性能的提升并无帮助;而算术处理操作则不同,它的处理能力并不依靠这些外界因素,仅取决于在GPU中集成的算术处理单元数量。

『图表表明Shader数据量的增长速度远大于纹理』
程序中的纹理是一个可以加以利用的重要技术技巧,首先我们可以通过加上相应的约束参数把像素渲染程序用来生成算术地纹理,通过这样来变相的减少用于存储纹理数据的必需的显存容量和带宽;除此之外渲染程式还可以用来添加变化和现有纹理的细节,以此来减少存储于显存中不同纹理模板的数量。这两种运用的技巧虽然过程不同,但都异曲同工,用来降低纹理操作对外界因素的依赖,减少对显存容量和带宽的需求。
当CPU已经成为渲染速度提高的瓶颈时,GPU越来越强的渲染处理能力已经开始在共享原本属于CPU的工作量,例如在粒子系统、纺织物、流体流动这些物理仿真动作在处理器处理不过来时,就会被映射到GPU的工作列表中,使用GPU强大的渲染能力来处理。不过,这些从CPU处理列表中转移过来的资源毕竟远离标准的图形绘制范畴,所以更多的渲染处理能力被用来搭建负载平衡系统,去提升整体的帧渲染速度。
3:1的像素/纹理方案,ATI提供的最佳比例
面对像素处理的大幅度增加,两家最大的图形公司NVIDIA和ATI出现了分歧,对于总体问题上的认识,两家公司的态度是一样的,但是NVIDIA坚持将“像素处理器/纹理处理器”的比例约束在2:1的比例上,但是ATI的做法更为激进,在最新的产品中,ATI始终提供“像素处理器/纹理处理器”高比例,也就是3:1的比例,从游戏的发展趋势来看,这个比例更为贴切。

除了这个理由,ATI的工程师还有另一个理由来说明这种比例的优势,那就是每个频率可以获取的带宽比例在下降(R300时是3:4、R580是7:8),纹理处理的消耗量其实是在增加的,这点是确定的(分辨率的提升、纹理的精细化),但这并不是纹理单元增加的理由,更合理的搭配才是最正确的选择,一味的增加纹理处理单元只会增加对带宽的占用,从而成为反面因素。
从最新的游戏来看,像素处理单元遇到的带宽瓶颈越来越大,ATI于是决定将这个比例控制在3:1,这样可以满足足够的像素处理带宽,至于纹理单元,虽然有增长的趋势,但是相对像素处理仍然是非常缓慢的。

