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

Dophi's Technology Blog

享受知識共享帶來的愉快

3D圖形渲染通道負載優化的幾種方法【轉】

 

 
一般來說, 定位渲染通道瓶頸的方法就是改變渲染通道每個步驟的工作量, 如果吞吐量也改變了, 那個步驟就是瓶頸. 找到了瓶頸就要想辦法消除瓶頸, 可以減少該步驟的工作量, 增加其他步驟的工作量.

一般在光柵化之前的瓶頸稱作”transform bound”, 三角形設置處理后的瓶頸稱作”fill bound”

定位瓶頸的辦法

1. 改變幀緩沖或者渲染目標(Render Target)的顏色深度(16 到 32 位), 如果幀速改變了, 那么瓶頸應該在這里.

2. 否則試試改變貼圖大小和貼圖過濾設置, 如果幀速變了,那么瓶頸應該是在貼圖這里.

3. 否則改變分辨率.如果幀速改變了, 那么改變一下pixel shader的指令數量, 如果幀速變了, 那么瓶頸應該就是pixel shader. 否則瓶頸就在光柵化過程中.

4. 否則, 改變頂點格式的大小, 如果幀速改變了, 那么瓶頸應該在顯卡帶寬上.

5. 如果以上都不是, 那么瓶頸就在CPU這一邊.


優化方法36條:

1. 盡量減少無用的頂點數據, 比如貼圖坐標, 如果有Object使用2組有的使用1組, 那么不 要將他們放在一個vertex buffer中, 這樣可以減少傳輸的數據量.

2. 使用多個streamsource, 比如SkinMesh渲染, 可以把頂點坐標和法線這些每一幀都要修改的數據放在一個動態VB中, 其它不需要修改的(如貼圖坐標)放到一個靜態VB中, 這樣就減少了數據傳輸量.

3. 盡量使用16位的索引緩沖,避免32位的. 一方面浪費帶寬, 一方面也不是所有的顯卡都支持32位的索引緩沖.

4. 可以考慮使用vertex shader來計算靜態VB中的數據.比如SkinMesh的頂點可以放到vectex shader中計算, 這樣就可以避免每一幀都從AGP內存中向顯存傳送數據. 這樣也可以使用靜態VB了.

5. 堅決避免使用Draw**UP一族的函數來繪制多邊形.

6. 在設計程序之前好好規劃一下顯卡內存的使用, 確保framebuffer, 貼圖, 靜態VB能夠正好放入顯卡的本地內存中.

7. 盡量使頂點格式大小是32字節的倍數.可以考慮使用壓縮過的頂點格式然后用vertex shader去解. 或者留下冗余的部分, 使頂點大小剛好使32字節的倍數.

8. 頂點在頂點緩沖中的順序盡量符合繪制的順序, 考慮使用strips來代替list.

9. 如果可能盡量多的使用static vertex buffer代替dynamic vertex buffer

10. 動態VB使用DISCARD參數來lock更新, 使用NOOVERWRITE來添加.盡量不要使用不帶參數的lock調用(0)

11. 盡量減少lock的次數, 有些東西并不一定非要每一幀都更新VB, 比如人物動畫一般每秒鐘更新30次VB基本上就夠了.

12. 如果是因為需要繪制的頂點數據太多了可以考慮使用LOD, 但是現在的顯卡的繪制能力都很強勁, 所以需要權衡一下LOD是否能夠帶來相應的好處, 如果過分的強化LOD很可能將瓶頸轉移到CPU這邊.

13. 避免過多的頂點計算,比如過多的光源, 過于復雜的光照計算(復雜的光照模型), 紋理自動生成的開啟也會增加頂點的計算量. 如果貼圖坐標變換矩陣不是單位矩陣, 也會造成頂點計算量的增加, 所以如果紋理變換已經結束, 記得要將紋理變換矩陣設為單位矩陣同時調整貼圖坐標.

14. 避免Vertex shader指令數量太多或者分支過多, 盡量減少vertex shader的長度和復雜程度. 盡量使用swizzling代替mov

15. 如果圖象質量方面的計算(pixel shader)范圍很大, 并且很復雜, 可以考慮試試全屏反走樣.說不定更快.

16. 盡量按照front – back的順序來繪制.

17. 在shader中判斷Z值可以避免繪制不可見的象素, 但是nvidia建議簡單的shader不要這么做.(Don’t do this in a simple shader)

