当前位置: 首页 > article >正文

合批Batching

一、stats面板

FPS:帧率

表示一秒可以渲染的帧数,FPS 数值越高,游戏场景的动画显示会更加平滑和流畅

一般来说,超过 30 FPS的画面人眼不会感觉卡,因此游戏画面每秒帧数至少保证在30以上

其中 1s=1000ms ,当 1s 可以渲染30帧时,那么 1ms 可以渲染 1000/30 帧

CPU:当前占用CPU进行计算的时间绝对值

  • 获取当前占用CPU进行计算的时间绝对值,或时间点,如果Unity 主进程处于挂断或休眠,CPU time 保持不变

Render Thread:GPU 渲染所花费的时间

  • GPU 渲染进程处理图像所花费的时间,具体数值有GPU性能决定

Batches:批处理(合批)

DrawCall : CPU每次调用图形API命令GPU进行渲染的操作

批处理指的是将多个DrawCall合并为一个DrawCall,可以让CPU将满足条件的多个对象的渲染组合到一个内存块中以便减少由于资源切换而导致的 CPU 开销

其中一个批次(Batch)指的是CPU把数据加载到显存,然后设置渲染状态及数据,之后CPU调用DrawCall命令的这一整个过程就是一个Batch

SetPass Call:Shader中的Pass被切换的次数


二、如何降低批次

1.动态合批

网格的动态批处理旨在优化旧低端设备的性能。在现代消费类硬件上,动态批处理在 CPU 上所做的工作可能大于绘制调用的开销。这会对性能产生负面影响。

动态合批就是将材质相同的动态对象合并到一个批次中渲染,但是其中每个对象的顶点数都不能超过300,其所有的顶点属性不得超过900

动态合批由于是运行时合并网格,因此不仅会增大内存,还会占用CPU时间。动态合批一般应用在一些小物体的合并上,比如小的道具或者特效等

2.静态合批

静态合批是将勾选了静态的对象(相同材质为前提)合并成一个大往往以减少绘制调用。它将组合的网格转换为世界空间,并为它们构建一个共享顶点和索引缓冲区。然后,对于可见网格,Unity 会执行一系列简单的绘制调用,每个调用之间几乎没有状态变化。
静态批处理不会减少绘制调用的数量(DrawCall),而是减少它们之间的渲染状态更改的数量

静态合批实际上是引擎在打包或者烘焙时候,将同材质的物体合并成一个更大的物体,这样相同材质的物体只需要一次渲染状态设置和一次DrawCall调用,也就一个批次。由于合并生成大的模型后,会占用额外的内存空间,比如三个同材质的立方体的网格就是一个简单的立方体,合并后的网格占用是三个世界空间立方体的组合,因此有时候需要考虑静态合批带来的内存增长

3.GPU实例化

实例化的网格模型必须相同,材质相同,但材质属性可以不同


http://www.kler.cn/a/594641.html

相关文章:

  • 【DR_CAN-最优控制笔记】02.动态规划_Dynamic Programming_基本概念
  • 力扣977. 有序数组的平方(双指针技巧)
  • 三、小白学JAVA-比较运算符与循环
  • Java设计模式之责任链模式
  • UML(统一建模语言)中总共有哪些图
  • ubuntu20如何升级nginx到最新版本(其它版本大概率也可以)
  • git工作区、暂存区、本地仓库、远程仓库的区别和联系
  • 高主频CPU+RTX4090:AI生图性能优化超150%
  • [C++面试] 迭代器面试点(难点)
  • 【docker】--- 详解 WSL2 中的 Ubuntu 和 Docker Desktop 的区别和关系!
  • python_巨潮年报pdf下载
  • Claude:从安全优先的 AI 实验室到创作者协作者(2025 深度解析)
  • UE5材质法线强度控制节点FlattenNormal
  • FPGA----完美解决Windows下[XSIM 43-3409][XSIM 43-3915]错误
  • 绿盟面试题
  • ICRA 2025 面向移动抓取的全身控制新范式——让机器人在移动与操控之间动态平衡
  • C++实现rabbitmq生产者消费者
  • 我开发的PDF转WORD免费工具
  • 高性能边缘计算网关-高算力web组态PLC网关
  • yt-dlp工具下载视频使用方法