泡泡网显卡频道 PCPOP首页      /      显卡     /      评测    /    正文

成就3D图形霸业!NVIDIA历代显卡回顾

V>
 
    众所周知,近些年来,在游戏软件方面,游戏中的数值计算操作所占的比重就越来越大、远远高于纹理操作,这是什么原因呢?我们知道,早先3D游戏提高显示效果主要是以提高多边形数量、纹理层数、精细度、以及使用一些特殊的贴图来实现的。从DirectX 8开始引入了可编程着色管线概念后,游戏编程的方式就有了很大改变,游戏开发中,为了更真实的模拟现实世界,应用了大量的数值计算,通过求解很多工程计算中常用的数学方程来实现对逼真的3D效果。

{imageTitle}
 
算术操作比例大大增加

    例如,电影特效和游戏中广泛应用的水面模拟就属于计算机图形学中的流体模拟,过去工程计算常用、较为复杂的NSEs(navier-stokes equations)也开始被用于互动娱乐软件的开发,当然,2D波方程因为计算量较小而应用的更广泛。对游戏中光线的模拟也是如此,例如有些游戏中使用了Radiosity方式的光照贴图,就包括了对光传输方程的求解。还有去年开始大规模的普及的HDR特效,其中在色调映射这个步骤中,也使用了三个计算密集型的数学方程,包含大规模的算术操作。另外物理引擎的大规模采用,如现在使用广泛的HAVOK物理引擎,也使游戏中出现了不少动力学方程。总之,这些都使得游戏中数学计算的比例越来越高,未来游戏也会和目前的通用计算相似,依靠更多的数值计算来提高3D显示、物理效果。

{imageTitle}
 
HDR渲染中的色调映射包含大量的数值计算
 
    在硬件方面,自从NVIDIA在NV20中引入可编程的SHADER处理单元后,GPU的发展就进入了一个崭新的时代,SHADER单元所具有的强大并行计算能力也使GPU的数学运算能力大幅度提高。特别是NV40对于SM3.0完整支持以及可以进行FP32浮点计算,可编程性能(各种分支操作,包括循环、if/else、重复、子函数调用)的大幅度提高及运算精度的提高,更使其具有了明显的流式信息处理器(stream processor)特征。
 
    目前的图形核心已经发展成为具备强劲并行计算性能并且编程方便的处理器。GPU不但提供了巨大的存储带宽和计算能力,也把运算提升到了浮点的精度(对现在通用计算来说,浮点精度是必须的条件),所以能够将现代的GPU看作是一种通用的流式信息处理器(stream processor),它完全适用于对任何流信息模型进行处理。
 
 
{imageTitle}
 
一种流处理器核心结构图

    由于GPU强大的并行处理能力,它的数值计算性能上大幅度超过同时代的CPU,因为后者更像是一种控制密集的型的处理器,并且拥有大量的CACHE。如Intel Xeon微处理器集成了1.08亿各晶体管,但是60%应用在CACHE上。而GPU则把大量的晶体管应用在算术逻辑单元(ALU)上,其不具有大容量的CACHE,直接在芯片上利用临时寄存器作流数据的操作。
 
{imageTitle}
 
基于CPU与基于GPU运算效率对比(越短越好)

     应用GPU进行数值计算的研究很早也就开始了,图形处理的并行性以及可编程功能一直是图形硬件发展所追求的目标。上世纪80年代出现的Pixel Planes 系列图形系统就可进行二次多项式的并行计算。进入新世纪后,2001年GeForce2的Texture Shader+Register Combiner就被用于求解扩散方程,2002年具有可编程Shader单元的GeForce3出现后,也被用来进行矢量、矩阵的基本代数运算,及求解有限差分方程组。
 
    未来,GPU将被越来越多的应用到传统图形处理以外的数值计算上,更多的基础数值算法也将被移植到 GPU 上,随之产生各种实时交互的模拟应用,比如对流体、光线物理行为的交互模拟,成为计算机科学的一个新兴领域。
 
    上面简单介绍了游戏发展的趋势以及现今GPU的特性,那么作为游戏程序与GPU之间的沟通桥梁,DirectX又有哪些发展呢?下面也简单介绍下新一代DirectX10的特点。
 
{imageTitle}
 
DirectX10的崭新架构
 
    DirectX10中引入了统一渲染架构,不再有的Vertex shader和Pixel shader的区分。这主要是在实际的游戏中,vertex shader和pixel shader的需求比例相差不小,由于过去GPU中的vertex shader和pixel shader的比例是固定,不够灵活,限制了开发人员自主创作的空间,也使GPU运算资源被浪费的现象时常发生。在统一渲染架构中,顶点和像素处理可以同时进行,而过去必须先进行顶点处理。所以,处理的并行性也被提高。
 
{imageTitle}
 
统一渲染架构的优势
 
    在DirectX10中,Shader Model 也发展到了SM4.0。Shader Model 4.0中引入了几何着色器(Geometry Shader),第一次允许程序在图像处理器中创建新数据,意义在于使GPU可以能够制造新的几何体,添加新的三角形,变成了既可处理又可生成数据的处理器,从而减轻CPU的负担。在游戏中,诸如dynamic cubemap(动态立方体贴图)、displacement mapping(置换贴图)、stencil shadows(模板阴影)等技术都需要由CPU来生成新的对象,而在DirectX 10体系中,GPU自身即可单独完成画面渲染,Geometry Shader甚至具有直接Render to Cubemap的能力,可以有效降低CPU负载。
{imageTitle}
 
    另外,Shader Model4.0的寄存器资源也大大提高,临时寄存器增加到4096个,常数寄存器增加到65536个,内插值寄存器采用16/32规格等。由于程序中的shader代码越来越长,SM4.0也引入了Switch 语句,使GPU的可编程性进一步提高,让程序员能过编写出更简洁、执行效率更高的程序,同时也可以产生效果更逼真的特效。关于DirectX10的新特性还有很多,由于篇幅关系,此处不再赘述。
 
{imageTitle}
<
2人已赞

关注我们

泡泡网

手机扫码关注