18. 如果可能, 盡量使用vertex shader來代替pixel shader.將計算從逐象素變成逐頂點.

19. 盡量降低貼圖的大小.過大的貼圖可能造成貼圖cache過載, 從而導致貼圖cache命中降低.過大的貼圖會導致顯存過載, 這時候貼圖是從系統內存中取的.

20. 只要可能就用16位色的貼圖, 如環境貼圖或者shadow map.它們用32位色的貼圖實在是浪費.

21. 考慮使用DXT 貼圖壓縮

22. 如果可能,使用簡單的貼圖過濾或者mip map, 除非必要否則盡量不要使用三線過濾和各項異性過濾. light map 和 環境貼圖基本上都不需要使用它們.

23. 只有真正需要修改的貼圖才使用Dynamic, 并且使用DISCRAD和WRITEONLY來lock

24. 太多的幀緩沖讀寫可以考慮關閉Z-Writes如有些多pass的渲染中的后續pass或者粒子系統等半透明幾何物體(如果可以)

25. 可能的話盡量使用alpha test代替alpha blending

26. 如果不需要stencil buffer就盡量使用16位的Z buffer

27. 減小RenderTarget 貼圖的大小, 如shadow map 環境貼圖. 可能根本不需要那么大效果就很好.

28. Stencil 和 Z buffer 盡量一起clear. 他們本來就是一塊緩沖.

29. 盡量減少渲染狀態的切換, 盡量一次畫盡可能多的多邊形.(根據顯卡性能決定最多畫多少, 不過一般再多也不會多到哪里去。 除非你根本不需要貼圖和渲染狀態的切換)

30. 盡量使用shader來代替Fixed Pipeline.

31. 盡量使用shader來實現來取代Multipass渲染效果.

32. 盡量優先先建立重要的資源, 如Render target, shaders, 貼圖, VB, IB等等.以免顯存過載的時候它們被創建到系統內存中.

33. 堅決不要在渲染循環中調用創建資源

34. 按照shader和貼圖分組后再渲染.先按照shaders分組再按貼圖.

35. Color Stencil Z buffer盡量在一次Clear調用中清除.

36. 一個Vertex buffer 的大小在2M-4M之間最好.

