用MaterialPropertyBlock能減少drawCall嗎?

時間 2021-05-29 22:29:29

1樓:xiantong

MaterialPropertyBlock(MPB)的特點:

減少material例項數量(減少建立消耗和記憶體占用)

加快setPass速度

和gpu instancing沒啥關係,不過如果在用gpu instancing時想改per-instance property,只能用MPB

會打斷 static/dynamic batch,不會打斷gpu instancing batch(前提是滿足batch條件 ,shader參考@果綠橙)

適用性強,gpu instancing要求同一mesh,貼圖一樣,MPB沒這些要求

根據官方,5.4之後[PerRendererData]已經變成editor-only了,不會影響效能,只是防止亂改material中的值

2樓:創世者

首先MaterialPropertyBlock是用於解決材質例項化的記憶體問題。

其次,可能MaterialPropertyBlock同樣會打斷合批,我嘗試了@果綠橙提供的方法也不能合批。但Unity2019.4的URP中提供了根據Shader進行合批的特性,可以嘗試一下。

3樓:果綠橙

這個東西相當於在shader裡增加了乙個陣列, 然後每乙個物件根據自己的Gpu instance的值去索引你修改的值. 具體你需要在shader那邊開啟GPU INSTANCE. 如下, 我修改了_Color.

Shader "Unlit/PropertyBlock"

4樓:

用 MaterialPropertyBlock 的目的是修改單體材質球屬性時不生成新的材質球例項。 因為材質球例項無法跟其他的原始材質球一起批處理, 所以如果因為需要修改單個材質球屬性造成的無法 batch, 用MaterialPropertyBlock 可以解決。 如果本身就沒法batch的, 你用MaterialPropertyBlock 也不會有效果。

另外沒事去研究下效能瓶頸, 不要整天跟 dc 幹仗。 現在的裝置幾百幾千個dc 完全吃得住。 主要還是shader優化和場景優化。

打招呼用 Hello 跟用 Hi 或者用 Hey 的區別是什麼?

看了很多答案想補充一點 Hello除了比較正式之外,其實還有另一層意思 What thehell OMG I should meet u 據說故事是這樣的 哈其實沒有故事 這只是個沒有根據的腦洞 逃 腦花君 Hello完全取決於語氣。這個不用解釋,你發著顛兒帶上三個波浪號,那就是親近 只微微一點頭那...

用latex在beamer下 用 textit 斜體無效 textbf可以 有大神知道怎麼解決嗎?

xyj2230 textit textbf 之類的各種字型風格設定命令是否有效,取決於你選用的字型檔是否存在這些字模,不存在對應字模,選擇無效。比如很少中文字庫中有 italic 字模,所以,命令 textit 對漢字無效。對於西文,解決方法是選用字型風格比較全的西文字庫。如 usepackage ...

用 Safari Chrome Firefox Opera IE 之外的瀏覽器的人是出於哪些原因做出這個決定的?

也許有操作比較傻瓜化的feature剛好解決了某些痛點 比如在ipad上我會使用QQ瀏覽器,戳兩下就能設定user agent為 電腦 朋友來家裡玩看到我用Chrome,各種吐槽它簡陋功能少,同時各種誇360瀏覽器功能高大上方便好用。每個人的需求不同,就這麼簡單,有什麼好爭的。 有乙個滿意策略 Sa...