省頻寬、耗電小,騰訊遊戲學院專家解析手遊渲染架構
什麼是TBR?
全稱是Tile Based Rendering,主要用在移動裝置(手機、平板)上的一種渲染架構,渲染時將螢幕分割成小塊,分別渲染。每塊大小為16×16 或32×32等(不同產品各不相同),特點是省頻寬,耗電小。
與之對應的是IMR(Immediate Mode Rendering),提交的每個渲染要求都會立即開始,這是一種簡單而又粗暴的思路,優點缺點都非常明顯,如果不用為效能擔憂,這種方式會很省事。
片上快取(On-Chip Buffer)
TBR裝置在GPU內部整合有很小的片上快取(On-Chip Buffer),片上快取,在渲染時會先將一個Tile內的影象先渲染到片上快取,然後在拷貝到主視訊記憶體中。而IMR渲染則是直接由GPU操作視訊記憶體。片上快取相比於視訊記憶體中的Frame Buffer具有更快的訪問速度,但是隻有很小的儲存空間(16×16畫素或32×32畫素)。
與IMR相比,TBR在GPU上多出一塊片上快取。
IMR與TBR在渲染流程上的對比(紅色陰影表示頻寬消耗熱點)
由上圖可以看出,IMR和TBR在頻寬消耗上有比較大的差異,左側的IMR渲染時,Depth Test和Alpha Test等由於需要頻繁訪問視訊記憶體,導致有很大的頻寬消耗。而右側的TBR渲染方式由於Depth Test和Alpha Test都只需要跟片上快取互動即可,避免了和視訊記憶體之間的頻寬消耗。
Tiling(分塊)
為了能夠按照逐個Tile渲染,在一幀的繪圖指令全部提交完成並經過頂點運算後後,會在記錄下每個Tile中對應的Triangle List。並儲存在FrameBuffer中,等待光柵化時從FrameBuffer讀取相應的Tile的TriangleList進行處理。
Resove和Restore
由於GPU的片上快取的儲存空間非常有限,因此渲染完成一個Tile之後,需要將結果複製到FrameBuffer中,這個過程稱作Resove。
如果一幀內需要多遍渲染時,在對Tile進行渲染的時候往往需要從FrameBuffer中將對應Tile中舊的資料讀取到片上快取,這個過程稱為Restore。
Resove和Restore會導致大量的頻寬消耗,需要儘量避免。
如果在渲染過程中需要頻繁的切換FrameBuffer,要注意呼叫順序,避免浪費頻寬。
會導致Resove+Restore的OpenGL ES呼叫。
- eglSwapBuffers
- glBindFramebuffer
- glTexImage2D,glTexSubImage2D,
- glBufferData,glBufferSubData
- glCopyTexImage2D ,glCopyTexSubImage2
- glReadPixels()
- (參考:Adreno_Developer_Guide.pdf第38頁)
例項:為什麼在Unity中使用Grap Pass實現螢幕扭曲非常慢?
由於Unity中的Grap Pass是插在渲染過程中的,每渲染一次,會呼叫一次glBufferSubData,會導致Resorve和Restore。
可能做的優化:
等場景全部渲染完之後再在最上層疊加一個扭曲效果。
跟其他後處理合並處理。
例項:關於後處理
每個後處理會導至少增加一次Resorve。
可能的優化:
將多種後處理效果放在一個shader中可以減少Resove發生次數。
某些效果低解析度可以減少頻寬。
例項:實時陰影
Shadow map方式實現的實時陰影,需要首先將攝像機放在光源處,將場景深度渲染到一張紋理上,因此除了draw call的增加外,頻寬的增加也很多。
- 可能的優化:
- 使用更小的RT。
- 如果能接受的話,可以嘗試鎮魔曲中影子的做法,即將主角壓扁,用黑色紋理渲出來。
減少頻寬消耗的建議
1、減少頂點數和圖片尺寸。
2、圖片壓縮(ETC,ATC,PVRTC等)。
3、除介面外,幾乎所有貼圖都建議生成Mipmap(減小頻寬消耗,增加快取命中)。
4、儘量減少Resove和Restore,儘量減小RenderTexture的尺寸。
- 全屏後處理
- 實時陰影(shadow map)
- 扭曲
- 實時反射
- 5、優化Shader。
- 使用低精度浮點數
TBR特有的兩個OpenGL ES擴充套件
1、Framebuffer Fetch
允許Shader中直接訪問片上快取中當前的顏色和深度。
可以用來實現高效的Color Grading、高度霧之類。
2、Pixel Local Storage
允許在片上快取中儲存和讀取自定義的資料格式,大小為每畫素128位元組或256位元組。
可以用來實現高效的延遲光照渲染(在片上快取中儲存G-Buffer)。
關於騰訊遊戲學院專家團
如果你的遊戲也富有想法充滿創意,如果你的團隊現在也遇到了一些開發瓶頸,那麼歡迎你來聯絡我們。騰訊遊戲學院聚集了騰訊及行業內策劃、美術、程式等領域的遊戲專家,我們將為全世界的創意遊戲團隊提供專業的技術指導和遊戲調優建議,解決團隊在開發過程中遇到的一系列問題。
申請專家資源請前往:
https://gwb.tencent.com/cn/tutor
作者:Hailong
來源:騰訊GWB遊戲無界
原地址:https://mp.weixin.qq.com/s/AaFyeIb9ZCPyZzcKEhh1rw
相關文章
- 騰訊遊戲學院專家:PBR渲染模型的理論及具體應用遊戲模型
- 騰訊遊戲學院專家帶你快速瞭解PBR遊戲
- 騰訊遊戲學院專家:如何避免出海遊戲伺服器水土不服?遊戲伺服器
- 騰訊遊戲學院專家:手遊開發,該如何做好Android記憶體優化?遊戲Android記憶體優化
- Crash率10%降至1%,騰訊遊戲學院專家是這樣打磨遊戲的遊戲
- 騰訊遊戲學院專家:UE高階效能剖析技術之RHI遊戲
- 騰訊遊戲學院專家:做一個多執行緒遊戲框架可以多簡單?遊戲執行緒框架
- 頻寬利用率提升50%,騰訊雲聯網架構方案解析架構
- 斷線卡頓怎麼辦?騰訊遊戲學院專家談網路遊戲同步技術遊戲
- 騰訊遊戲學院專家例項剖析:如何優化休閒遊戲的美術風格?遊戲優化
- 騰訊遊戲學院專家眼中,是如何看待遊戲設計時常遇見的三個問題遊戲設計
- 騰訊遊戲學院專家:如何延長玩家遊戲時間,並調動玩家二次創作?遊戲
- 騰訊遊戲學院專家教你七步做數值遊戲
- 打造獨立遊戲孵化新模式,騰訊遊戲學院助力遊戲多元發展遊戲模式
- 如何應對CPU幀率瓶頸和卡頓?騰訊遊戲學院專家帶你剖析遊戲
- 騰訊遊戲學院圓桌:《妄想山海》的打磨之路遊戲
- 遊戲架構 遊戲架構設計(8)遊戲架構
- 【省頻寬、壓成本專題】從產品架構來看,PCDN如何節流50%架構
- 騰訊遊戲深度定製,騰訊黑鯊遊戲手機3系新品正式亮相遊戲
- 騰訊光子專家:遊戲互動設計師如何在遊戲體驗上創新?遊戲
- 騰訊在海外投了這37家遊戲公司遊戲
- 2020·騰訊遊戲投資版圖全解析遊戲
- 騰訊全球遊戲平臺“WeGame X”上線 上架22款遊戲遊戲GAM
- 小度牽手騰訊先鋒雲遊戲,成為賽事智慧音響獨家合作伙伴遊戲
- 專訪騰訊沈黎:為什麼今天的遊戲,不像「遊戲」了?遊戲
- 黑鯊同騰訊共同推出的騰訊黑鯊遊戲手機3,遊戲實際表現如何?遊戲
- 莉莉絲遊戲引擎渲染專家凱丁:從MMO到獨立遊戲,再到引擎技術遊戲引擎
- 十年投了150家遊戲公司,騰訊遊戲投資的三大策略遊戲
- 猜拳小遊戲——耗時好長要瘋了遊戲
- 騰訊先遊引爆遊戲新浪潮,騰訊雲遊戲送上新春現金豪禮遊戲
- WebGL著色器渲染小遊戲實戰Web遊戲
- 騰訊投資入股手遊研發商納仕遊戲 持股20%遊戲
- 騰訊“START雲遊戲” 陳年電腦實測遊戲
- 安卓手機耗電、卡頓嚴重的解決方法 安卓手機省電小妙招安卓
- 求變的騰訊遊戲遊戲
- 騰訊重回遊戲時代遊戲
- 騰訊資料庫專家雷海林分享智慧運維架構資料庫運維架構
- 奇樂同享,“任”式好遊戲!任天堂攜手騰訊遊戲首度亮相ChinaJoy遊戲