posted on 2009-01-23 09:42 dophi 閱讀(1126) 評論(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>
            国产一区二区三区精品欧美日韩一区二区三区 | 久久国产精品99国产| 国产精品久久网站| 午夜久久福利| 久久成人免费| 亚洲国产高清在线观看视频| 亚洲国产成人不卡| 欧美色欧美亚洲另类七区| 亚洲欧美日韩人成在线播放| 午夜欧美大片免费观看| 蜜桃av一区| 久久精品国产第一区二区三区| 在线亚洲+欧美+日本专区| 国产精品一区视频网站| 久久久免费观看视频| 欧美va亚洲va日韩∨a综合色| 一本色道久久综合狠狠躁篇的优点| 亚洲美女色禁图| 国产一区二区日韩| 亚洲人成绝费网站色www| 国产精品久久精品日日| 蘑菇福利视频一区播放| 欧美日韩你懂的| 久久综合99re88久久爱| 欧美日韩国产限制| 久久综合网hezyo| 欧美日韩国产片| 久久综合电影一区| 国产精品毛片| 亚洲国产激情| 国产在线成人| 亚洲午夜精品| 亚洲日本乱码在线观看| 欧美一区二区三区四区在线观看 | 亚洲大片免费看| 一区二区三区欧美日韩| 亚洲福利视频一区二区| 亚洲一区精品电影| 一本久道久久综合婷婷鲸鱼| 久久久久一本一区二区青青蜜月| 中文在线不卡视频| 女人色偷偷aa久久天堂| 久久久精品久久久久| 国产精品福利av| 最近看过的日韩成人| 狠狠色综合日日| 香蕉成人伊视频在线观看| 宅男噜噜噜66一区二区 | 宅男精品视频| 日韩亚洲国产精品| 免费一区二区三区| 欧美日韩一区二区三区在线| 欧美 日韩 国产在线| 国产麻豆精品视频| 亚洲综合电影一区二区三区| 亚洲一区二区三区激情| 欧美日韩视频专区在线播放| 亚洲茄子视频| 日韩一级大片| 欧美精品免费在线| 最新日韩中文字幕| 亚洲伦伦在线| 欧美精选午夜久久久乱码6080| 欧美凹凸一区二区三区视频| 黄色一区三区| 久久久久久久久久久久久9999| 久久亚洲综合网| 在线观看日韩精品| 美女视频黄 久久| 亚洲高清视频中文字幕| 亚洲精品一区二区三区四区高清 | 欧美精品日韩| 日韩视频中文字幕| 欧美日韩国产影片| 艳妇臀荡乳欲伦亚洲一区| 日韩亚洲欧美高清| 国产精品国产三级国产专区53| 夜夜爽www精品| 亚洲欧美日韩成人| 国产日韩免费| 久久九九电影| 亚洲人成免费| 亚洲欧美国产精品专区久久| 国产婷婷精品| 免费不卡在线观看| 亚洲作爱视频| 久久久久免费视频| 亚洲精品免费电影| 国产精品视频成人| 久久另类ts人妖一区二区| 亚洲国产精品久久久久秋霞不卡| 国产精品99久久久久久久vr| 国产女优一区| 男人插女人欧美| 亚洲少妇中出一区| 牛牛国产精品| 亚洲一区二区免费在线| 激情综合色丁香一区二区| 欧美国产视频日韩| 欧美一区二区高清| 亚洲伦伦在线| 久久久久久亚洲精品中文字幕| 亚洲精品久久久久中文字幕欢迎你 | 欧美精选一区| 久久福利影视| 一本色道久久综合亚洲精品不 | 亚洲综合不卡| 136国产福利精品导航网址应用| 欧美色区777第一页| 久久全国免费视频| 亚洲欧美日韩在线观看a三区| 欧美高清在线视频观看不卡| 欧美亚洲免费高清在线观看| 亚洲精品美女| 国内激情久久| 国产精品一区2区| 欧美精品精品一区| 久久亚洲精品一区二区| 亚洲女女女同性video| 亚洲精品一区在线| 欧美成人性网| 麻豆精品在线播放| 久久精精品视频| 亚洲一区二区三区中文字幕在线| 亚洲丶国产丶欧美一区二区三区 | 久久综合狠狠| 久久精品视频亚洲| 欧美一区二区三区四区在线观看| 一本色道久久综合亚洲精品高清 | 久久精品91久久香蕉加勒比| 亚洲综合第一页| 亚洲影视九九影院在线观看| 99精品国产99久久久久久福利| 国产欧美一区二区精品仙草咪| 一本色道久久88综合日韩精品| 久久综合中文色婷婷| 久久高清免费观看| 久久精品国产99| 久久成人18免费观看| 午夜精品国产更新| 午夜欧美视频| 欧美在线999| 欧美在线亚洲一区| 久久久精品动漫| 久久久久国产精品麻豆ai换脸| 欧美一区影院| 欧美制服丝袜| 久久婷婷国产综合精品青草| 久久久久久亚洲综合影院红桃 | 夜夜爽99久久国产综合精品女不卡| 亚洲人成网站777色婷婷| 亚洲啪啪91| 这里只有精品视频| 亚洲欧美中文日韩在线| 性色av香蕉一区二区| 久久久777| 欧美国产日韩一区| 亚洲精品美女久久7777777| 一本到12不卡视频在线dvd| 在线一区二区三区四区五区| 亚洲综合社区| 久久免费视频观看| 欧美美女喷水视频| 国产精品欧美在线| 在线电影欧美日韩一区二区私密| 亚洲国产精品成人精品| 制服丝袜亚洲播放| 欧美中文在线观看国产| 欧美大胆a视频| 一区二区免费看| 久久精品国产亚洲5555| 欧美精品激情| 国产午夜精品美女视频明星a级| 亚洲大胆在线| 亚洲专区欧美专区| 欧美不卡视频一区发布| 国产精品99久久久久久人| 欧美一区在线直播| 欧美精品一区二区在线观看| 国产日本欧美一区二区三区| 亚洲人体大胆视频| 欧美一区二区三区在线观看视频| 欧美不卡一区| 亚洲欧美日韩精品在线| 欧美精品久久久久久久免费观看 | 国产亚洲精品高潮| 99人久久精品视频最新地址| 久久成人精品视频| av成人毛片| 欧美.日韩.国产.一区.二区| 国产美女精品一区二区三区| 亚洲精品视频啊美女在线直播| 久久er精品视频| 一本久久综合| 免费成人高清在线视频| 国产亚洲精品久久久久动| 亚洲午夜免费福利视频| 亚洲动漫精品| 久久婷婷蜜乳一本欲蜜臀| 国产欧美精品国产国产专区|