unity srpbatch原理(转)

转自:Unity SRP Batcher的工作原理 - 知乎 (zhihu.com)

个人理解:srpbatch不是减少drawcall的次数,而是减少了一次drawcall的耗时,具体参考:

 

 

原理:在gpu内存存储material数据,这样drawcall的时候只需要传参数过来而不用进行一堆material的设置。为了达到这样的效果,你可以使用尽量多的同一个shader,但不同的材质,但是尽量少的shader变体。

SRP Batcher 通过批处理(batching)一系列绑定(Bind)和绘制(Draw)GPU 命令,来减少DrawCalls之间的GPU 设置(工作量)。也就是之前一堆绑定和绘制的GPU命令,老子一口气给它处理完。不需要一步步设置。

SRP Batcher 兼容性

用SRP Batcher去渲染一个物体的条件如下:

1、渲染的物体必须是一个mesh或者skinned mesh。不能是粒子。

2、Shader代码必须兼容SRP Batcher。

3、该材质不能在运行中被代码修改MaterialPropertyBlock,否则也无法compatible SRP Batcher。(12月24号更新)

用法:必须声明所有内建引擎properties 在一个名为"UnityPerDraw"的CBUFFER里。

Unity 性能优化 之 非常酷的SRP Batcher! - 知乎 (zhihu.com)

 

动态合批:在绘制前将可以合批(相同材质....)的对象的顶点信息转换到同一坐标系(世界)下,传递给gpu,让gpu认为这些对象是一个对象,一次绘制出来。

静态合批:将静态物体(除root节点不可移动)合并网格,可能会影响包体的大小,与动态批处理相比省去了在运行时cpu的一系列转换操作,但增大了内存占用(如果多个物体在静态批处理之前共享了相同的几何体,则会为每个物体创建几何体的副本)。

 

posted @   mc宇少  阅读(1127)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2020-07-14 unity坐标系间的转换
点击右上角即可分享
微信分享提示