Unity3D的DrawMeshInstanced用法


Unity3D提供了Instanced渲染支持,虽然这是一个古董技术了,但是Unity的实现依然让人难以言状


1.Unity3D可以经由动态合批使用Instanced渲染,前提是

A使用的shader支持

B如果有需要instanced的参数,是不能直接合批的,因为instanced的参数必须用MaterialPropertyBlock 配置

因为存在两个前提,所以这条线路实用性不佳

2.Unity3D可以经由在Update函数中调用Unity3D的DrawMeshInstanced用法

实现批次渲染

或者通过CommandBuffer挂到摄像机上

Unity3D的DrawMeshInstanced用法


这里虽然很奇怪Unity是怎么把这个东西设计的这么不伦不类的,但是Instanced渲染的实用价值很高,所以还是值得学习一下。

先贴代码

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

一、首先你需要一个shader

默认创建一个SurfaceShader 就可以

Unity3D的DrawMeshInstanced用法

然后将_Color 作为一个Instanced 参数,定义和使用,都使用Unity提供的宏

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

Unity3D的DrawMeshInstanced用法

然后done

Unity3D的DrawMeshInstanced用法

Unity3D的DrawMeshInstanced用法

上一篇:Unity3D(五)渲染管线


下一篇:Unity3D获得服务器时间/网络时间/后端时间/ServerTime,适合单机游戏使用