Unity 性能优化(批处理,GPU Instancing,SRP Batcher)
U3d场景中的性能优化方案
记录一下最近的学习内容,性能优化这方面主要是以下四个方面:
1.静态批处理
条件:标记为Batching Static的物体,在使用相同材质球的条件下
在项目打包的时候Unity会自动将这些物体合并到一个大Mesh里(类比)提取这些共享材质的静态模型的顶点和索引数据放到一个共享的Vertex buffer和Index buffer
优点:静态批处理并不减少DrawCall,减少的是Batches,减少了渲染状态设置
缺点:打包后体积增大,运行时内存增大

2.动态批处理
Untiy在运行时对符合条件的动态对象在一个DrawCall内绘制,降低DrawCall次数
基本条件:
- 不超过300个顶点(不超过总计900个属性)
- Shader使用顶点位置,法线,UV可以包含300个顶点,shader使用顶点位置,法线,UV0,UV1,切线,则只能包含180个顶点
- 不包含镜像的Scale缩放,比如物体A Scale为1,物体B Scale为-1
- 材质一样
- 物体的lightmap指向的位置一样
原理:
运行时,在进行场景绘制之前,CPU上将所有共享同一材质的模型的顶点信息变换到世界空间中
然后通过一次DrawCall绘制多个模型,达到合批目的

3.GPU Instancing
是Unity5.4以后有的,同材质 同Mesh的物体,仅绘制一个,其他的物体复制出来
支持MeshRenderer和Graphics.DrawMesh调用,不支持SkinnedMeshRenderer
Unity自带的shader中有Enable GPU Instancing的选项,
自定义shader实现GPU Instancing UnityShader支持GPU Instance的方法 - 知乎

4.SRP Batcher
SRP Batcher是一个渲染循环,可加速相同Shader变体的多种材质 在场景中的CPU渲染速度

要求 Shader中的变体一致 降低SetPass Call 的消耗

优先级顺序:
SRP Bacher > Static Baching > GPU Instancing > Dynamic Baching
总结:

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐


所有评论(0)