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的一系列转换操作,但增大了内存占用(如果多个物体在静态批处理之前共享了相同的几何体,则会为每个物体创建几何体的副本)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-07-14 unity坐标系间的转换