DX10不再遥远!亲身体验DX10技术特性
NVIDIA的G80核心是首款也是目前唯一一款支持DirectX 10的GPU,NVIDIA共发布了基于G80核心的三款显卡产品,其中平价版GeForce 8800GTS 320MB的推出,让国内很多用户都率先享用到了G80的强大性能。本月17号,NVIDIA支持DX10的中端G84和低端G86核心即将发布,相信很多中端玩家都是期待已久了!
不知不觉半年时间过去了,DX10显卡已经发布多时,但可惜的是没有DX10游戏可玩。G80的架构如此先进,规格如此强大,DX10和SM4.0的特性如此诱人,而拥有G80的朋友却无法亲身感受DX10的魅力,这不能不说是一大遗憾!
为了让玩家能够体验到DX10的技术特性,同时也为了展示G80的先进架构,NVIDIA发布了业界首款DX10演示Demo:Cascades,其最低要求是GeForce 8800显卡,必须在Vista系统下以DX10模式运行。这个DEMO主要是体现G80 DX10的粒子、位移贴图能力,SM4.0模式下的几何着色以及细致入微的纹理贴图。
除了这款华丽的DX10 Demo之外,NVIDIA稍后还放出了基于GeForce 8架构的DX10 SDK(Software Development Kit,软件开发工具包)Code Samples,里面包含了大量的DX10模型实例,这些小场景虽然无法同Cascades Demo相提并论,但每一款实例都代表了DX10 API的一个崭新特性,可以说是一本教科书式的DX10特性教材。
下面就通过这些DX10模型,来亲身感受一下DX10究竟能给我们带来什么样的视觉刺激?
NVIDIA在官方网站上提供了Direct3D SDK 10 Code Samples的免费下载,如果您拥有8800显卡,并且安装了Vista操作系统,那么就赶快去下载一个,在自己的电脑上感受DX10的威力!
点此直接下载NVIDIA DX10 SDK Samples,文件大小256MB,包括所有的20个DX10模型。在安装之前确保显卡驱动更新到了最新版。
这个开发包主要提供给游戏开发或者图形编程人员,以便调试和运行各种程序,并在此基础上进行二次开发。不过对于游戏玩家来说,我们可以把它当作是简单的DX10 Demo,来浏览欣赏DX10的图形特性。
上图就是软件的运行界面,非常简洁直观,直接单击右侧图片就能够启动程序,进入实时演算画面。下面就简单介绍一下几款比较有特色的DX10实例。
● 可爱的小猫——全新的几何着色毛发渲染模式:
过去,Pixel Shader是专门处理像素的,Vertex Shader是专门处理多边形顶点的,而Geometry Shader就是DX10中新加入专门用来处理场景中的几何图形。Geometry Shader可以根据顶点的信息来批量处理几何图形。它可以将点、线、三角形等基本的构图元素连接起来,创造出新的多边形,并快速的将这些处理结果传递给其他Shader或显存,并且这个过程无需CPU参与。
Geometry Shader的核心任务是连点成线,因此它非常适合用来处理细小、但是数量又极其庞大的毛发、小草等物体渲染。NVIDIA通过这个可爱的小猫提供了运用Geometry Shader创建毛发渲染的模型。
● 精美的弥勒佛雕像——128Bit浮点精度HDR光照:
DX9C API当中FP16(16Bit浮点)HDR成为了事实上的标准,但由于会占用到原本属于MSAA的缓冲区,由此导致HDR和AA水火不容。在DX10 API当中引入了两种全新的32Bit HDR模式,这些新的格式使得纹理能够与原来占用同样多的显存空间,避免了大的缓冲区和带宽消耗,HDR和AA再无任何瓜葛。G80完全支持每通道32位(4个通道加起来128位)精度的浮点数HDR。
在这个可爱的弥勒佛雕像实例中,右侧提供了四种典型的HDR模式,最低8Bit最高32Bit,通过更改模式您可以非常直观的感受到什么才叫作真正的高动态范围光照——高亮意味着强烈的明暗对比反差,而不是整个屏幕都发亮!
当然,场景中灯光的亮度以及弥勒佛自身透光度都可以随意调节,NVIDIA的任何一款Demo都具有很强的互动性!
● 16x CSAA的教科书:
大家都知道G80最高可以支持16xCSAA,所以这个实例就没有必要多做介绍了,它就是一个简单的画质对比。
值得一提的是,由于G80核心拥有多达24个ROP,而且显存带宽非常充足,因此打开高倍AA之后的性能损失也是可以接受的。
● 火星地表精密渲染——完美、高效的各项异性过滤算法:
● 庞大规模的独立景物渲染:
现有的DX9游戏都不敢在同一屏幕内设置太多景物,因为这样会导致GPU资源消耗殆尽,而在DX10模式下,有了几何着色和顶点着色的相互配合,一切都会变得相当简单:
在以前一个场景中,同样的3D模型会被多次渲染成不同的物体,这样的物体被称为“实体”(instance),而Instancing可以让这些“实体”只渲染一次,这大大提高了Shader的效率。此前场景中每一个模型的几何建模都需要GPU来进行渲染,但如果利用“Instancing”功能,程序员定义一个模型构建的多个“实体”,这些实体通过顶点着色被编译成不同的几何目标。例如:在一定频率下,顶点频率流分配器可以读取动态数据(例如生气表现的渲染数据)和使用一样的几何模型数据来描述一位士兵,但渲染军队所有士兵时不再是采用完全克隆的渲染方式,每一个士兵都有唯一的外观和表情。这在过去需要用很多指令才能实现的效果变得轻而易举,大大方便了开发人员的工作应用,也减轻了CPU和带宽的负担。
● 物理加速技术——布料访真、烟雾:
DEMO的场景非常简单,在空间内有三颗蛋,一片布料在随风飘扬,可以设定风向和风量,然后通过鼠标在空间内移动,布料就会与蛋出现摩擦接触现象,与现实情况高度吻合!
这个实例演示了烟雾喷向雕像时产生的气流干涉现象。
在NVIDIA提供的白皮书内,记录了非常详细的布料和烟雾模型的渲染方式和建模方案。主要通过利用顶点纹理和几何三种着色模式的搭配。
● 暴雨天——用几何着色来挤压雨滴模型:
这个实例可以手动控制风向从而改变下雨的倾斜程度,设定为毛毛细雨或者是倾盆大雨,总之就是现实生活中可变的下雨天气。
雨滴使用传统的纹理结构,经过预先计算好的点光源照射,雨的大小主要依靠几何着色改变雨滴轮廓,简单的说就是“挤压”雨滴的模型,让它变成长线或者是小颗粒,从而形象的反映出下雨的大小程度。道理和毛发渲染基本一致。
DX10 SDK Samples还有很多比较有趣的模型,这里就不一一介绍了,通过前面几个比较经典的模型来看,的确是完全发挥出了G80在某一方面的技术特性,是一个非常生动的技术教材,值得G80用户尝试!
Geometry Shader的出现使得游戏开发人员可以设计出更为复杂的烟雾、毛发、爆炸、天气等效果,并且游戏场景中的模型可以设计的更为细腻复杂。因此,从已经曝光的几款DX10游戏的画面来看,的确比DX9有了质的提升,但是一切的一切都对DX10游戏编程提出了更高的要求,而且对GPU都提出了更恐怖的要求,由此就导致了DX10游戏集体跳票,R600都跑不动DX10游戏的悲惨局面: