發揮GPU強大動力的CG語言

Kaitiren發表於2016-05-03

 ·CG推出的背景因素:

  目前大部分的圖形渲染系統的流水線由於各種原因,功能被限制為某些特殊效果,不具備擴充性,依據這些流水線編制的軟體,只能實現特定的效果,這是一些遊戲無法展現許多效果的罪魁。按道理,VertexShader和PixelShader的可程式設計性可以改變這一切,實際上問題遠非如此簡單,由於程式設計的困難,即使一些常用的API增添了很多專門為此編寫的函式,為了實現理想的特殊效果,還是必須使用直接控制GPU的組合語言,難度極大,效率又低,挫傷了開發人員的積極性,具有可程式設計性的VertexShader和PixelShader的硬體並沒有帶來革命性的變化。在這個技術出來之後,大部分人仍然在埋怨,為什麼硬體已經在技術上實現的功能無法被軟體使用,驚人的圖形效果只能在測試軟體中看到,強大的硬體效能似乎成了一種擺設,這種狀態從GeForce256一直延續到Ti4600。如果這種狀態得不到改善,具體情況我不敢妄加猜測,至少就目前眾多對nVIDIA瘋狂升級的懷疑目光,正是nVIDIA最不願看到的境況。

    ·脫胎於C語言

  CG語言的誕生很好的解決了這一問題。CG(C For Graphic)高階語言脫胎於C語言,一個習慣了C/C++的程式設計師將很容易從傳統的程式設計環境結合OpenGL轉換到CG下,CG也整合了一些效果標準庫,使一些標準效果不需要重新編寫就可以得到直接應用,提高了工作效率。CG還具有良好的通用性和可移植性,可以繞開具體的GPU核心,達到更高的虛擬層,也就是說程式開發人員可以只注重概念,所要實現的效果而忽略具體的硬體實現環節。更令人高興的是,CG使特殊的效果與具體的硬體分離,它的執行編譯特效能夠讓用此編寫的軟體與各種平臺和平相處。同時,它具有良好的向後相容性,同一個程式能夠在今後更好的硬體平臺上實現更亮麗的效果,根本不需要進行重新編寫優化,它的靈活性已經遠遠的走在了業界前列。這也意味著,以後出來的新硬體我們可以馬上享受到其帶來的好處,而不用苦苦等待針對新硬體開發出來的軟體,這正是我們對硬體升級最懷疑的地方,讓使用者擺脫“升級”的迴圈,真正享受到專業製圖的樂趣所在。

  如前文所述,雖然可程式設計GPU具有良好的可程式設計性,但是複雜的步驟加上需要對硬體具體操作,已經讓大部分程式設計師望而卻步,並且遊戲廠商為了遊戲的銷量,不太可能只為最高階的圖形裝置優化,也造就了目前PC遊戲如此尷尬的局面。CG的確是連線這兩者的優秀工具,具體硬體的抽象給硬體廠商與遊戲開發商甚至消費者都大大減輕了負擔,如果遵循同一個標準,軟硬體雙方都不用擔心新技術的支援,甚至包括使用者也應該感激這個技術的出現,至少這要比簡單的提供所謂虛無縹緲的硬體新特性要好的多。

  作為遊戲愛好者,我們不應該只是侷限於目前方頭方腦的遊戲人物形象,而需要更多更精細的模型,更逼真的環境,可是目前的環境,這一切似乎遙遙無期。實際上,對遊戲開發商來說,這一切並不難,但是複雜程度確可能是翻倍都不止,並且還有可能費力不討好,聰明的開發商們不會如此冒風險。CG是解決這個問題的良方,由於CG開發環境以及編譯的動態性,說是能夠實現驚人的效果一點不為過,更為實際的是,更多的遊戲廠商能夠接收和支援這種環境,創造一個共盈的空間。也由於CG的易用性,通過這個平臺,更多的遊戲將能夠使用GPU的可程式設計特性,我們再也用不著為新硬體沒有軟體支援而擔心,進一步的猜想在於,電影般效果的遊戲也有可能登上PC。

  自從DirectX 8和GeForce3釋出後,微軟與Nvidia一直就在努力降低著色引擎的建立難度。著色引擎用於建立Dot3碰撞貼圖等圖形效果,它的與眾不同之處在於著色引擎具有可程式設計性和可定製性。可程式設計效果具有更大的靈活性,更便於建立複雜的3D場景。

許多不同的效果聚合在一起實現了真實的皮膚效果。

  對擁有這種功能的當代顯示卡GeForce3、GeForce4 Ti、ATI Radeon 8500來說,開發商不得不使用匯編碼令建立或修改著色引擎。這種低層語言以詳盡的細節為基礎告訴硬體該做些什麼。曾經有那麼一段時期,所有的PC應用都是使用匯編語言建立了,後來C語言的出現使越來越多的人學會的程式設計,也降低了複雜程式編制的工作強度。希望CG語言在3D圖形領域也能起到同樣的效果。使用CG建立的著色引擎可佔三十行以上的程式碼,並其轉換為一兩行。可以預期會出現越來越多的CG著色引擎供遊戲美工人員選擇,他們可使用多種著色引擎建立楨的不同部分。從左邊的圖片可以看到,著色引擎以畫素為基礎進行工作,可以被分層化。
  著色引擎對圖形屆來說不是什麼新鮮事物了。它作為電影CG效果的一部分已經有一段時間了。來自電影公司的專業3D美工師使用一種名叫RenderMan的語言來建立並填充(在大量的伺服器上)擁有幾何、材質和著色引擎的3D場景。Nvidia由此獲得了CG發展的靈感,希望CG能發展到類似於RenderMan的水平,能幫助電影美工人員建立CG內容。

