Unity3D的DrawMeshInstanced用法



Unity3D提供了Instanced渲染支持,雖然這是一個古董技術了,但是Unity的實現依然讓人難以言狀


1.Unity3D可以經由動態合批使用Instanced渲染,前提是

A使用的shader支持

B如果有需要instanced的參數,是不能直接合批的,因為instanced的參數必須用MaterialPropertyBlock 配置

因為存在兩個前提,所以這條線路實用性不佳

2.Unity3D可以經由在Update函數中調用image

實現批次渲染

或者通過CommandBuffer掛到攝像機上

image


這里雖然很奇怪Unity是怎么把這個東西設計的這么不倫不類的,但是Instanced渲染的實用價值很高,所以還是值得學習一下。

先貼代碼

https://gitee.com/lightsever/unity_tips/tree/master/DrawInstance

一、首先你需要一個shader

默認創建一個SurfaceShader 就可以

image

然后將_Color 作為一個Instanced 參數,定義和使用,都使用Unity提供的宏

二、然后你需要初始化矩陣和MaterialPropertyBlock

image

然后done

image

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM