七年磨一劍!DX11之ATI獨(dú)門絕技全解析
2009年6月3日,ComputeX臺(tái)北電腦展第二天,AMD放出了本屆展會(huì)的重磅炸彈——業(yè)界首顆采用40nm工藝制造的DirectX11規(guī)格GPU,代號(hào)為“Evergreen”,也就是傳說中的RV870核心。而且還現(xiàn)場展示了運(yùn)行中的RV870顯卡及首個(gè)DX11演示Demo,DX11距離最終用戶不遠(yuǎn)了!
AMD高級(jí)副總裁Rick Bergman與臺(tái)積電先進(jìn)技術(shù)市場部高級(jí)主管John Wei聯(lián)手拿出的展示用晶圓被密封在一個(gè)紀(jì)念相框里,里邊的文字是“謹(jǐn)以此紀(jì)念A(yù)MD與臺(tái)積電合作推出首個(gè)AMD DX11 40nm GPU硅晶圓”,下有臺(tái)積電CEO兼總裁蔡力行的簽名,時(shí)間是2009年6月。
此前AMD已經(jīng)正式發(fā)布了首顆40nm GPU RV740,由此證明臺(tái)積電40nm工藝已開始量產(chǎn)。此次AMD公開展示RV870的晶圓,這就意味著新一代DX11顯卡已經(jīng)設(shè)計(jì)完成,只待時(shí)機(jī)成熟即可正式發(fā)布。
那么在DX11時(shí)代即將來臨之際,我們先來深入研究DX11可以帶給我們什么,會(huì)有DX9C過渡到DX10那樣革命性的進(jìn)步嗎?未來的3D世界能精彩到什么程度?
據(jù)可靠消息表明,AMD的DX11顯卡、微軟的DirectX 11 API和Windows 7操作系統(tǒng)將會(huì)在同一時(shí)間發(fā)布,也就是2009年10月至11月間。事實(shí)上目前釋放的Windows 7測試版已經(jīng)內(nèi)置了對(duì)DX11的支持:
我們知道,為了強(qiáng)行推廣Vista系統(tǒng),微軟在Vista當(dāng)中捆綁了DX10 API,并限制XP無法支持DX10,于是為了玩最新的DX10游戲,玩家們被迫升級(jí)Vista。此次微軟在Win7當(dāng)中捆綁DX11,會(huì)不會(huì)也限制Vista不支持DX11呢?
答案是否定的,由于Win7和Vista使用了相同的驅(qū)動(dòng)程序模型,因此Vista也能升級(jí)支持DX11。另外,Win7無論速度、效率、功能都大大優(yōu)于Vista,Win7在測試期間所獲得的好評(píng)遠(yuǎn)超當(dāng)年Vista的表現(xiàn),因此微軟沒必要使用下三濫的手段強(qiáng)迫玩家升級(jí)Win7,相信會(huì)有不少人第一時(shí)間“自愿”升級(jí)至Win7。
事實(shí)上,通過對(duì)本屆ComputeX展會(huì)的報(bào)道來看,泡泡網(wǎng)友對(duì)Windows 7操作系統(tǒng)的期待程度甚至還要高于AMD的DX11顯卡??磥鞼in7和DX11又將掀起一番軟硬件升級(jí)熱潮!
現(xiàn)在我們就來對(duì)DirectX 11進(jìn)行詳細(xì)分析,嚴(yán)格來講DX11并不是一套全新的API,DX11是DX10的一個(gè)超集,就如同Win7之與Vista。簡單的說DX11就是基于DX10開發(fā)的技術(shù),主要對(duì)DX10的功能一些改進(jìn)和擴(kuò)展,并進(jìn)一步提高GPU的執(zhí)行效率(聽起來是不是跟Win7&Vista的關(guān)系很像),當(dāng)然這個(gè)改進(jìn)要比DX10.1多很多。
DX11能夠同時(shí)兼容DX10的軟硬件,而且不需要像DX9過度DX10那樣對(duì)驅(qū)動(dòng)程序底層架構(gòu)做大幅更改。事實(shí)上目前Win7和Vista的很多驅(qū)動(dòng)都能互相通用,AMD和NVIDIA也先后發(fā)布了Win7/Vista一體化的顯卡驅(qū)動(dòng)。
那么DX11相對(duì)于DX10有何重大改進(jìn)呢?DX11最關(guān)鍵的特性有以下五點(diǎn):
1. Compute Shaders:計(jì)算著色器
2. New Instruction Set:新指令集
3. HDR Compression:高動(dòng)態(tài)范圍紋理壓縮
4. Multi-Threading:多線程
5. Tessellation:拆嵌式細(xì)分曲面技術(shù)
其中,Tessellation技術(shù)相信很多人都有印象,沒錯(cuò),它就是ATI第一代DX10核心R600(HD2900XT)中的一個(gè)特殊模塊,從HD2000系列開始、到HD3000再到如今的HD4000系列,ATI的每一款DX10顯卡都支持這項(xiàng)技術(shù),雖然還沒有任何一款游戲能夠支持該技術(shù),但ATI依然孜孜不倦的對(duì)它提供支持,因?yàn)锳TI堅(jiān)信——是金子總會(huì)發(fā)光的!
終于在DX11時(shí)代,微軟將Tessellation作為一項(xiàng)重要標(biāo)準(zhǔn)納入規(guī)范之中,這項(xiàng)被埋沒多年的技術(shù)得以重見天日。那么Tessellation究竟是何方神圣,讓ATI技術(shù)人員如此執(zhí)著,微軟到底是“禁不住軟磨硬泡”、“勉為其難”的吸納之,還是為其先進(jìn)的特性所傾倒,欣然接納之?故事還得從七年前的Radeon 8500系列談起……
● 2002年R200:Tessellation的鼻祖N-Patch及TruForm
話說2001年7月的時(shí)候,微軟即將推出DirectX最新的8.1版本,所以就在Meltdown2001會(huì)議上把ATI、NVIDIA等一干圖形技術(shù)公司叫來開會(huì),一起商定DX8.1的一些技術(shù)細(xì)節(jié)。這次會(huì)議可以說是圖形圖像界的“華山論劍”,不光有主辦商及核心廠商可以參加,媒體甚至也可以買票入場,票價(jià)是650美元,當(dāng)時(shí)著名的八卦網(wǎng)站TheInquirer就參加了這次會(huì)議(要不是它我們就不知道這段典故了)。據(jù)他們報(bào)道,由于技術(shù)細(xì)節(jié)方面的爭執(zhí)比較大,NV和微軟的關(guān)系搞得有點(diǎn)僵,而且NV拒簽當(dāng)時(shí)正在開發(fā)的DX9協(xié)議。
2001年7月 西雅圖 ATI無疑成為了Meltdown2001的主角
N-Patch技術(shù)的原理是這樣的:GPU在讀取了一個(gè)模型之后,判斷每個(gè)三角形三個(gè)頂點(diǎn)的法線向量,再根據(jù)這三個(gè)向量算出插入的頂點(diǎn)的位置。如此一來就能將一個(gè)簡單的、有棱有角模型通過“差值”的算法實(shí)時(shí)處理成為復(fù)雜的、圓滑的模型,在當(dāng)時(shí)GPU運(yùn)算能力極為有限的情況下,N-Patch技術(shù)可以大幅提升3D模型的細(xì)節(jié)和顯示效果。
NPatch技術(shù)非常適合于將一個(gè)模型變得“圓滑”。因此非常適合于一些有很多曲面的模型。因?yàn)閷?duì)于曲面的表現(xiàn),通常的表現(xiàn)方法只是盡量多的使用內(nèi)割多邊形或者外切多邊形來模擬曲面的效果。N-Patch技術(shù)的巧妙之處就在于算法簡單,只要進(jìn)行多次遞歸運(yùn)算,就能將一個(gè)面做成一個(gè)高次曲面,N-Patch這個(gè)詞的本意也就是一個(gè)N次曲面。
次年(2002),在ATI的R200(Radeon 8500)顯示芯片中,就率先采用了N-Patch技術(shù),在ATI自己的官方介紹中稱之為“TruForm”。
● TruForm技術(shù)的BUG:
TruForm的好處是效率會(huì)比位移貼圖高,以極低的資源消耗實(shí)現(xiàn)較好的顯示效果。不過呢,這個(gè)技術(shù)比較適合于海豚、賽車等表面為曲面的模型上,而如果這個(gè)技術(shù)應(yīng)用在坦克等不需要做曲面化的模型上的時(shí)候,效果就會(huì)變得相當(dāng)?shù)幕?/P>
雖然TRUFORM技術(shù)非常具有創(chuàng)意,而且還能給大家?guī)硪庀蟛坏降目鞓?,但是這一技術(shù)的應(yīng)用情況并沒有像微軟和ATI所期望的那樣。正是因?yàn)楫a(chǎn)生了這一滑稽的BUG,TruForm在整個(gè)DX9a/b/c時(shí)代便銷聲匿跡了。<
● 2005年Xenos:Tessellation登陸XBOX360主機(jī)
由于考慮不周導(dǎo)致技術(shù)不成熟的原因,ATI在DX9時(shí)代不再整合TruForm功能。但是,微軟和ATI都沒有放棄這一極具創(chuàng)意的技術(shù),N-Patch/TruForm的設(shè)計(jì)初衷就是節(jié)約GPU資源,通過簡單高效的手段讓低模3D游戲搖身變?yōu)楦咂焚|(zhì)模型。
到了2005年,在微軟與ATI的合作結(jié)晶——專為XBOX360設(shè)計(jì)的圖形芯片Xenos當(dāng)中,經(jīng)過改進(jìn)的N-Patch/TruForm技術(shù)重出江湖,這次它有了一個(gè)很響亮的名稱——Tessellation,直譯為“拆嵌”意譯為“細(xì)分曲面”。
此次微軟和ATI吸取了教訓(xùn),Tessellation不再像TruForm那樣自作聰明的對(duì)所有模型強(qiáng)制進(jìn)行曲面細(xì)分化,而是按照不同游戲中特定模型的需求有針對(duì)性的處理。因此以往的BUG不復(fù)存在了,但需要游戲本身提供支持才能生效。
應(yīng)用了Tessellation技術(shù)的XBOX360游戲畫面
通過為數(shù)不多的支持Tessellation技術(shù)的XBOX360游戲來看,細(xì)分曲面技術(shù)讓模型細(xì)節(jié)變得極為豐富,事實(shí)上這些游戲?qū)iT挑選了一些動(dòng)物模型讓Tessellation處理——這顯然是它的拿手絕活!
除了大幅提升模型細(xì)節(jié)和畫質(zhì)外,Tessellation最吸引程序員的地方就是:他們無需手動(dòng)設(shè)計(jì)上百萬個(gè)三角形的復(fù)雜模型,只需簡單勾繪一個(gè)輪廓,剩下的就可以交給Tessellation技術(shù)自動(dòng)拆嵌,大大提高開發(fā)效率;而且簡單的模型在GPU處理時(shí)也能大幅節(jié)約顯存開銷,同時(shí)大幅提升渲染速度!
不過,Tessellation技術(shù)依然具有局限性,而且很多游戲開發(fā)商都在跨平臺(tái)開發(fā)游戲,對(duì)于這項(xiàng)只有XBOX360支持、PS3和PC顯卡都不支持的技術(shù)不感興趣,因此支持Tessellation的XBOX360游戲屈指可數(shù)。
Xenos這顆基于R580核心的特殊DX9C GPU,除了首次支持Tessellation和當(dāng)時(shí)先進(jìn)的HDR+AA技術(shù)外,還第一次采用了統(tǒng)一渲染架構(gòu),這些技術(shù)都被ATI改進(jìn)并沿用到了DX10時(shí)代。
● 2007年R600:Tessellation臥薪嘗膽
現(xiàn)在看來,R600核心是一款非常失敗的產(chǎn)品,功耗高、發(fā)熱大、性能低、AA效能差,但是當(dāng)R600(320SP)的架構(gòu)擴(kuò)充至RV770(800SP)的規(guī)模時(shí),就沒人敢輕易對(duì)這套體系架構(gòu)評(píng)頭論足了。事實(shí)上R600的失敗在于冒險(xiǎn)采用80nm工藝、512Bit環(huán)形總線、以及Shader AA,而其核心架構(gòu)的運(yùn)算能力并不輸給競爭對(duì)手,因而一直被沿用至RV670、RV770還有未來的RV870身上。
R600除了完全按照DX10和統(tǒng)一渲染架構(gòu)設(shè)計(jì)外,還整合了一個(gè)特殊的模塊:Programmable Tessellator,可編程拆嵌器。由于這個(gè)可有可無的模塊占用晶體管并不多,因此AMD之后的全系列DX10 GPU中都集成了可編程拆嵌器。
這個(gè)可編程拆嵌器可要比XBOX360高明很多,R600核心能夠根據(jù)3D模型中已經(jīng)有的頂點(diǎn),根據(jù)不同的需求,按照不同的規(guī)則,進(jìn)行插值,將一個(gè)多邊形拆分成為多個(gè)多邊形。而這個(gè)過程都是可以由編程來控制的,這樣就很好的解決了效率和效果的矛盾。
Tessellation技術(shù)讓模型變得更加細(xì)膩
現(xiàn)在我們就更容易理解Tessellation技術(shù)是怎么回事了,它是一種能夠在圖形芯片內(nèi)部自動(dòng)創(chuàng)造頂點(diǎn),使模型細(xì)化,從而獲得更好畫面效果的技術(shù)。Tessellation能自動(dòng)創(chuàng)造出數(shù)百倍與原始模型的頂點(diǎn),這些不是虛擬的頂點(diǎn),而是實(shí)實(shí)在在的頂點(diǎn),效果是等同于建模的時(shí)候直接設(shè)計(jì)出來的。
R600的Tessellation技術(shù)支持多種決定插值頂點(diǎn)位置的方法來創(chuàng)造各種曲面:
1. N-Patch曲面,就是和TRUFORM技術(shù)一樣,根據(jù)基礎(chǔ)三角形頂點(diǎn)的法線決定曲面。
2. 貝塞爾曲面,根據(jù)貝塞爾曲線的公式計(jì)算頂點(diǎn)的位置。
3. B-Spline, NURBs, NUBs 曲線(這三種曲線均為CAD領(lǐng)域常用曲線,在Maya中均有相應(yīng)工具可以生成)
4. 通過遞歸算法接近Catmull-Clark極限曲面。
有了多種無比強(qiáng)大的曲面生成技術(shù),在加上可編程的設(shè)計(jì),程序員在開發(fā)游戲之初就能根據(jù)需要制定相關(guān)模型采用何種細(xì)分法則,從而避免出現(xiàn)變形和失真的問題。
而且,Tessellation過程被安排在了頂點(diǎn)著色之前,這就意味著Tessellation所創(chuàng)造出來的頂點(diǎn)全都可以參與Vertex Shader的處理和運(yùn)算。這些頂點(diǎn)所帶來的所有細(xì)節(jié),將具備所有特效。
經(jīng)過Tessellation智能拆嵌之后,模型精細(xì)了很多
拆嵌后再輔以各種陰影及著色效果,從而以很小的代價(jià)達(dá)到CG級(jí)別畫面
在R600發(fā)布時(shí),AMD拿出了一款CG級(jí)別實(shí)時(shí)渲染的Demo,其中被積雪所覆蓋的山體就是由Tessellation生成的。以往的演示Demo都是片面注重對(duì)主角的修飾,而背景往往只使用簡單的紋理貼圖,而R600的這個(gè)Demo其背景和環(huán)境的精細(xì)程度甚至超越了主角Ruby。
HD3000/HD4000繼續(xù)支持Tessellation
可惜,時(shí)至今日,只有ATI的官方Demo使用了自家的Tessellation技術(shù),還沒有任何一款PC游戲支持這項(xiàng)被孤立于DX10之外的非主流技術(shù),看來僅靠AMD還是孤掌難鳴的。
● 2009年RV870:Tessellation被正式納入DX11,修成正果
在AMD的不懈努力下,雖然PC游戲開發(fā)商依舊無動(dòng)于衷,但這個(gè)小小的可編程模塊卻受到了一些好萊塢CG影片設(shè)計(jì)公司的青睞,因?yàn)镃G動(dòng)畫對(duì)模型細(xì)節(jié)的精細(xì)程度要求十分苛刻,而Tessellation技術(shù)能夠以很小的資源開銷讓模型細(xì)節(jié)豐富百倍,這種近乎免費(fèi)的畫質(zhì)提升無疑是非常誘人的。
Tessellation能夠同時(shí)加強(qiáng)地形和人物皮膚細(xì)節(jié)
此后AMD將重心轉(zhuǎn)移至CG領(lǐng)域,并提出了Cinema 2.0的概念,為中小型圖形公司提供技術(shù)支持,靈活應(yīng)用Tessellation技術(shù)來高效的創(chuàng)作視頻短片及廣告特效。因此在DX10時(shí)代,雖然ATI全線顯卡均支持Tessellation技術(shù),但AMD卻沒有像DX10.1那樣做大張旗鼓的宣傳。
等到DX11正式接納Tessellation時(shí),AMD已經(jīng)是第六代技術(shù)了,真不容易
經(jīng)過多年的發(fā)展,Tessellation已今非昔比,這款歷經(jīng)磨難、飽受屈辱、在逆境中茁壯成長的技術(shù)現(xiàn)在更加靈活、高效、實(shí)用,微軟認(rèn)為時(shí)機(jī)再次成熟,于是被名正言順的納入DX11的范疇。
消息一出,立馬就有回應(yīng)?!稇?zhàn)地:叛逆連隊(duì)2》第一個(gè)跳出來聲援,號(hào)稱全球首款DX11游戲,該游戲使用了新版Frostbite Engine,而ATI R600 Demo使用的正是該引擎:
讓人印象深刻的雪山背景,這就是AMD與DICE合作開發(fā)的Ruby Demo
《戰(zhàn)地:叛逆連隊(duì)2》豐富的地形及環(huán)境細(xì)節(jié)
據(jù)DICE渲染架構(gòu)師Johan Anderson稱,從DX10到DX11的實(shí)際導(dǎo)入過程僅僅花費(fèi)了三個(gè)小時(shí),其中在代碼里搜索和替換相關(guān)部分最耗時(shí)間?,F(xiàn)在我們就不難理解戰(zhàn)地引擎升級(jí)支持DX11為何如此神速了,兩年前的戰(zhàn)地引擎就能支持Tessellation技術(shù),現(xiàn)在只不過是查找復(fù)制粘貼重新找回被閑置的代碼而已,那還不是輕車熟路?
戰(zhàn)地引擎的使用者不在少數(shù),看來Tessellation技術(shù)以及DX11很快就將進(jìn)入實(shí)際應(yīng)用階段,臥薪嘗膽的Tessellation終于重見天日!
如下的一部分截圖來自支持Tessellation的Frostbite Engine技術(shù)Demo,不清楚究竟是哪款游戲,又或者是引擎專門開發(fā)作為演示的。我們可以從中一窺該引擎的能力,尤其是對(duì)于自然環(huán)境的3D刻畫性能。
再來看看《戰(zhàn)地:叛逆連隊(duì)2》官方公布的游戲截圖:
目前畫面最強(qiáng)的游戲非Crysis莫屬,但是這款依靠暴力模型和著色技術(shù)堆積而成的游戲,對(duì)顯卡的要求之高令人嘆為觀止,至今都沒有哪顆GPU敢打包票說能在最高特效下面流暢運(yùn)行。也就是說Cryengine 3是絲毫沒有考慮現(xiàn)有GPU的性能而開發(fā)的一款超級(jí)引擎。
以高效率著稱的虛幻引擎締造者Tim Sweeney稱,想要把現(xiàn)有游戲模型復(fù)雜度提高數(shù)十倍是很容易的事情(比如CG模型),但同樣的你也需要數(shù)十倍與現(xiàn)有主機(jī)機(jī)能的顯卡才能流暢運(yùn)行,比如三路甚至四路優(yōu)異系統(tǒng),而這種系統(tǒng)的市場占有率連1%都不到,獨(dú)孤求敗的Crysis還賣不過快餐式的使命召喚系列、Cryengine至今無法染指游戲機(jī)領(lǐng)域就是這個(gè)道理。
所以,架空硬件的引擎是不可取的,唯有充分利用有限的GPU資源,通過各種輔助技術(shù)最大化畫面表現(xiàn)力,才是圖形技術(shù)公司和游戲開發(fā)商首當(dāng)其沖要解決的內(nèi)容。DX11并沒有帶來額外的特效,但卻大大提升了GPU的渲染效率,DX11游戲很容易就能從畫面到速度全面超越DX10游戲!
當(dāng)然,Tessellation并不是DX11的全部,前面之所以用大篇幅介紹該技術(shù),是因?yàn)檫@項(xiàng)技術(shù)歷史悠久、且命運(yùn)極為坎坷、又與ATI的關(guān)系頗為密切。至于其他幾項(xiàng)DX11關(guān)鍵技術(shù),之前我們已經(jīng)撰文進(jìn)行了詳細(xì)介紹,感興趣的朋友請(qǐng)看“圖形API再革命!DirectX 11新技術(shù)預(yù)覽”一文,此處僅作簡要介紹。
關(guān)于DX11 Compute Shader技術(shù),計(jì)算著色器將以業(yè)界標(biāo)準(zhǔn)接口訪問ATI Stream技術(shù),這對(duì)于倡導(dǎo)開放式GPU通用計(jì)算技術(shù)的AMD來說,又是一天大喜訊,DX11搭配OpenCL的并行計(jì)算雙保險(xiǎn),AMD面對(duì)NVIDIA的CUDA技術(shù)時(shí),底氣將會(huì)更足一些。
DX11 Multi-Threading多線程技術(shù),API底層對(duì)多GPU優(yōu)化支持,減少對(duì)驅(qū)動(dòng)和游戲渲染模式的依賴。目前AMD的策略是專注于研發(fā)一顆主流價(jià)位的GPU,然后通過雙核心組成高端顯卡,再雙卡互聯(lián)組成四核優(yōu)異系統(tǒng),因此多核系統(tǒng)嚴(yán)重依賴于驅(qū)動(dòng)的優(yōu)化支持,而DX11的多線程技術(shù)顯然有助于提升多GPU并聯(lián)的工作效率,降低驅(qū)動(dòng)開發(fā)難度及性能損失。
此外,Windows 7系統(tǒng)還內(nèi)置了對(duì)GPU視頻轉(zhuǎn)碼的支持,微軟并沒有厚此薄彼的偏向任何一邊,但這顯然對(duì)于在GPU通用計(jì)算方面處于弱勢地位的AMD來說,意義更大一些。
AMD DX11顯卡的核心代號(hào)及最終產(chǎn)品型號(hào)都未確定,但AMD已經(jīng)信誓旦旦的承諾將會(huì)搶先與對(duì)手正式發(fā)布DX11顯卡,據(jù)推測與Windows 7同期發(fā)布的可能性更大一些,也就是10月到11月之間。
而競爭對(duì)手NVIDIA方面,對(duì)于尚未發(fā)布的產(chǎn)品一直都是守口如瓶,對(duì)于未來的40nm和DX11新品只字不提,但據(jù)小道消息表明,NVIDIA的40nm GPU已經(jīng)準(zhǔn)備就緒(據(jù)傳是DX10低端顯卡),DX11顯卡也將會(huì)在年內(nèi)發(fā)布,又一場3D爭霸賽即將上演,一同期待吧!<
關(guān)注我們