五個材質用來建立這個逼真的面孔,這是Nvidia未來硬體的技術演示。

  這種高階圖形語言是DirectX 9的一部分。雖然微軟和Nvidia進行了合作,且CG可完美相容DX9語言,但兩者還是有一些區別的。兩公司宣佈的不同之處在於CG不但能相容DirectX 9,而且能相容OpenGL,這意味著CG是進行跨平臺開發的製作人員的理想選擇。

這個機器人模組上有大量的獨立效果,展示瞭如何使用CG建立2D效果。

    ·CG推出的背景因素:

  需要時,用CG編寫的著色引擎被編譯成適應特定硬體和API的彙編碼令。微軟和Nvidia將推出各自的編譯器。除支援OpenGL外Nvidia的產品還將針對自己的硬體進行特別優化。CG在需要時才能編譯意味著將有更多的相容性,這不但表現在不同硬體間,也表現在不同代硬體間。CG效果可輕鬆編譯執行在現在的DirectX 8硬體或DirectX 9平臺上。

    ·來自遊戲開發商的支援

  2002年12月23日, NVIDIA與SGI下屬公司Alias Wavefrontä今日宣佈聯手推出能將高階實時渲染程式緊密整合到Maya 4.5裡的CG外掛。CG也稱為高階渲染語言(HLSL),是C類高階圖形程式語言,可使三維製作大師以及內容開發人員創作具有影院效果的影像,同時與之實時互動。 
    面向Windows®的Maya CG外掛第一次公開亮相是在2002年7月的Siggraph大會上,它由NVIDIA聯合全球三維圖形軟體技術先驅Alias Wavefront開發而成,能夠讓Maya 4.5的使用者充分利用NVIDIA 圖形晶片(GPU)的高階硬體渲染功能。現在,新外掛即可從以下網站免費下載:www.aliaswavefront.com/maya/plugins/   http://developer.nvidia.com以及www.CGshaders.org

     ·CG應用展示:

下面的截圖是由Presenter 3D提供,使用了nVIDIA的CG技術並且結合了Quadro4 900XGL的Shader。這個場景能夠隨著視覺角度的變化而改變反射以及折射光線,所有場景均在Anti-Alaising (4x, 9-tap Gaussian)下實現。


    ·CG遊戲展示:

  nVIDIA的官方網站上公佈了首款運用CG技術並支援DirectX9的一款動作類遊戲——Gun Metal。該遊戲由Yeti Studios開發,並由Rage Software發行。

  Gun Metal是第一款利用CG語言開發製作的遊戲。據稱,遊戲中共有14個令人興奮的任務關卡,而且許多炫目的新特效將給玩家帶來與眾不同的視覺和遊戲體驗。
 遊戲中CG獨特的圖形效果有:
  1.CG:支援所有的介面材質
  2.CG:在飛機造型上運用動態模糊效果
  3.CG:更加真實的水面折射效果
  4.CG:許多新的特性還在進一步摸索中
  5.DX9:接近現實的火光效果
  6.DX9:使用128bit浮點快取模組,支援高對比色彩運用

  不過由於使用CG開發的關係,目前ATi顯示卡不能執行此遊戲,當然支援DX9的Radeon 9500和9700也不能執行此遊戲。但是Tommti Systems網站研發的“3d Analyze”軟體就解決了這個問題。下載1.69版本的3d Analyze,從3d Analyze軟體介面左邊的啟動選單,執行Gun Metal.exe,3d Analyze軟體介面右邊各種選項配置如下圖所示。

  到此,CG語言的介紹就講完了,所有內容及圖片均來自網路及nVidia網站。想進一步瞭解CG語言,可以去nVidia網站上下載相關文件及工具,自己操練~
  最後再給幾個有用的下載地址:
   CG最新版下載地址:http://developer.download.nvidia.com/cg/Cg_1.5/1.5.0/0019/Cg-1.5_Feb2007_Setup.exe

   CG說明書:http://developer.download.nvidia.com/cg/Cg_1.5/1.5.0/0019/Cg_Specification.pdf
   3D程式視覺化優化工具:http://developer.download.nvidia.com/tools/ShaderPerf/NVShaderPerfInstaller_NVR100_2.01.0305.1925.exe
http://developer.download.nvidia.com/tools/NVPerfKit/2.2/NVPerfKit.exe
   (因為最近在做3D遊戲引擎,打算用來優化下執行演示時的Demo)

   最後再給個最近才發現的東西——谷歌中文輸入法,我現在就正在用,還是很爽的。看起來是微軟拼音和紫光輸入法的綜合。用起來真的不錯。
下載:http://dl.google.com/pinyin/GooglePinyinInstaller.exe
介紹:http://tools.google.com/pinyin/feature.html

相關文章