IMR:即時渲染模式,來個DC立刻渲染,渲染的時候需要訪問顯存的RT,這種速度是最快的,但帶寬高。
TBR:把渲染的屏幕分層多個小格,渲染指令來了之後可以執行VertexShader,光柵化得到片元信息後會在這個像素對應的片元隊列上排隊,等到切換RT的時候才一次性渲染所有片元,渲染Tile的時候把Tile對應的Buffer複製到高速緩存,這樣就不用頻繁訪問顯存,當渲染結束後把數據寫回顯存。這樣速度比IMR慢,但是帶寬低,適合移動平臺。因爲所有渲染的片元需要建立一個隊列,當片元太多的時候就不夠空間了,而在手遊通常不會暫用太多空間,也能用。
TBDR:D是Defer的意思,在TBR存儲的隊列中,其實已經知道了片元的深度了,所以可以用硬件做ealy-z,或者叫HSR(Hidden Surface Removal,隱藏面消除),假如渲染的是不透明物體,則隊列上總是隻有最前面那個片元,其他的和TBR類似。
現在Unity可以使用可編程渲染管線,對於RT的loadop和storeop要選擇合適的參數,減少帶寬,同時合理安排渲染順序,減少RT的切換。
Reference:
https://www.expreview.com/24705-3.html