Overdraw
這次來看一下有關性能方面的大殺手 Overdraw。 相信許多特效的夥伴對這名詞一定不陌生。
Overdraw可以解釋為,在一幀中,同一個像素的多次(重複)的繪製。而畫面當中大量的 Overdraw 則是手機/移動平台上的性能大忌。會很嚴重的影響到 FPS 。
目前市面上的 手機/移動平台是 採用 TBR(tile-based rendering)的渲染方式,因此在 CPU 到 GPU 之間需要傳輸大量的數據,而大量的 Overdraw 則會導致 頻寬消耗 ,造成渲染性能(FPS)下降。
再來從渲染管線來看,手機/移動平台的渲染管線大都是 Forward Rander (向前渲染) 的原因,因此容易造成大量 Overdraw 的因素大部分會產生在 Transparent 跟 UI 層級 以及 Post Processing (後處理) 上面。
而為了避免Overdraw造成的性能浪費,在素材製作上製作也必須有些基本的概念。
1.特效的效果則有很大部分都會藉由粒子系統的效果產生大量的 Mesh,從而導致大量的疊加情況。需要限制噴發模型數量,來減少疊加的狀況。
2.UI的製作上也避免過多的層級疊加。
3.Post Processing (後處理) 避免使用過多的後處理。由於每一種後處理都是全屏幕的像素繪製。
最後性能檢測方面。我們可以用最值觀的 引擎內的 Overdraw 模式 來檢視。或是可以用 Render doc 來進行更仔細的幀 畫面分析。
Render doc 單場景大量粒子疊加Overdraw畫面
或是可以用 OverdrawMonitor 工具來觀察畫面 的 Overdraw 比例。原則上再依畫面盡量能保持在 3.0 以內為最好。(1.0 即是每一項像素只繪製一次)
References:
留言
張貼留言