Unity 性能优化(批处理,GPU Instancing,SRP Batcher)

记录一下最近的学习内容,性能优化这方面主要是以下四个方面:

1.静态批处理

       条件:标记为Batching Static的物体,在使用相同材质球的条件下

在项目打包的时候Unity会自动将这些物体合并到一个大Mesh里(类比)提取这些共享材质的静态模型的顶点和索引数据放到一个共享的Vertex buffer和Index buffer

优点:静态批处理并不减少DrawCall,减少的是Batches,减少了渲染状态设置

缺点:打包后体积增大,运行时内存增大

2.动态批处理

Untiy在运行时对符合条件的动态对象在一个DrawCall内绘制,降低DrawCall次数

基本条件:

  1. 不超过300个顶点(不超过总计900个属性)
  2. Shader使用顶点位置,法线,UV可以包含300个顶点,shader使用顶点位置,法线,UV0,UV1,切线,则只能包含180个顶点
  3. 不包含镜像的Scale缩放,比如物体A Scale为1,物体B Scale为-1
  4. 材质一样
  5. 物体的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

 总结: 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值