七年磨一剑!DX11之ATI独门绝技全解析
2009年6月3日,ComputeX台北电脑展第二天,AMD放出了本届展会的重磅炸弹——业界首颗采用40nm工艺制造的DirectX11规格GPU,代号为“Evergreen”,也就是传说中的RV870核心。而且还现场展示了运行中的RV870显卡及首个DX11演示Demo,DX11距离最终用户不远了!
AMD高级副总裁Rick Bergman与台积电先进技术市场部高级主管John Wei联手拿出的展示用晶圆被密封在一个纪念相框里,里边的文字是“谨以此纪念AMD与台积电合作推出首个AMD DX11 40nm GPU硅晶圆”,下有台积电CEO兼总裁蔡力行的签名,时间是2009年6月。
此前AMD已经正式发布了首颗40nm GPU RV740,由此证明台积电40nm工艺已开始量产。此次AMD公开展示RV870的晶圆,这就意味着新一代DX11显卡已经设计完成,只待时机成熟即可正式发布。
那么在DX11时代即将来临之际,我们先来深入研究DX11可以带给我们什么,会有DX9C过渡到DX10那样革命性的进步吗?未来的3D世界能精彩到什么程度?
据可靠消息表明,AMD的DX11显卡、微软的DirectX 11 API和Windows 7操作系统将会在同一时间发布,也就是2009年10月至11月间。事实上目前释放的Windows 7测试版已经内置了对DX11的支持:
我们知道,为了强行推广Vista系统,微软在Vista当中捆绑了DX10 API,并限制XP无法支持DX10,于是为了玩最新的DX10游戏,玩家们被迫升级Vista。此次微软在Win7当中捆绑DX11,会不会也限制Vista不支持DX11呢?
答案是否定的,由于Win7和Vista使用了相同的驱动程序模型,因此Vista也能升级支持DX11。另外,Win7无论速度、效率、功能都大大优于Vista,Win7在测试期间所获得的好评远超当年Vista的表现,因此微软没必要使用下三滥的手段强迫玩家升级Win7,相信会有不少人第一时间“自愿”升级至Win7。
事实上,通过对本届ComputeX展会的报道来看,泡泡网友对Windows 7操作系统的期待程度甚至还要高于AMD的DX11显卡。看来Win7和DX11又将掀起一番软硬件升级热潮!
现在我们就来对DirectX 11进行详细分析,严格来讲DX11并不是一套全新的API,DX11是DX10的一个超集,就如同Win7之与Vista。简单的说DX11就是基于DX10开发的技术,主要对DX10的功能一些改进和扩展,并进一步提高GPU的执行效率(听起来是不是跟Win7&Vista的关系很像),当然这个改进要比DX10.1多很多。
DX11能够同时兼容DX10的软硬件,而且不需要像DX9过度DX10那样对驱动程序底层架构做大幅更改。事实上目前Win7和Vista的很多驱动都能互相通用,AMD和NVIDIA也先后发布了Win7/Vista一体化的显卡驱动。
那么DX11相对于DX10有何重大改进呢?DX11最关键的特性有以下五点:
1. Compute Shaders:计算着色器
2. New Instruction Set:新指令集
3. HDR Compression:高动态范围纹理压缩
4. Multi-Threading:多线程
5. Tessellation:拆嵌式细分曲面技术
其中,Tessellation技术相信很多人都有印象,没错,它就是ATI第一代DX10核心R600(HD2900XT)中的一个特殊模块,从HD2000系列开始、到HD3000再到如今的HD4000系列,ATI的每一款DX10显卡都支持这项技术,虽然还没有任何一款游戏能够支持该技术,但ATI依然孜孜不倦的对它提供支持,因为ATI坚信——是金子总会发光的!
终于在DX11时代,微软将Tessellation作为一项重要标准纳入规范之中,这项被埋没多年的技术得以重见天日。那么Tessellation究竟是何方神圣,让ATI技术人员如此执着,微软到底是“禁不住软磨硬泡”、“勉为其难”的吸纳之,还是为其先进的特性所倾倒,欣然接纳之?故事还得从七年前的Radeon 8500系列谈起……
● 2002年R200:Tessellation的鼻祖N-Patch及TruForm
话说2001年7月的时候,微软即将推出DirectX最新的8.1版本,所以就在Meltdown2001会议上把ATI、NVIDIA等一干图形技术公司叫来开会,一起商定DX8.1的一些技术细节。这次会议可以说是图形图像界的“华山论剑”,不光有主办商及核心厂商可以参加,媒体甚至也可以买票入场,票价是650美元,当时著名的八卦网站TheInquirer就参加了这次会议(要不是它我们就不知道这段典故了)。据他们报道,由于技术细节方面的争执比较大,NV和微软的关系搞得有点僵,而且NV拒签当时正在开发的DX9协议。
2001年7月 西雅图 ATI无疑成为了Meltdown2001的主角
N-Patch技术的原理是这样的:GPU在读取了一个模型之后,判断每个三角形三个顶点的法线向量,再根据这三个向量算出插入的顶点的位置。如此一来就能将一个简单的、有棱有角模型通过“差值”的算法实时处理成为复杂的、圆滑的模型,在当时GPU运算能力极为有限的情况下,N-Patch技术可以大幅提升3D模型的细节和显示效果。
NPatch技术非常适合于将一个模型变得“圆滑”。因此非常适合于一些有很多曲面的模型。因为对于曲面的表现,通常的表现方法只是尽量多的使用内割多边形或者外切多边形来模拟曲面的效果。N-Patch技术的巧妙之处就在于算法简单,只要进行多次递归运算,就能将一个面做成一个高次曲面,N-Patch这个词的本意也就是一个N次曲面。
次年(2002),在ATI的R200(Radeon 8500)显示芯片中,就率先采用了N-Patch技术,在ATI自己的官方介绍中称之为“TruForm”。
● TruForm技术的BUG:
TruForm的好处是效率会比位移贴图高,以极低的资源消耗实现较好的显示效果。不过呢,这个技术比较适合于海豚、赛车等表面为曲面的模型上,而如果这个技术应用在坦克等不需要做曲面化的模型上的时候,效果就会变得相当的滑稽。
虽然TRUFORM技术非常具有创意,而且还能给大家带来意象不到的快乐,但是这一技术的应用情况并没有像微软和ATI所期望的那样。正是因为产生了这一滑稽的BUG,TruForm在整个DX9a/b/c时代便销声匿迹了。<
● 2005年Xenos:Tessellation登陆XBOX360主机
由于考虑不周导致技术不成熟的原因,ATI在DX9时代不再整合TruForm功能。但是,微软和ATI都没有放弃这一极具创意的技术,N-Patch/TruForm的设计初衷就是节约GPU资源,通过简单高效的手段让低模3D游戏摇身变为高品质模型。
到了2005年,在微软与ATI的合作结晶——专为XBOX360设计的图形芯片Xenos当中,经过改进的N-Patch/TruForm技术重出江湖,这次它有了一个很响亮的名称——Tessellation,直译为“拆嵌”意译为“细分曲面”。
此次微软和ATI吸取了教训,Tessellation不再像TruForm那样自作聪明的对所有模型强制进行曲面细分化,而是按照不同游戏中特定模型的需求有针对性的处理。因此以往的BUG不复存在了,但需要游戏本身提供支持才能生效。
通过为数不多的支持Tessellation技术的XBOX360游戏来看,细分曲面技术让模型细节变得极为丰富,事实上这些游戏专门挑选了一些动物模型让Tessellation处理——这显然是它的拿手绝活!
除了大幅提升模型细节和画质外,Tessellation最吸引程序员的地方就是:他们无需手动设计上百万个三角形的复杂模型,只需简单勾绘一个轮廓,剩下的就可以交给Tessellation技术自动拆嵌,大大提高开发效率;而且简单的模型在GPU处理时也能大幅节约显存开销,同时大幅提升渲染速度!
不过,Tessellation技术依然具有局限性,而且很多游戏开发商都在跨平台开发游戏,对于这项只有XBOX360支持、PS3和PC显卡都不支持的技术不感兴趣,因此支持Tessellation的XBOX360游戏屈指可数。
Xenos这颗基于R580核心的特殊DX9C GPU,除了首次支持Tessellation和当时先进的HDR+AA技术外,还第一次采用了统一渲染架构,这些技术都被ATI改进并沿用到了DX10时代。
● 2007年R600:Tessellation卧薪尝胆
现在看来,R600核心是一款非常失败的产品,功耗高、发热大、性能低、AA效能差,但是当R600(320SP)的架构扩充至RV770(800SP)的规模时,就没人敢轻易对这套体系架构评头论足了。事实上R600的失败在于冒险采用80nm工艺、512Bit环形总线、以及Shader AA,而其核心架构的运算能力并不输给竞争对手,因而一直被沿用至RV670、RV770还有未来的RV870身上。
R600除了完全按照DX10和统一渲染架构设计外,还整合了一个特殊的模块:Programmable Tessellator,可编程拆嵌器。由于这个可有可无的模块占用晶体管并不多,因此AMD之后的全系列DX10 GPU中都集成了可编程拆嵌器。
这个可编程拆嵌器可要比XBOX360高明很多,R600核心能够根据3D模型中已经有的顶点,根据不同的需求,按照不同的规则,进行插值,将一个多边形拆分成为多个多边形。而这个过程都是可以由编程来控制的,这样就很好的解决了效率和效果的矛盾。
现在我们就更容易理解Tessellation技术是怎么回事了,它是一种能够在图形芯片内部自动创造顶点,使模型细化,从而获得更好画面效果的技术。Tessellation能自动创造出数百倍与原始模型的顶点,这些不是虚拟的顶点,而是实实在在的顶点,效果是等同于建模的时候直接设计出来的。
R600的Tessellation技术支持多种决定插值顶点位置的方法来创造各种曲面:
1. N-Patch曲面,就是和TRUFORM技术一样,根据基础三角形顶点的法线决定曲面。
2. 贝塞尔曲面,根据贝塞尔曲线的公式计算顶点的位置。
3. B-Spline, NURBs, NUBs 曲线(这三种曲线均为CAD领域常用曲线,在Maya中均有相应工具可以生成)
4. 通过递归算法接近Catmull-Clark极限曲面。
有了多种无比强大的曲面生成技术,在加上可编程的设计,程序员在开发游戏之初就能根据需要制定相关模型采用何种细分法则,从而避免出现变形和失真的问题。
而且,Tessellation过程被安排在了顶点着色之前,这就意味着Tessellation所创造出来的顶点全都可以参与Vertex Shader的处理和运算。这些顶点所带来的所有细节,将具备所有特效。
拆嵌后再辅以各种阴影及着色效果,从而以很小的代价达到CG级别画面
在R600发布时,AMD拿出了一款CG级别实时渲染的Demo,其中被积雪所覆盖的山体就是由Tessellation生成的。以往的演示Demo都是片面注重对主角的修饰,而背景往往只使用简单的纹理贴图,而R600的这个Demo其背景和环境的精细程度甚至超越了主角Ruby。
可惜,时至今日,只有ATI的官方Demo使用了自家的Tessellation技术,还没有任何一款PC游戏支持这项被孤立于DX10之外的非主流技术,看来仅靠AMD还是孤掌难鸣的。
● 2009年RV870:Tessellation被正式纳入DX11,修成正果
在AMD的不懈努力下,虽然PC游戏开发商依旧无动于衷,但这个小小的可编程模块却受到了一些好莱坞CG影片设计公司的青睐,因为CG动画对模型细节的精细程度要求十分苛刻,而Tessellation技术能够以很小的资源开销让模型细节丰富百倍,这种近乎免费的画质提升无疑是非常诱人的。
此后AMD将重心转移至CG领域,并提出了Cinema 2.0的概念,为中小型图形公司提供技术支持,灵活应用Tessellation技术来高效的创作视频短片及广告特效。因此在DX10时代,虽然ATI全线显卡均支持Tessellation技术,但AMD却没有像DX10.1那样做大张旗鼓的宣传。
等到DX11正式接纳Tessellation时,AMD已经是第六代技术了,真不容易
经过多年的发展,Tessellation已今非昔比,这款历经磨难、饱受屈辱、在逆境中茁壮成长的技术现在更加灵活、高效、实用,微软认为时机再次成熟,于是被名正言顺的纳入DX11的范畴。
消息一出,立马就有回应。《战地:叛逆连队2》第一个跳出来声援,号称全球首款DX11游戏,该游戏使用了新版Frostbite Engine,而ATI R600 Demo使用的正是该引擎:
让人印象深刻的雪山背景,这就是AMD与DICE合作开发的Ruby Demo
据DICE渲染架构师Johan Anderson称,从DX10到DX11的实际导入过程仅仅花费了三个小时,其中在代码里搜索和替换相关部分最耗时间。现在我们就不难理解战地引擎升级支持DX11为何如此神速了,两年前的战地引擎就能支持Tessellation技术,现在只不过是查找复制粘贴重新找回被闲置的代码而已,那还不是轻车熟路?
战地引擎的使用者不在少数,看来Tessellation技术以及DX11很快就将进入实际应用阶段,卧薪尝胆的Tessellation终于重见天日!
如下的一部分截图来自支持Tessellation的Frostbite Engine技术Demo,不清楚究竟是哪款游戏,又或者是引擎专门开发作为演示的。我们可以从中一窥该引擎的能力,尤其是对于自然环境的3D刻画性能。
再来看看《战地:叛逆连队2》官方公布的游戏截图:
目前画面最强的游戏非Crysis莫属,但是这款依靠暴力模型和着色技术堆积而成的游戏,对显卡的要求之高令人叹为观止,至今都没有哪颗GPU敢打包票说能在最高特效下面流畅运行。也就是说Cryengine 3是丝毫没有考虑现有GPU的性能而开发的一款超级引擎。
以高效率著称的虚幻引擎缔造者Tim Sweeney称,想要把现有游戏模型复杂度提高数十倍是很容易的事情(比如CG模型),但同样的你也需要数十倍与现有主机机能的显卡才能流畅运行,比如三路甚至四路优异系统,而这种系统的市场占有率连1%都不到,独孤求败的Crysis还卖不过快餐式的使命召唤系列、Cryengine至今无法染指游戏机领域就是这个道理。
所以,架空硬件的引擎是不可取的,唯有充分利用有限的GPU资源,通过各种辅助技术最大化画面表现力,才是图形技术公司和游戏开发商首当其冲要解决的内容。DX11并没有带来额外的特效,但却大大提升了GPU的渲染效率,DX11游戏很容易就能从画面到速度全面超越DX10游戏!
当然,Tessellation并不是DX11的全部,前面之所以用大篇幅介绍该技术,是因为这项技术历史悠久、且命运极为坎坷、又与ATI的关系颇为密切。至于其他几项DX11关键技术,之前我们已经撰文进行了详细介绍,感兴趣的朋友请看“图形API再革命!DirectX 11新技术预览”一文,此处仅作简要介绍。
关于DX11 Compute Shader技术,计算着色器将以业界标准接口访问ATI Stream技术,这对于倡导开放式GPU通用计算技术的AMD来说,又是一天大喜讯,DX11搭配OpenCL的并行计算双保险,AMD面对NVIDIA的CUDA技术时,底气将会更足一些。
DX11 Multi-Threading多线程技术,API底层对多GPU优化支持,减少对驱动和游戏渲染模式的依赖。目前AMD的策略是专注于研发一颗主流价位的GPU,然后通过双核心组成高端显卡,再双卡互联组成四核优异系统,因此多核系统严重依赖于驱动的优化支持,而DX11的多线程技术显然有助于提升多GPU并联的工作效率,降低驱动开发难度及性能损失。
此外,Windows 7系统还内置了对GPU视频转码的支持,微软并没有厚此薄彼的偏向任何一边,但这显然对于在GPU通用计算方面处于弱势地位的AMD来说,意义更大一些。
AMD DX11显卡的核心代号及最终产品型号都未确定,但AMD已经信誓旦旦的承诺将会抢先与对手正式发布DX11显卡,据推测与Windows 7同期发布的可能性更大一些,也就是10月到11月之间。
而竞争对手NVIDIA方面,对于尚未发布的产品一直都是守口如瓶,对于未来的40nm和DX11新品只字不提,但据小道消息表明,NVIDIA的40nm GPU已经准备就绪(据传是DX10低端显卡),DX11显卡也将会在年内发布,又一场3D争霸赛即将上演,一同期待吧!<