Yesky首页| 产品报价| 行情| 手机 | 数码 | 笔记本 | 台式机 | DIY硬件 | 外设 | 网络 | 数字家庭 | 评测 | 软件 | e时代 | 游戏 | 视频 | 壁纸 | 群乐 | 社区 | 博客 | 下载
您现在的位置: 天极网 > 硬件 > 显卡 > 虚拟世界由此开始 追逐3D世界的脚步
全文

虚拟世界由此开始 追逐3D世界的脚步

2005-09-17 21:49 作者: 刘泽申 出处: IT世界 责任编辑:>召

第五页:虚拟现实,由此无限

  2002年Microsoft DirectX 9发布,和之前的所有DirectX不同,DirectX 9的Direct3D9部分所包含的标准和生命力将会远远超过它的前辈。Microsoft在DirectX9中首先就将老旧的T&L单元彻底去掉,代之以更强的Vertex Shader 2.0,此时用于象素处理的Pixel Shader也升级到了2.0版本。这次的Shader Model的升级绝对是飞跃性的。

  Shader Model 2.0在编程灵活性和性能方面远远的抛离了Shader Model 1.0。而笔者认为,Shader Model 2.0最大的进步在于引入了浮点格式。要知道对于以前只能支持整数的GPU来说,在进行一系列的图形操作之后将会产生巨大的误差,从而阻碍了图形效果的进一步发展。与此同时,只能使用整数的GPU也无法在对精度要求较高的DCC类软件中大显身手。到了DirectX 9时代这些限制终于被打破!值得一提的是,DirectX 9标准在制定的时候已经非常具有前瞻性,因此DirectX9的寿命会非常长,或许它需要几代显卡的更迭才能让其显得落后。

  DirectX 9对于图形学另外一个巨大贡献是引入了成熟可用的HLSL(High-Level Shader Language,高级着色语言)。在上面的文章中我们已经谈到,对Vertex Shader和Pixel Shader进行编程,需要使用GPU那类似于汇编那样的指令集体系。这样的指令集尽管能快速准确的“指挥”GPU,但是开发的复杂度和难度相当大。和其他所有计算机语言相同,Shader指令集也正不断向高级发展。Microsoft制定的HLSL便是使用高级语言来进行Shader编程和控制GPU,HLSL从整体上看来非常类似于C/C++语言——这也是游戏设计师们所熟悉的。与对CPU编程最大的不同之处在于HLSL的最小的数据吞吐单元是一个由32位浮点数组成的四元组。这完全符合GPU的高效工作要求,要知道3D世界中无论是颜色(RGBA)还是坐标(XYZW)都是四元组。

一个典型的HLSL语言编写环境

  通过DirectX9中包含的HLSL,游戏设计师完全不需要理会理会寄存器的分配、寄存器读端口限制、并行处理指令等繁琐却要命的硬件细节,从而可以加快游戏的开发速度和质量。HLSL的引入也极大的加速了DirectX9游戏的普及。

  除了微软倡导的HLSL,OpenGL ARB也推出了GLSL来与之抗衡。NVIDIA则更是融合HLSL和GLSL开发出了C for Graphics,简称Cg。从硬件到软件,DirectX9和OpenGL总算是给我们提供了坚实的平台,让我们扩展无限的虚拟空间。

  那谁会第一个推出DirectX 9图形卡?NVIDIA在Geforce4 Ti热卖的时候曾经预计消费者们并不十分迫切需要DirectX9图形卡,而3D游戏制造商也不可能快速拿出DirectX9的游戏,于是放慢了DirectX9图形卡研发的脚步。可惜NVIDIA这次的预测错误了,Geforce4 Ti上市不到半年,NVIDIA的恶梦悄然降临。

  2002年7月17日ATi Radeon9700 PRO图形卡突然问世,作为第一片DirectX9图形卡,Radeon9700PRO的设计产生了绝对的震撼!彻底抛弃T&L之后Radeon9700 PRO配置了4个Vertex Shader,同时象素流水线部分也增加到了8条。与此同时为了满足GPU需求ATi采用了256bit交错显存控制器设计。如此惊人的设计使得Radeon9700 PRO在测试中获得2倍于Geforce4 Ti的性能,同时支持DirectX 9的特性也让ATi在后来占尽风头。

  NVIDIA随后推出了GeforceFX仓促迎战,可惜由于保守的设计理念和在新制程上遇到障碍,NV30仅能通过极高的频率勉强压制Radeon9700 PRO。就在GeforceFX发布后不久,ATi竟然又推出了R300改良版——Radeon9800 PRO。这片显卡通过更高的显存和GPU频率再次打压NVIDIA GeforceFX图形卡,在随后的1年多时间内,NVIDIA遭遇了前所未有的挑战和压制,ATi终于坐上了图形卡市场老大的宝座。

  忍辱负重一年多后NVIDIA的NV40研发完成大量上市,这片叫做Geforce6800 Ultra的图形卡首次支持Shader Model 3.0和内置了16条流水线。你无法从Geforce6800身上找到任何GeforceFX的影子。正如许多分析家指出“Geforce6800和GeforceFX简直不像是一个公司的产品。”NVIDIA在Geforce6800发布时还大力宣称NV40的超标量体系架构,事实上在GPU指令吞吐量测试中NV40的成绩非常显眼。

小知识:什么是超标量体系

  超标量体系指的是处理器内部集成几条功能和特性完全相同的执行流水线的体系结构,借此提升处理器指令吞吐量和执行效率。 超标量体系结构不清楚指定需要并行处理的指令,而是使用动态指令规划,根据处理器可用的资源,数据依赖性和其他的因素来决定哪些指令要被同时执行。超标量体系结构已经长期用于绝大部分的通用处理器中Pentium、PowerPC、Athlon都是超标量体系CPU。

  作为应对,ATi自然也有了Radeon X800系列。可惜Radeon X800系列缺少了Shader Model 3.0支持和对HDR的支持加上较高的频率,最终导致良品率较低无法与Geforce6800系列并驾齐驱。从体系架构上来说R420只是R300架构的纯粹扩大版,缺少必要的创新。

  随着Geforce6800和Radeon X800的大行其道,人们在一夜之间发现几乎人人都在谈论HDR。那些打开HDR功能的游戏画面也一致获得人们的赞叹。HDR是什么?它能干什么?我们可以借此机会深入。

DOOM III HDR

  HDR是High Dynamic Range的缩写,直译过来就是高动态范围的意思。在日常生活中我们经常遇到这样的情况:突然从黑暗的房间中走到阳光下,眼睛会无法睁开;清晨阳光会穿透窗帘像光柱般照射入房间;反光度较高的物体在强光下会在周围产生光晕。以上这些生活中随处可见的现象在有HDR以前无法在3D世界中呈现!最大的原因就在于我们使用8~16bit来表现Alpha通道。

  16bit的Alpha通道还意味着整个画面从最暗区到最亮区的对比度只有1:65536!根据Dynamic Range=log10(Max Intensity/MinIntensity)公式我们可以得知即便使用16bit Alpha通道也只能获得4.8(正确标示为48db,下同)的动态范围。而人眼的动态范围大约有9.0。这点动态范围相对于人眼观察到真实现象来说差太远了。

Far Cry HDR

  使用8~16bit来表现Alpha通道还有个无法克服的问题在于采用整数对明暗值进行计算,无法表现细微的亮度变化。于是精度更高的用FP16(对应64bit)、FP32(对应128bit)浮点来表示亮度变化的HDR诞生了。通过保留更多的小数位HDR显著的降低了GPU内部的运算精度,同时还能获得极高的动态范围。理论上HDR最高动态范围能达到760db!HDR的引入能够使人们在屏幕上看到更多的亮部和暗部细节。

  目前很多游戏制造商和NVIDIA Geforce6 GPU都采用了由卢卡斯工业光魔(Industrial Light & Magic)公司开发的OpenEXR HDR算法,这样的算法能够让Alpha通道依然保持16bit。但却创造性的是用1个bit来表示光照强度的指数、5个bit来存放指数值而剩下的10bit则都用于存放色度坐标值。这样一来即使是FP16运算精度都能获得9.0的动态范围!

OpenEXR HDR

  HDR计算需要耗费极大的GPU资源,即便是Geforce6800 Ultra也会不堪负重。为了提供更为强悍的性能同时先发制人,NVIDIA在2个月前推出了Geforce7系列GPU。其中拥有24条象素流水线和8个Vertex Shader的Geforce7800 GTX再次让NVIDIA获得失去许久的王者称号。除了流水线的增加,Geforce7800GTX在对HDR的计算和GPGPU的支持方面也更进了一步。

  更强大灵活的可编程能力,更速度和高精度的3D运算是DirectX9时代的终极追求。对比十一年前的3D画面,你将会被图形技术的爆炸性发展所震撼——可这一切才刚开始!

欢迎订阅天极网RSS聚合资讯:http://www.yesky.com/index.xml