再不写忘了 哈哈哈
必须 mesh相同 materials相同 这点与静态批处理不同 静态批处理原理是合并网格 所以mesh不需要相同? 只要materials相同即可?
这是最新渲染api提供的一种技术,如果绘制1000个物体,它将一个模型的vbo提交给一次给显卡,至于1000个物体不同的位置,状态,颜色等等将他们整合成一个per instance attribute的buffer给gpu,在显卡上区别绘制,它大大减少提交次数
静态批处理和动态批处理,都有自己的优势和劣势。但这些都是在CPU端做的优化,实际上GPU的运行速度是很高的,一次性渲染20个对象和一次性渲染200个对象,几乎是一样的。以上两种提升渲染能力的方法都是针对Command buffer,那我们能不能另辟蹊径,针对GPU来做个优化。比如:一个Draw Call,绘制一个对象;那能不能告诉GPU,一个Draw Call ,给我绘制一百个对象
静态批处理的优先级要比 GPU Instancing 的优先级高,如果一个GameObject被标记为 static 物体并且在Build阶段成功地执行了静态合批,那么如果这个物体还要使用 Instancing Shader 渲染的话,Instancing会失效
动态批处理的优先级要低于 GPU Instancing ,如果一个GameObject使用Instancing渲染的话,那么对于它的Dynamic batching会失效
Unity3D研究院GPU Instancing实战(九十七) | 雨松MOMO程序研究院 (xuanyusong.com)
Unity中基于Gpu Instance进行大量物体渲染的实现与分析(一) -腾讯游戏学堂 (qq.com)
Unity3D研究院GPU Instancing测试 | 雨松MOMO程序研究院 (xuanyusong.com)
|