青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

3d Game Walkman

3d圖形渲染,網絡引擎 — tonykee's Blog
隨筆 - 45, 文章 - 0, 評論 - 309, 引用 - 0
數據加載中……

Early ZBuffer [轉]

看到這篇文章寫的還不錯,順手轉過來了^_^
  
   一、最近在優化客戶端性能的時候,看到了Early ZBuffer。在VSPS中間GPU會對進行Z-buffer預判機制,對無效像素進行剔除,ATI、NVIDIA都有自己的Z-buffer預判機制。其實Doom3的時候已經開始使用預填充ZBuffer了,因為Doom3的PS需要處理陰影、NormalMap、LightMap及其他貼圖處理,PS指令非常多,所以無效像素的剔除對性能影響是很大的,越早將無效像素剔除,顯卡便能獲得更多的時間對有效像素進行渲染。

 

    二、Early-Z技術介紹(這段摘自http://tech.sina.com.cn/h/2008-06-17/09302262913.shtml

  當代的GPU都會采用Z-buffer去記錄哪些像素是可見,而哪些像素是被遮擋而不可見。一個3D Frame最終要轉換成為2D圖像才能表示在屏幕上面,來自GPU連續的頂點流(vertices)會構建這個frame,從這個頂點流獲取相應的2D坐 標去生成多邊形。多邊形的連續產生會覆蓋原來的區域,因而Z-buffer的信息就是告訴ROP,哪些像素是可見哪些是不可見的。提前進行的Early- Z對比可以節省大量資源,因為同一個區域被多個多邊形覆蓋的次數輕而易舉地達到原來的四倍甚至更高





目前甚少方法可以利用Z-buffer信息去挑選或者排出被遮擋像素的渲染,Z-Cull就是這樣的一個方法。Z-comparision通常 會發生在ROP的后期。問題就產生,意味著pixel要通過完整的ROP管線才能被發現是否可見。一些復雜的包含數千步驟的shader程序,即使是被遮 擋的pixel也全部通過流水線,這顯然浪費了GPU的性能。Early-Z移去不可見像素在它們進入流水線之前,這樣顯然會提高性能,NVIDIA認為 這個操作提升22%附近的性能。

 

    三、具體實現:場景渲染兩遍:
    void Render()
    {
        DrawZPass();    
        DrawColorPass();    
    }
    
    // 關閉ColorBuffer寫入,以最簡單的渲染狀態繪制場景
    void DrawZPass()
    {
        // Disable color writes
        pD3DDevice->SetRenderState( D3DRS_COLORWRITEENABLE, 0x00000000);

        // Ensure alpha off
        pD3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, false );
        pD3DDevice->SetRenderState( D3DRS_ALPHATESTENABLE, false );

        // Ensure z-enabled
        pD3DDevice->SetRenderState( D3DRS_ZENABLE, true );
        pD3DDevice->SetRenderState( D3DRS_ZWRITEENABLE, true );

        DrawScene();

        pD3DDevice->SetRenderState( D3DRS_COLORWRITEENABLE, 0x0000000F );
    }

    // 正常渲染
    void DrawColorPass()
    {
        pD3DDevice->SetRenderState( D3DRS_DEPTHBIAS, F2DW(-0.001f) );    
        DrawScene()
    }

    1.DrawZPass:應該跳過AlphaBlend、AlphaTest的實體。
    2.DrawColorPass:對于那些預寫入ZBuffer的實體,在這個Pass中只需開啟ZBufferTest、并且可以關閉ZBufferWrite。
    3.使用了EarlyZBuffer,就不用再排序了。

    4.在第二遍渲染的時候,因為浮點的誤差,會有ZFighting現象,所以應允許一定的誤差。

    5.Early ZBuffer不一定適用所有場景,比如有大量實體的室外場景,因為DrawZPass畢竟也要繪制所有的實體,如果調用太多DP,性能反而會有所下降。


     四、另外一個性能優化提示:先畫UI;最后繪制天空盒。這也于ZBuffer有關,因為天空盒總是顯示在最后,而天空盒總是被前面的實體遮擋了大部分區域。

不過最后繪制天空盒時候,大家會問如何避免被FarPlane裁剪,有一個技巧可以解決,在SkyShader的VS輸出投影后的位置時,這樣設置:

     Out.position = mul(mvp, vertex).xyww。// 不是Out.position = mul(mvp, vertex);

    這樣天空盒投影后的總是映射到FarPlane,這樣就完美了,哈哈。這個方法時我在ATI的《Depth In Depth》文檔中看到的。UI也是,游戲里的UI區域如果預先寫入ZBuffer,也可以避免大量的無效PS處理。


     五、最后希望大家可以仔細看看《Depth In Depth》,里邊有很多優化提示。

