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

            永遠也不完美的程序

            不斷學習,不斷實踐,不斷的重構……

            常用鏈接

            統計

            積分與排名

            好友鏈接

            最新評論

            游戲中各種性能優化方法(不斷更新)

            談到游戲中的性能優化,說白了就是如何提高幀率和降低內存。
            提高幀率的基本原則就是減少DP次數,還有是找出時間消耗高的程序代碼加以修改。
            但引擎涉及的東西非常多,有時優化要從多方面入手,下面一個一個來說明。

            首先是水體渲染的優化:
            現在很多游戲的習慣做法就是把水放在地某個高度的位置,然后地形在上面,從裁剪的角度來看,只要看得到地形,水是必然會渲染的,但如果我們看到的地形都是在水的上面,那這樣渲染就太浪費了。其實有個很簡單的做法,就是把地形的block,當然,我們可以把block再細分成一邏輯上的block,每個block要記錄是否有地形的頂點在水的下面,有的話,如果這些block要渲染,那水也就渲染,否則水就不渲染。

            地形優化:
            四叉樹地形LOD是最基本的優化方法了,不過這里要注意一點,每個地塊對應不同LOD加上不同裂縫組合的indexbuffer,如果一開始把所有這些可能存在的indexbuffer都創建出來,那內存會非常大。我的做法是:當用到某個IndexBuffer的時候才實時創建,這樣大大減少了內存。因為有很多種情況下的IndexBuffer在實際情況下是不會用到的。

            粒子系統的優化:
            傳統的粒子系統的做法是在CPU上計算好粒子的四個頂點位置然后再填入紋理,現在有種優化方案是:定義粒子的頂點格式只有中心點和width,height,在CPU上只計算實時的中心點位置與width和height的大小,然后在GPU上再根據這些數據計算回粒子的四個頂點。
            這種優化方案可以減少粒子在CPU上的運算量,但雖然利用到shader。
            還有是粒子系統要共享VB和IB哦。

            骨骼動畫優化:
            利用GPU計算頂點是骨骼動畫優化的最有效手段,現在很多人的做法是只把骨骼動畫的矩陣轉到GPU,然后在GPU計算每個頂點的位置。這種做法受到了shader寄存器數量的限制。其實還有一種做法是把矩陣寫入一個1行的浮點紋理,試想一下,如果是1X1024的浮點紋理,那可以存1024 / 4 = 256個矩陣(1個像素是R32G32B32A32F四個浮點的紋理),這種方式要求顯卡支持并占一定的帶寬。

            模型渲染優化:
            可以利用hardware instancing,LOD等方法。帶骨骼動畫的模型,在DX10以上可以實現骨骼動畫instancing。

            場景優化:
            現在流行occullsion優化,就是把被遮擋的物體不渲染出來,我簡單地說一下這種實現的原理:
            開一個RTT,把在視錐范圍內的渲染物取AABB,然后把這個AABB賦一個顏色(每個物體的AABB顏色都不一樣),然后渲染的時候把這個顏色作為輸出顏色渲染出來。因為開了深度,如果在后面被完全遮擋的物體,那最終這張RTT紋理是不存在這個物體的顏色,根據一些方法可以知道這個紋理是否有這顏色,然后通過這個顏色索引回該物體,然后把它剔除掉。DX9的occullsion query就是這樣弄。還有Occlusion Culling,我相信原理也是類似這樣。

            陸續更新中……

            posted on 2013-03-23 16:29 狂爛球 閱讀(2189) 評論(1)  編輯 收藏 引用 所屬分類: 圖形編程

            評論

            # re: 游戲中各種性能優化方法(不斷更新) 2015-03-12 09:34 痘印多久能消除

            骨骼動畫優化:
            利用GPU計算頂點是骨骼動畫優化的最有效手段,現在很多人的做法是只把骨骼動畫的矩陣轉到GPU,然后在GPU計算每個頂點的位置。這種做法受到了shader寄存器數量的限制。其實還有一種做法是把矩陣寫入一個1行的浮點紋理,試想一下,如果是1X1024的浮點紋理,那可以存1024 / 4 = 256個矩陣(1個像素是R32G32B32A32F四個浮點的紋理),這種方式要求顯卡支持并占一定的帶寬
            這點是學習到了,不錯,贊個  回復  更多評論   

            国产香蕉久久精品综合网| 久久婷婷五月综合色99啪ak| 久久免费看黄a级毛片| 久久久无码精品亚洲日韩蜜臀浪潮| 国产精品中文久久久久久久| 色诱久久久久综合网ywww| 亚洲国产精品人久久| 综合久久给合久久狠狠狠97色| 日韩人妻无码精品久久免费一| 91精品国产91久久久久久青草| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产成人精品白浆久久69| 国产精品gz久久久| 无遮挡粉嫩小泬久久久久久久| 亚洲精品国产成人99久久| 亚洲国产精品无码久久SM| 国产午夜精品久久久久九九| 久久精品人人做人人爽电影| 国产福利电影一区二区三区,免费久久久久久久精 | 久久精品国产亚洲麻豆| 久久天天躁狠狠躁夜夜不卡| 丰满少妇高潮惨叫久久久| 久久99这里只有精品国产| 久久青草国产手机看片福利盒子| 狠狠色丁香久久婷婷综合| 精品久久人人爽天天玩人人妻| 国产精品禁18久久久夂久| 无码国内精品久久综合88| 久久久久免费视频| 国产成人综合久久久久久| 国产精品美女久久久网AV| 国产成人久久精品区一区二区| 久久天天躁狠狠躁夜夜网站 | 久久天天躁狠狠躁夜夜躁2014| 理论片午午伦夜理片久久| 国产午夜电影久久| 久久久精品国产亚洲成人满18免费网站 | 合区精品久久久中文字幕一区| 狠狠色伊人久久精品综合网| 日本免费一区二区久久人人澡 | 欧美亚洲日本久久精品|