渲染順序overdraw和alphatest有感

2021-09-22 21:10:39 字數 790 閱讀 1414

最近又重新看了看渲染順序 overdraw,適當的調節渲染對列可能會對效能優化有好處。

比如我們的地形渲染比較費,我選擇了更改的渲染佇列最後畫地形,這樣就擋住了不少畫素填充率,然後gpu內部會執行early-z技術,在頂點著色器與片段著色器之間提前進行深度測試,這樣就會少執行不少片段著色器,進而達到優化目的。

不過一般情況應該是不需要手動調節渲染佇列的,有可能反而自己手動調節還會造成overdraw上公升。

比如我把地形最後渲染,地形的突起的山擋住了人,那麼我先畫人,再畫山,山完全擋住了人,豈不是增加overdraw。好在我們專案沒有這個問題,一定距離後人就不顯示。

overdraw主要是透明畫素層次疊加太多導致的,還有alphatest的物體導致的。

alphatest主要浪費就是費在了開啟了alphatest就不能開啟early-z,不然會造成我深度寫入了結果我在frag片段著色器裡又把它剔除了,被剔除的部分因為寫入了深度還會起到遮擋後面物體的作用,所以顯示效果就會錯誤。

所以alphatest會在頂點,片段著色器之後才會執行深度測試,假如,我的山完全擋住了這個alphatest的物體,但是這個alphatest的物體還是會完整的走一遍頂點和畫素著色器的,走完後再進行深度測試結果發現沒有通過深度測試,那麼就會完全拋棄,這就是無用渲染。overdraw會增加。

所以盡可能多的使用alpha blend代替alpha test,因為alpha blend會提前執行ztest測試,被擋住的就不會渲染的。

有我理解錯誤的地方歡迎指出,我會虛心學習,共同交流,這兩天一直晚上再和大佬溝通交流,基礎補的不少。

html渲染順序和優化

部落格已經遷移到 html渲染順序 4 js,css如果有重定義,後定義函式覆蓋前定義函式 js載入 2 所以,js可以非同步載入,也可以寫在html文件的最下面。加快html頁面載入速度 1.頁面 a.刪除不必要的注釋和空格 b.將inline 內嵌 寫在html內 css,js外鏈的形式匯入 c...

UGUI渲染順序

1,當有多個canvas並且渲染模式都為overlay。這種情況下,渲染順序是由canvas元件下的sort order決定的,值越大的越後渲染。2,當有多個canvas並且渲染模式都為camera。這種情況下,渲染順序首先由rendener camera的depth值決定,值越大越後渲染。如果de...

react頁面渲染之前 react 渲染順序

工作中要對乙個 做再次更新,可能是渲染後更新或者部分元件渲染之後,對頁面效果做處理 之前對react的理解,僅僅停留在render渲染.這次好好理解了下react的生命週期 1 react元件有三種狀態 mounted 已插入真實的dom updating 正在被渲染 和 unmounted已移除真...