posted on 2009-12-01 14:20 李侃 閱讀(2567) 評論(0)  編輯 收藏 引用 所屬分類: 前臺客戶端

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            六月婷婷久久| 亚洲区国产区| 亚洲精品一区二区三区福利 | 尤物视频一区二区| 亚洲视频一区在线观看| 免费日韩av电影| 性欧美videos另类喷潮| 国产精品视频一区二区高潮| 亚洲综合欧美日韩| 欧美国产日本在线| 久久国产视频网站| 国产精品jizz在线观看美国 | 久久精品最新地址| 亚洲一区www| 欧美激情精品| 一本久久a久久免费精品不卡| 欧美国产亚洲精品久久久8v| 久久综合国产精品台湾中文娱乐网| 国产日韩综合| 蜜臀91精品一区二区三区| 久久亚洲午夜电影| 亚洲国产精彩中文乱码av在线播放| 毛片精品免费在线观看| 久久久成人精品| 亚洲人体大胆视频| 一本一本久久| 国产精品伦理| 欧美成人69av| 欧美三级欧美一级| 久久国产欧美| 猛男gaygay欧美视频| 在线亚洲激情| 欧美一区二区在线视频| 亚洲区一区二区三区| 一区二区三区久久久| 一区国产精品| 99精品视频一区| 国产偷久久久精品专区| 亚洲第一福利社区| 国产精品女人网站| 欧美成人一区二区三区片免费| 欧美a级一区二区| 亚洲影院高清在线| 久久久久久亚洲精品中文字幕| 亚洲伦理中文字幕| 午夜精品一区二区三区在线视 | 久久精品国产精品亚洲| 99re在线精品| 久久精品夜色噜噜亚洲a∨| 亚洲看片一区| 久久天天躁夜夜躁狠狠躁2022| 亚洲性xxxx| 久久一综合视频| 亚洲欧美在线x视频| 欧美高清视频一区二区三区在线观看 | 欧美成黄导航| 国产欧美精品在线观看| 最新高清无码专区| 一区免费在线| 99re6这里只有精品视频在线观看| 国产精品毛片一区二区三区| 亚洲国产色一区| 国产女优一区| 一区二区三区黄色| 一区二区电影免费观看| 欧美一级黄色网| 亚洲国产精品久久91精品| 性欧美videos另类喷潮| 欧美一级大片在线观看| 欧美色图麻豆| 亚洲精品乱码久久久久久| 欧美不卡三区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲一区二区视频| 亚洲一区激情| 欧美日韩一区二区三区四区在线观看| 欧美国产视频一区二区| 在线观看欧美日本| 久久久久久高潮国产精品视| 久久蜜桃精品| 极品尤物av久久免费看| 欧美在线视频一区二区三区| 久久不射2019中文字幕| 国产精品综合网站| 性欧美超级视频| 久久精品最新地址| 韩国一区二区三区美女美女秀| 亚洲欧美日韩精品一区二区| 久久不射网站| 极品av少妇一区二区| 欧美一区二区性| 欧美高清视频在线播放| 亚洲乱码国产乱码精品精98午夜| 欧美激情精品久久久久久久变态| 欧美激情片在线观看| 亚洲精品一区中文| 欧美性猛交99久久久久99按摩| 国产精品99久久不卡二区| 午夜精品亚洲一区二区三区嫩草| 国产毛片久久| 久久人人97超碰精品888| 免费视频一区二区三区在线观看| 亚洲激情网站| 欧美偷拍一区二区| 欧美在线一区二区| 欧美黄色aa电影| 亚洲午夜精品久久久久久浪潮| 国产伦精品一区二区| 久久天天狠狠| 日韩视频在线播放| 久久久精品免费视频| 亚洲激情在线观看视频免费| 国产精品video| 久久久91精品国产一区二区三区 | 一区精品久久| 久久久精品tv| 亚洲伦伦在线| 久久久一二三| 亚洲人成网站精品片在线观看| 欧美波霸影院| 亚洲欧美国产制服动漫| 久久久久久久国产| 亚洲国产精品日韩| 欧美成人午夜| 午夜视频在线观看一区二区三区| 久久精品一区二区三区四区 | 国产精品欧美日韩久久| 免费看黄裸体一级大秀欧美| 亚洲精选一区| 久久久噜噜噜久噜久久| 亚洲一二三区在线| 亚洲国产日韩一级| 国产亚洲激情视频在线| 欧美老女人xx| 美国十次成人| 欧美一区二区三区视频免费| 夜色激情一区二区| 亚洲国产成人精品女人久久久| 亚洲女同在线| 欧美凹凸一区二区三区视频| 久久久亚洲国产天美传媒修理工| 国产日韩欧美中文在线播放| 欧美日韩麻豆| 欧美黄色精品| 久久视频一区二区| 久久福利精品| 香蕉成人久久| 亚洲午夜精品久久久久久浪潮| 亚洲国产毛片完整版 | 国产欧美精品| 欧美久久精品午夜青青大伊人| 性伦欧美刺激片在线观看| 亚洲欧洲在线一区| 久久这里只有精品视频首页| 亚洲一区国产精品| 一区二区三区欧美成人| 黄色一区二区三区四区| 狠狠入ady亚洲精品| 欧美日韩一区二区国产| 久久免费精品日本久久中文字幕| 午夜精品久久久久久久99水蜜桃 | 欧美日精品一区视频| 欧美日韩国产综合视频在线| 欧美国产欧美亚州国产日韩mv天天看完整 | 国际精品欧美精品| 国产综合第一页| 激情视频一区二区| 在线色欧美三级视频| 亚洲国产成人91精品| 亚洲精品久久久久| 一区二区三区精密机械公司| 亚洲素人一区二区| 午夜影院日韩| 久久精品水蜜桃av综合天堂| 久久久午夜视频| 亚洲成色777777在线观看影院| 亚洲黑丝在线| 亚洲一卡久久| 久久精品中文字幕一区| 欧美成人精品不卡视频在线观看| 欧美高清视频| 欧美成人嫩草网站| 欧美**字幕| 亚洲影院免费观看| 一区精品久久| 亚洲欧美日韩视频二区| 久久综合色一综合色88| 亚洲人成人77777线观看| 亚洲一区激情| 欧美日韩国产色视频| 韩国一区二区在线观看| 亚洲欧美日本在线| 亚洲国产日韩在线一区模特| 久久成人免费网| 国产精品www.| 亚洲精品一区久久久久久| 久久网站热最新地址| 亚洲欧美日韩人成在线播放| 欧美日韩精品一区二区三区| 亚洲国产精品久久精品怡红院|