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