Unity_降低OverDraw提高性能
1.OverDraw : 重復(fù)繪制,即在一個已存在像素的位置再次繪制其他像素0。
? ??Unity渲染時,渲染整個屏幕,該屏幕由數(shù)百萬個像素組成。如果這些像素總被繪制了一次以上,那么就造成了OverDraw,導(dǎo)致GPU渲染壓力增大。
? ? 這種情況最常見于透明幾何體,因?yàn)槭紫壤L制不透明世界,然后逐次將其與半透明對象混合繪制。
2.?填充率: Fill Rate(填充率)是指顯卡每幀或者說每秒能夠渲染的像素?cái)?shù)。在每幀繪制中,如果一個像素被反復(fù)繪制的次數(shù)越多,那么它占用的資源也必然更多。
? ? 目前在移動設(shè)備上,F(xiàn)illRate 的壓力主要來自半透明物體。因?yàn)槎鄶?shù)情況下,半透明物體需要開啟 Alpha Blend 且關(guān)閉 ZTest(深度測試)和 ZWrite(深度寫入),同時如果我們繪制像 alpha=0 這種實(shí)際上不會產(chǎn)生效果的顏色上去,也同樣有 Blend 操作,這是一種極大的浪費(fèi)。
3、在Unity中,填充率并不能被直接統(tǒng)計(jì)到,但是我們可以通過查看來大致查看,但是Unity提供的查看OverDraw的視圖其實(shí)是不太準(zhǔn)確的,如果需要精確的查看的話,需要自己實(shí)現(xiàn)。
4、如何降低 OverDraw:
?。?)盡量減少 alpha = 0 的資源的使用,因?yàn)檫@種資源也會參與繪制,占用一定的GPU。
?。?)制作圖片的時候,盡量使其排布緊湊,避免大面積透明。
?。?)避免無用對象及組件的過度使用。

5、另外,游戲運(yùn)行時導(dǎo)致手機(jī)發(fā)燙,主要就是CPU和GPU的占用率過高引起的,而填充率或者說是OverDraw過高,是導(dǎo)致GPU占用率過高的原因之一。
? ? 減少overdraw,一般出現(xiàn)在渲染模式為透明的場景中。在場景【scene】下拉列表中選擇overdraw就能看見,越亮的地方就是overdraw最多的部分。
