Unity3D提供了Instanced渲染支持,雖然這是一個古董技術了,但是Unity的實現依然讓人難以言狀
1.Unity3D可以經由動態合批使用Instanced渲染,前提是
A使用的shader支持
B如果有需要instanced的參數,是不能直接合批的,因為instanced的參數必須用MaterialPropertyBlock 配置
因為存在兩個前提,所以這條線路實用性不佳
實現批次渲染
或者通過CommandBuffer掛到攝像機上
這里雖然很奇怪Unity是怎么把這個東西設計的這么不倫不類的,但是Instanced渲染的實用價值很高,所以還是值得學習一下。
先貼代碼
https://gitee.com/lightsever/unity_tips/tree/master/DrawInstance
一、首先你需要一個shader
默認創建一個SurfaceShader 就可以
然后將_Color 作為一個Instanced 參數,定義和使用,都使用Unity提供的宏
二、然后你需要初始化矩陣和MaterialPropertyBlock
然后done