Unity 几种常见合批手段的要求
概述合批Batching是 Unity 渲染优化的核心手段目的是将多个绘制调用Draw Call合并为一个减少 CPU 与 GPU 之间的通信开销。Unity 中常见的合批手段有四种SRP BatcherGPU Instancing动态合批Dynamic Batching静态合批Static Batching每种合批方式都有严格的前提要求和互斥关系理解这些是正确使用它们的前提。1. SRP Batcher原理SRP Batcher 通过复用 CPU 端的Material数据缓冲区让 GPU 在同一绘制循环中快速切换材质数据而不需要重新绑定 Shader 和 Constant Buffer。适用于大量使用相同 Shader 变体但不同材质属性的渲染对象。前提要求要求说明渲染管线必须使用SRPURP / HDRP / 自定义 SRPBuilt-in Render Pipeline 不支持Shader必须编写兼容 SRP Batcher的 Shader。所有材质属性要通过CBUFFER声明SRP 核心库中的 Shader 默认满足Shader 变体合批的对象必须使用同一个 Shader 变体即 Shader 文件和 keywords 组合完全一致平台所有支持 DX10SM 4.0的平台均可开启在 Project Settings Graphics SRP Batcher 中开启默认开启不满足时的行为如果某个 Material 使用了不兼容 SRP Batcher 的 Shader该 Material 会回退到传统渲染路径不会影响其他兼容对象的 SRP Batcher 合批。与 GPU Instancing 的关系互斥。如果材质开启了Enable GPU InstancingUnity 会优先走 GPU Instancing不会走 SRP Batcher。2. GPU Instancing原理GPU Instancing 将多个相同 Mesh、相同 Material的渲染实例打包为一个 Draw Call数据以 Instance Buffer 形式传给 GPU由 GPU 一次性绘制。适合大量重复物体如草、树、子弹、粒子等。前提要求要求说明ShaderShader 必须声明#pragma multi_compile_instancing并在顶点着色器中调用UNITY_VERTEX_INPUT_INSTANCE_ID/UNITY_SETUP_INSTANCE_IDMesh必须完全相同同一个 Mesh 引用Material必须使用同一个 Material 实例同一个引用而非属性相同批次数量单个 Draw Call 的实例数量受 GPU 限制通常 500~1023 个实例开启Material Inspector 中勾选Enable GPU Instancing额外说明每个实例可以通过MaterialPropertyBlock传递不同的属性如颜色、缩放等但MaterialPropertyBlock的字段必须在 Shader 中声明为UNITY_INSTANCING_BUFFER_START/END。不支持LOD 组内不同 LOD 级别的合批不同 LOD 模型不同无法 Instancing。如果 Mesh 使用 SkinnedMeshRenderer需要额外的兼容处理部分平台不支持。互斥关系合批方式是否兼容SRP Batcher❌ 互斥开启 GPU Instancing 后不走 SRP Batcher动态合批❌ 互斥静态合批❌ 互斥但物理上不太会同时使用3. 动态合批Dynamic Batching原理Unity 在 CPU 端将多个小 Mesh 合并为一个大的 Vertex Buffer然后一次性提交 GPU 绘制。Unity 会自动检测满足条件的渲染器在每帧进行合并。前提要求要求说明顶点数单个 Mesh 的顶点数≤ 300,900个顶点属性Shader 中如果使用了某些属性会增加顶点计算量实际会更严格UV 通道最多支持UV 0 和 UV 1如果使用 UV 2、UV 3 则无法动态合批光照如果使用多 Pass Shader包含多个 ForwardBase/ForwardAdd Pass动态合批会失效材质参与合批的物体必须使用完全相同的 Material同一个引用变换物体不能同时受多个缩放因子不一致的父级影响Uniform Scale 环境下表现最佳镜像变换负缩放Scale 为负数会导致法线计算错误动态合批会自动跳过性能代价动态合批是在CPU 端每帧合并顶点数据对于顶点数较多的物体反而会拖慢性能。因此它只适合少量小顶点物体如粒子、小道具。互斥关系合批方式是否兼容SRP Batcher可以共存但如果一个物体走动态合批就不会走 SRP BatcherGPU Instancing❌ 互斥静态合批❌ 互斥同一物体不会同时参与两者4. 静态合批Static Batching原理在构建时Build / Baking将标记为Batching Static的物体合并到一个大的 Vertex Buffer 中并生成统一的 Index Buffer。运行时直接作为一个 Mesh 提交绘制。前提要求要求说明Static 标记物体必须勾选Static或单独勾选Batching StaticFlag材质参与合批的物体必须使用相同的 Material移动物体在运行时不能移动、旋转、缩放内存静态合批会创建合并后的大 Mesh会显著增加 Build 后包体和运行时内存顶点属性不同 Mesh 可以有不同顶点格式Unity 会自动补齐注意事项静态合批会禁用 GPU Instancing因为 Mesh 已经被合并了。参与静态合批的物体仍然可以配合Lightmap、Occlusion Culling使用。如果场景中有大量重复物体如路灯静态合批后的 Mesh 无法利用 GPU Instancing反而可能不如单独走 Instancing。互斥关系合批方式是否兼容SRP Batcher可以共存。静态合批只是合并几何数据渲染时仍走 SRP Batcher 管线GPU Instancing❌ 互斥。合批后的 Mesh 无法 Instancing动态合批❌ 互斥。静态合批优先级更高5. 合批对比总表特性SRP BatcherGPU Instancing动态合批静态合批适用管线URP / HDRPAllAllAll合批时机运行时GPU 端运行时GPU 端运行时CPU 端构建时相同 Mesh不需要必须相同不需要不需要相同 Material不需要相同 Shader 变体即可必须相同引用必须相同必须相同顶点限制无无≤ 300无内存/CPU 开销低低高CPU 合并中构建时增加内存运行时移动可以可以可以❌ 不可以与 SRP Batcher 兼容—❌ 互斥✅ 共存但二选一✅ 共存与 GPU Instancing 兼容❌ 互斥—❌ 互斥❌ 互斥推荐场景大量不同材质但同 Shader 的对象大量相同物体草、树、子弹少量小顶点物体完全静止的环境物体6. 实际使用建议优先使用 SRP BatcherURP/HDRP 项目默认开启它是最通用、约束最少、CPU 开销最低的方案。重复物体用 GPU Instancing尤其是草地、树木、弹壳、粒子等大量相同 Mesh 的场景。动态合批只用于 UI 或极小物体顶点数必须确认 ≤ 300且不要跟 GPU Instancing 混用。静态合批在老项目或 Built-in 管线中还有价值但在 SRP 管线中已被 SRP Batcher 部分替代且内存代价较高需谨慎使用。不要同时开启 SRP Batcher 和 GPU Instancing同一材质会互斥但可以同时开启 SRP Batcher 和静态合批。

相关新闻

Sub2API:开源AI API共享网关解决方案

Sub2API:开源AI API共享网关解决方案

1. Sub2API:AI API共享经济的开源解决方案在AI服务日益普及的今天,个人开发者和小团队面临着一个共同难题:高昂的API使用成本。以ChatGPT Plus为例,每月20美元的订阅费对个人用户来说可能是一笔不小的开支,而企业级API…

2026/10/3 23:32:55 阅读更多 →
ARM Cortex-M系统控制模块:时钟、电源与低功耗管理实战详解

ARM Cortex-M系统控制模块:时钟、电源与低功耗管理实战详解

1. 项目概述与核心价值在嵌入式开发领域,尤其是基于ARM Cortex-M内核的微控制器项目里,系统控制模块往往是决定项目成败的“幕后总指挥”。它不像GPIO、UART那样直接与外部世界交互,也不像ADC、PWM那样产生直观的数据或波形,但它却…

2026/10/16 10:55:48 阅读更多 →
macOS逆向工程与Hook技术实战:从原理到插件开发

macOS逆向工程与Hook技术实战:从原理到插件开发

1. 项目概述:从逆向工程视角看一个macOS插件最近在技术社区里,一个名为“BaiduNetdiskPlugin-macOS”的项目引起了我的注意。这本质上是一个针对百度网盘macOS客户端的第三方插件,通过逆向工程与Hook技术,实现了一些原生客户端不具…

2026/10/9 18:10:04 阅读更多 →

最新新闻

VASP 5.4.4编译配置与INCAR参数优化实践指南

VASP 5.4.4编译配置与INCAR参数优化实践指南

简介:VASP 5.4.4版是采用从头计算理论的第一性原理模拟软件,面向材料科学、固体物理与量子化学领域的研究者与学生,可用于结构优化、能带计算、电子态密度分析、晶格动力学及热力学性质预测等核心计算任务,在新能源材料与催化剂设…

2026/10/16 18:36:17 阅读更多 →
Python 3.7安装实操:解决遗留项目依赖与跨平台配置的完整指南

Python 3.7安装实操:解决遗留项目依赖与跨平台配置的完整指南

简介:Python 3.7.3是面向Windows平台的官方安装包,适合编程入门者、数据分析学习者及Web开发人员快速搭建Python运行环境。压缩包共4个文件,以.exe图形化安装程序为核心,另含htm格式的安装指导文档、txt格式的下载来源说明以及一个…

2026/10/16 18:36:17 阅读更多 →
W5500+FPGA纯硬件驱动实现3.5 MB/s以太网吞吐

W5500+FPGA纯硬件驱动实现3.5 MB/s以太网吞吐

简介:本资源是一套面向FPGA开发者与嵌入式网络应用工程师的W5500以太网控制器驱动实现方案,聚焦高速、低开销的硬件TCP/IP通信需求,适用于工业控制、物联网终端及实时数据采集等场景。压缩包为RAR格式,共21.55MB,包含F…

2026/10/16 18:36:17 阅读更多 →
GPU利用率从12%到85%:数据供给链路优化实战

GPU利用率从12%到85%:数据供给链路优化实战

1. 事故现场还原:一个让所有工程师血压飙升的夜晚 1.1 那个12%到底意味着什么 上线前夜,监控大屏上GPU利用率定格在12%,这个数字我至今记得清清楚楚。当时我们刚把一套图像推理服务部署到生产环境,压测环境跑得好好的&#xff0c…

2026/10/16 18:36:17 阅读更多 →
OpenStack生产级IaaS搭建:从单节点到高可用的底层机制解析

OpenStack生产级IaaS搭建:从单节点到高可用的底层机制解析

1. 为什么“OpenStack IaaS搭建”要分“二”——从单节点实验到生产就绪的必然跨越“OpenStack IaaS搭建 二”这个标题乍看像是一份未完成的笔记,但恰恰暴露了绝大多数初学者在真实落地过程中的核心断层:第一阶段,是用All-in-One脚本跑通Dash…

2026/10/16 18:36:17 阅读更多 →
IBM MQ 7.5在Windows上的安装配置与JMS接入全攻略

IBM MQ 7.5在Windows上的安装配置与JMS接入全攻略

简介:IBM WebSphere MQ v7.5.0.2 的 Windows 试用安装包,面向需要部署消息队列环境或学习 MQ 机制的开发者、运维工程师,解决分布式系统间异步可靠通信与数据安全传输问题。压缩包内共 1001 个文件,以 gif 图示与 htm 文档为主&am…

2026/10/16 18:35:15 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →