赞
踩
记录一下最近的学习内容,性能优化这方面主要是以下四个方面:
条件:标记为Batching Static的物体,在使用相同材质球的条件下
在项目打包的时候Unity会自动将这些物体合并到一个大Mesh里(类比)提取这些共享材质的静态模型的顶点和索引数据放到一个共享的Vertex buffer和Index buffer
优点:静态批处理并不减少DrawCall,减少的是Batches,减少了渲染状态设置
缺点:打包后体积增大,运行时内存增大
Untiy在运行时对符合条件的动态对象在一个DrawCall内绘制,降低DrawCall次数
基本条件:
原理:
运行时,在进行场景绘制之前,CPU上将所有共享同一材质的模型的顶点信息变换到世界空间中
然后通过一次DrawCall绘制多个模型,达到合批目的
是Unity5.4以后有的,同材质 同Mesh的物体,仅绘制一个,其他的物体复制出来
支持MeshRenderer和Graphics.DrawMesh调用,不支持SkinnedMeshRenderer
Unity自带的shader中有Enable GPU Instancing的选项,
自定义shader实现GPU Instancing UnityShader支持GPU Instance的方法 - 知乎
SRP Batcher是一个渲染循环,可加速相同Shader变体的多种材质 在场景中的CPU渲染速度
要求 Shader中的变体一致 降低SetPass Call 的消耗
SRP Bacher > Static Baching > GPU Instancing > Dynamic Baching
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。