为王位而生 GeForce8800全面解析测试
● 第六章 第二节 G80统一渲染/DX10架构的特色
在G80的架构中,超大规模的流处理器并不让人意外,最令人感到好奇的是纹理单元达到了64个,另外几何着色器也是一个新的词汇,下面着重介绍这两部分。
- G80为什么需要多达64个纹理单元:
通过以往的分析我们可以得知,近年来游戏中对像素的运算量逐年提升,而纹理运算量所占比例呈下降趋势,因此NVIDIA坚持使用像素:纹理=2:1的配置,而ATI更是采用了3:1的配置,并且声称当前主流游戏已经达到了5:1甚至更高的比例。
然而在G80核心中我们可以看到NVIDIA继续保持了2:1的比例,并将纹理单元数目提高到了空前的64个,这是为什么呢?
原因就在于G80是支持DX10的GPU,DX9时代的某些结论已经不适用了!DX10 SM4.0中提供了全新纹理阵列(Texture arrays)的支持。在每个纹理阵列中,最多可以保存512张同样大小的纹理。而且每张贴图的分辨率被扩展到了8192×8192的超级分辨率。更大的分辨率意味着纹理中更丰富的细节。在一个shader中能够同时访问的纹理个数被增加到了128个,也就是说在每次执行同一个shader时,可以使用一个纹理阵列的512个纹理中的128个。所以说,在DirectX 10中,纹理的多样性和细节程度将会有大幅的提升。当然这也要求GPU拥有更强的纹理处理能力!
上图就是NVIDIA为GeForce 8所设计的三大演示Demo之一Waterworld,必须在Vista系统DX10模式下才能运行,通过这个Demo主要展示了G80完美的纹理渲染效果。岩石表面采用了多种变幻莫测的高精度纹理贴图,这些贴图还可以被流水润湿,即便是将镜头放大N倍,层次感强烈的贴图也不会出现失真的情况。这个Demo结合了G80强大的纹理渲染能力以及高效的全新各项异性过滤技术!
- 进一步解放CPU,几何着色器的作用:
按之前我们的理解,统一渲染架构就是将像素和顶点渲染综合起来交由同一的运算单元处理,不过在G80的架构图中,我们可以看到其统一渲染架构除了像素和顶点之外还包括了几何着色器(Geometry Shader),这是GPU中首次加入这样的运算单元。
同刚才介绍的纹理阵列类似,几何着色器也是SM4.0中新加入的内容,它第一次允许程序在图像处理器中创建新数据。这一革命性的事件使得GPU在系统中的角色由只可处理已有数据的处理器变成了可以以极快速度既可处理又可生成数据的处理器。在以前图形系统上无法实现的复杂算法现如今变成了现实。如此一来类似模板阴影(Stencil Shadow)、动态立方体贴图(Dynamic Cube Map)、虚拟位移贴图(Displacement Mapping)等依靠CPU或多通道渲染(Multi-Pass Rendering)的算法效率提升了很多。
几何着色器可以根据顶点的信息来批量处理几何图形,对顶点附近的数据进行函数处理,快速创造出新的多边形。通过steam out将这些结果传递给像素或者是缓冲区,将CPU从复杂庞大的几何运算中解放出来。大爆炸、粒子效果、瀑布流水、毛发渲染等复杂又关联的场景都可以用几何着色器很逼真的表现出来。
NVIDIA称,GeForce 6 Demo代表作美人鱼Nalu的头发和阴影受限于CPU的运算能力,因此Demo效能比较差,而GeForce 8 Demo代表作名模Adrianne的头发和阴影渲染则完全通过DX10由GPU独立完成,在大幅提高显示效果的同时效能比较可观!