• <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>

            flagship的理想與現實

            創新+實踐

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              8 Posts :: 0 Stories :: 27 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(8)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

                  首先我們得明確3D引擎使用多線程的目的所在:
            1、在CPU上進行的邏輯計算(比如骨骼動畫粒子發射等)不影響渲染速度
            2、較差的GPU渲染速度的低下不影響邏輯速度

                  第一個目標已經很明確了,我來解釋下需要達到第二個目標的原因:許多動作游戲的邏輯判定是基于幀的,所以在渲染較慢的情況下,邏輯不能跳幀,而仍然需要嚴格執行才能保證游戲邏輯的正確性,這就導致了游戲速度的放慢,而實際上個人認為渲染保持15幀以上就已經可以正常進行游戲了。
                  在較差的GPU上跑《鬼泣4》《刺客信條》《波斯王子4》簡直就像是慢鏡頭一樣,完全沒法玩。而實際上CPU跑滿幀是沒有問題的,如果能把邏輯幀和渲染幀徹底分離,即使渲染幀達不到要求,但CPU仍能正確的執行游戲邏輯,就可以解決動作游戲對GPU要求過高的問題。

                  我們先來看多線程Ogre的兩種架構,第一種是middle-level multithread


                  如上圖所示,每個需渲染的實體被復制成了兩份,主線程和渲染線程交替更新和渲染同一個實體的兩個備份,并在一幀結束時同步,這種解決方案達到了第一個目標而并沒有達到第二個目標,同時兩份實體的維護也相對復雜,并且沒法為更多核數的CPU進行擴展優化。
                  第二種Ogre多線程的方法是 low-level multithread

                  如圖,將D3D對象復制兩份,同樣是在幀結束時同步并交換,和上面的優缺點類似。兩種多線程Ogre的解決方案都是在引擎層完成的,對上層應用透明,對于用戶而言無需考慮多線程細節,這點是非常不錯的。

                  接下來我們來看SIGGRAPH2008上,id soft提出的多線程3D引擎的方案

                  這里是已PS3的引擎結構為例的,與PC有較大的差別,其中SPU是Cell芯片的8個協處理器,擁有強大的并行能力,id的解決方案在SPU上進行了諸如骨骼動畫、形變動畫、頂點和索引緩存的壓縮、Progressive Mesh的計算等諸多內容,同時與PPU上的物理計算RSX上的渲染工作交錯進行,最大化的利用了PS3的硬件結構,最終的游戲產品《Rage》很快就會面世了!

                  最后是我的解決方案

                  特點是邏輯完全分離,無需同步,雖然成功的達到了文章開始提出的兩個目標,但對于引擎的使用者必須考慮多線程的諸多問題,各種計算需放在哪個線程,如何在兩個線程間交互,都需要深入思考,所以要應用到實際的游戲制作,恐怕還有很長的一段路要走。
                  結合目前的架構和上面看到的幾種多線程架構,同時也為了迎接DX11的到來,我準備將我的方案進一步改進成如下所示

                  場景剪裁與提交渲染交替進行,并在渲染幀末進行一次同步,而多個渲染表面的場景剪裁可再并行執行。
                  圖片多,文字少,需更詳細資料請自行google,本文就此結束!
            posted on 2009-03-25 23:22 flagship 閱讀(6845) 評論(10)  編輯 收藏 引用 所屬分類: FlagshipEngine

            Feedback

            # re: 幾種多線程3D引擎架構的比較 2009-03-26 14:03 亨德列克
            高  回復  更多評論
              

            # re: 幾種多線程3D引擎架構的比較 2009-03-26 14:31 夢在天涯
            很高!  回復  更多評論
              

            # re: 幾種多線程3D引擎架構的比較 2009-03-26 22:16 jimsmorong
            非常高  回復  更多評論
              

            # re: 幾種多線程3D引擎架構的比較 2009-03-27 09:50 smokingcode
            老高老高的  回復  更多評論
              

            # re: 幾種多線程3D引擎架構的比較 2009-03-28 17:47 七星重劍
            相當高  回復  更多評論
              

            # re: 幾種多線程3D引擎架構的比較 2009-04-01 11:05 醒于海角
            喝高了  回復  更多評論
              

            # re: 幾種多線程3D引擎架構的比較 2009-05-26 12:03 geforce
            哥們你這個思想 和我做的游戲 一樣 我們游戲項目 也是這個思想
            QQ 23505105  回復  更多評論
              

            # re: 幾種多線程3D引擎架構的比較 2010-01-24 16:06 Giser
            不錯  回復  更多評論
              

            # Unreal游戲引擎3教學中文字幕 2010-03-07 18:04 Unreal游戲引擎
            Unreal Engine 3 toolkit tutorials(Unreal游戲引擎3教學中文字幕)

            字幕對應教學介紹:本教學介紹了Unreal Tournament 3的開發引擎Unreal Engine 3開發工具包的使用.包含了近20個小時的教學,讓用戶能自行創作自己的游戲.

            Unreal Engine其實包含了很多不同引擎的綜合引擎,其中最重要的是圖形引擎,聲音引擎以及物理引擎這三個部分。
            各類CG教學的中文字幕發布免費下載試看;
            3dmaxPS手繪 MAYA,游戲,houdini等中文字幕等中文字幕;/www.gbstuff.com/
            qq1355398  回復  更多評論
              

            # re: 幾種多線程3D引擎架構的比較 2011-07-11 18:52 psychehao
            sx  回復  更多評論
              

            国产A三级久久精品| 久久婷婷是五月综合色狠狠| 伊人久久大香线蕉无码麻豆| 亚洲国产成人精品女人久久久 | 久久无码国产| 午夜福利91久久福利| 久久亚洲熟女cc98cm| 狼狼综合久久久久综合网| 国产精品一区二区久久| 日韩va亚洲va欧美va久久| 亚洲精品无码久久久影院相关影片| 久久亚洲中文字幕精品有坂深雪 | 久久福利青草精品资源站免费| 99久久亚洲综合精品成人| 日韩久久久久中文字幕人妻| 欧美va久久久噜噜噜久久| 精品久久久无码中文字幕| 亚洲日本va中文字幕久久| 日本免费久久久久久久网站| 国内精品伊人久久久影院| 久久天堂电影网| 亚洲日韩中文无码久久| 久久99精品久久只有精品 | 亚洲精品99久久久久中文字幕| 久久经典免费视频| 九九久久自然熟的香蕉图片| 伊人久久精品无码av一区| 蜜桃麻豆WWW久久囤产精品| 久久久久国产精品三级网| 亚洲国产成人久久精品动漫| 麻豆一区二区99久久久久| 中文字幕久久欲求不满| 99久久99久久精品国产片果冻| 久久综合给合久久狠狠狠97色| 亚洲一区二区三区日本久久九| 狠狠综合久久AV一区二区三区| 一本一本久久a久久综合精品蜜桃| 99精品国产免费久久久久久下载| 99久久99久久| 日韩精品久久无码中文字幕| 久久人与动人物a级毛片|