• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            麒麟子

            ~~

            導航

            <2009年10月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            Friends

            WebSites

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            Shader Model 4.0 全新架構


            Shader Model4.0統一渲染架構  
            微軟的DirectX 9.0c距今離它的誕生已經有2年的光景,DX9.0c給我們帶來了全新的Shader Model3.0技術,也使得3D畫面較以往了有了質的突破,DirectX 9.0c是截至至今微軟歷史上壽命最長的一代API,而圖形技術的發展是不會停下腳步的,2006年微軟發布了全新的DirectX 10.0,僅從版本上看比9.0c相差一級,但是DirectX 10.0帶給我們的又將是一個全新的概念。

             

              在微軟發布DX10.0后,NVIDIA積極響應,發布了完全符合DirectX 10.0的通用Shader架構圖形處理器G80,也標志著DX9.0c將會逐步被DX10.0替代。相對DirectX 9.0c中的SM3.0,在Shader Model 4.0中微軟引入了統一著色架構,這才是DX10最大的改變。我們都知道,微軟在DirectX 9中引入的了2.0/2.X/3.0三個版本的Vertex Shader(頂點著色引擎)以及Pixel Shader(像素著色引擎)。其中支持2.0版的著色引擎是DirectX 9的GPU的最低標準,而當前主流的顯卡已經都硬件支持加入了擁有更多高級處理功能的3.0版本著色引擎。

                不過,即便是DirectX 9.0c,對于功能相仿Vertex Shader、Pixel Shader來說,目前圖形芯片廠商仍需要在GPU中劃分兩個區域來存放Vertex Shader陣列和Pixel Shader貼圖流水線。這無疑是一種資源冗余,而且這也加重GPU的設計難度及成本。當DirectX 10把渲染流程更細分為Vertex Shader、Geometry Shader及Pixel Shader,這個情況將會更為明顯。而DX10.0的誕生就將這2種渲染整合在了一起!


            SM4.0較SM3.0的改進
             而在DirectX 10中引入了統一渲染架,通過一個整合Vertex Shader、 Pixel Shader的可編程整合光影處理器來完成目前Vertex Shader、Pixel Shader所有的工作。所謂統一渲染架構,最容易的理解方式就是Shader單元不再分離,顯示核心不再為Shader類型不同而配置不同類型的Shader單元,對于主流的顯示核心,Pixel Shader單元以及vertex Shader單元的概念都應該已經非常熟悉了,而在統一渲染架構中這兩種Shader單元將不再分離,轉而所有的Shader單元都可以為需要處理的數據進行處理,不管和是Pixel Shader數據還是Vertex Shader數據。

                 而調配哪幾組Shader單元負責處理什么數據或者進行什么樣子類型的計算,則由一個被稱為small sets of instructions(SSI)的部分來控制。這樣在硬件上,設計者就無需為不同的著色引擎設計不同的執行單元,只要按照所對應的接口以及操作方式全部融為一體,僅設置一種獨立的Shader執行單元。這意味著GPU廠家可以用更小的核心來實現現在需要用8000萬甚至更多晶體管才能實現的功能!

              相比原先的Shader Model 3.0,Shader Model 4.0最大指令數從512條增加到了64000條;臨時暫存器數量也從原先的32個增加到驚人的4096個;允許同時對128個Texture進行操作(Shader Model 3.0只允許16個);材質texture格式變為硬件支持的RGBE格式,其中的"E"是Exponent的省略,是RGB共同的說明,這在HDR的處理上有很大的作用,摒棄了以往需要專門decoding處理HDR渲染的流程。 另外,對于紋理的尺寸Shader Model4.0也有驚人的提升,8192x8192的最高紋理分辯率比原先最高2048x2048的分辯率要高出4倍。G80圖形核心對以上規格都給予了完整的硬件支持。

            Shader Model4.0新特性
             Shader Model 4.0另一個重大變化就是在VS和PS之間引入了一個新的可編程圖形層----幾何著色器(Geometry Shader)。原來的Vertex Shader和Pixel Shader只是對逐個頂點或像素進行處理,而新的Geometry Shader可以批量進行幾何處理,快速的把模型類似的頂點結合起來進行運算。雖然其操作不會象Vertex Shader那樣完整,只是處理器單個頂點的相關函數操作,但是這種操作卻可以確定整個模型的物理形狀。這將大大加速處理器速度,因為其它Shader單元將不再去需要判定數據所存在的位置,而只是需要簡單的為特定區域進行操作就可以了。

             

              Geometry Shader可以把點、線、三角等多邊形聯系起來快速處理、同時創造新的多邊形,在很短時間內直接分配給其他Shader和顯存而無需經過CPU,煙霧、爆炸等復雜圖象不再需要CPU來處理。從而極大的提高了CPU速度和顯卡速度。游戲圖象中可以出現許多精細場景,如不銹鋼茶壺上清楚的反射出周圍物體、超精細的人物皮膚等。

              為了最大程度的發揮Geometry Shader的威力,DX10硬件還專門設置了一個名為流輸出層(Stream Output State)的部件來配合它使用。這個層的功能是將Vertex Shader和Pixel Shader處理完成的數據輸出給用戶,由用戶進行處理后再反饋給流水線繼續處理。我們可以通過Stream Out把GPU拆成兩段,只利用前面的一段幾何運算單元。對某些科學研究,也許可以通過stream out來利用GPU的數學運算能力,等于在CPU之外又平白多得了一個數學協處理器。舉個例子,Doom3常用的Stencil shadow,因為CPU負擔很重,廣受批評。但是因為GS可以計算輪廓線, 還可以動態插入新的多邊形,有了Stream out之后,Shadow volume的生成就可以放到GPU端進行,實現Stencil shadow的硬件化,這將大大降低CPU占用。

            統一著色架構
            在以前的DirectX版本中,像素著色器因為受到常量寄存器、可用指令和總體流程可的限制總是運行在頂點著色器之后,因此程序員必須學會怎樣分別去利用好頂點和像素著色器的權限。Shader model 4.0則帶來了與以往不同的統一著色架構,在DirectX 10基礎上進行游戲開發,程序員不需要在避免著色沖突限制上花費時間,所有的統一架構著色器都能夠使用GPU可以用的全部資源。

             

              Shader model 4.0在著色器程序可用資源的提升方面讓人激動,在以往的DirectX下,開發者不得不仔細計算可用的寄存器資源,而在DirectX 10中,這些問題都不復存在,如上表所示,總體上DirectX 10提供了超過10倍的DirectX 9可用資源。

            更多的紋理和渲染
            Shader Model 4.0支持紋理隊列集,把開發者從繁重的拼接紋理圖集的工作中解放出來,并能夠在每個著色器上使用更多的特殊紋理實現更好的視覺效果。

              在Shader Model 4.0之前,過高的開銷使在一個著色器操作上使用多個特殊紋理的操作基本無法實現。為了解決這個問題,開發把許多小的分散的紋理拼接成一個大的紋理;在運行層中,著色器也需要進行額外的地址運算以便在拼接紋理圖集中找到特定的紋理。紋理圖集方式存在兩個明顯的缺點:首先小紋理之間的分界線回導致過濾操作錯誤;然后,DirectX 9的4096*4096紋理尺寸限制也是紋理圖集的總體規模受到局限。紋理隊列集能夠解決所有問題,它能夠使用隊列格式存儲紋理,每個隊列能存儲512同尺寸個紋理,最大的可用紋理尺寸也提升到8192*8192。為了促進這種應用,每個著色器可以操作的最大紋理數也提高到了128個,8倍于DirectX 9。

              更多的渲染對象
              多重渲染對象是DirectX 9時代的一個流行特性,它允許每個像素著色周期輸出4個不同的渲染結果,從而高效率的在一個周期內渲染一個場景的4遍。在DirectX 10中,渲染對象的數目提高到8,著極大的提高了著色器能實現的場景復雜程度,延遲渲染和其它一些圖像空間優化算法將廣泛的從中受益。

            兩種新的HDR格式
             兩種新的HDR格式
              HDR(High dynamic range rendering)從支持浮點色彩格式的DirectX 9時代開始流行。不幸的是浮點格式比整數格式占用更多的寄存器空間而限制了其性能的發揮。如典型的FP16格式的每個色彩數據需要占用16bits,這兩倍于整數格式的空間占用。

             

             

              DirectX 10的新HDR格式能夠在和FP16實現同樣動態范圍的前提下只占用50%的存儲空間。第一種格式為R11G11B10,它使用11-bits的紅色和綠色以及10-bits的藍色來優化存儲空間;第二種格式是使用一個5-bits共享首位存儲所有色彩然后每個色彩擁有9-bits尾址,這些簡化的方法在HDR品質上和標準的FP16幾乎沒有差別。在最高級別的HDR方面,DirectX 10支持FP32的HDR,這可以用于科學計算等對計算精度較高的應用程序。

              很顯然,DirectX 10.0全新的Shader Model4.0對于消費者來說是一場全新的視覺革命,更逼真的3D游戲畫面、流暢的高清視頻回放是微軟、顯卡廠商推動技術發展的動力之源,在不遠的將來我們就會體會到全新的DX10、SM4.0給我們帶來的饕餮大餐。





            posted on 2009-10-16 17:47 麒麟子 閱讀(2476) 評論(2)  編輯 收藏 引用 所屬分類: GPU and Graphic

            評論

            # re: Shader Model 4.0 全新架構 2009-10-16 19:19 G++

            Geometry Shader ...能通過GPU產生爆炸這些效果...感覺是個好東西哦...有機會去看看  回復  更多評論   

            # re: Shader Model 4.0 全新架構 2009-10-18 18:06 夢芭莎女性內衣

            謝謝分享!  回復  更多評論   

            欧美黑人激情性久久| 综合久久国产九一剧情麻豆| 国产亚洲精久久久久久无码| 久久99免费视频| 亚洲精品无码久久毛片| 亚洲中文字幕无码久久精品1| 精品少妇人妻av无码久久| 亚洲国产精品久久久久久| 一本色道久久88综合日韩精品 | 伊人色综合久久天天| 欧美大战日韩91综合一区婷婷久久青草| 伊人久久亚洲综合影院| 国内精品久久人妻互换| 久久久久国产精品三级网| 久久人人爽人人爽人人片AV不| 国产精品gz久久久| 久久久久人妻一区二区三区vr| 国产精品久久久久一区二区三区 | 一本久道久久综合狠狠躁AV| 热re99久久6国产精品免费| 亚洲第一永久AV网站久久精品男人的天堂AV | 欧美精品一本久久男人的天堂| 一本久道久久综合狠狠躁AV| 青青青青久久精品国产 | 成人资源影音先锋久久资源网| 亚洲婷婷国产精品电影人久久| 中文字幕亚洲综合久久2| 久久精品国产99久久久| 亚洲国产欧洲综合997久久| 久久久久久久综合狠狠综合| 久久久久九国产精品| 91精品观看91久久久久久| 999久久久免费精品国产| 久久99精品国产麻豆| 久久久久久人妻无码| 久久久久久午夜成人影院 | 久久天堂电影网| 久久精品男人影院| 精品久久久久久久久久中文字幕 | 久久精品国产亚洲av麻豆图片| 久久成人国产精品一区二区|