当前位置:   article > 正文

Unity 性能优化(批处理,GPU Instancing,SRP Batcher)_unity gpu instancing 性能提升

unity gpu instancing 性能提升

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

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

 总结: 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号