使游戏对象与 URP 中的 GPU Resident Drawer 兼容
在 URP 中启用 GPU Resident Drawer
GPU Resident Drawer 会自动使用 BatchRendererGroup API 并通过 GPU 实例化来绘制__ GameObject__Unity 场景中的基础对象,可以表示角色、道具、风景、摄像机、路径点等。GameObject 的功能由所附的组件决定。更多信息
See in Glossary,从而减少绘制调用次数并释放 CPU 处理时间。详情请参阅 BatchRendererGroup 工作原理。
GPU Resident Drawer 仅适用于以下情况:
否则,Unity 将回退到在没有 GPU 实例化的情况下绘制 GameObject。
如果启用 GPU Resident Drawer,则以下情况适用:
- 构建时间会变长,因为 Unity 会将所有
BatchRendererGroup 着色器变体编译到构建中。
启用 GPU Resident Drawer
请执行以下步骤:
- 转到 项目设置 (Project Settings) > 图形 (Graphics),然后在着色剥离 器 (Shader Stripping) 分段中将 BatchRendererGroup Variants 设置为 全部保留 (Keep All)。
- 转到激活的 URP 资产 (URP Asset) 并启用 SRP 批处理程序 (SRP Batcher)。
- 双击 渲染器列表 (Renderer List) 中的渲染器以打开通用渲染器 (Universal Renderer),然后将 渲染路径 (Rendering Path) 设置为 Forward+。
- 将 GPU Resident Drawer 设置为实例化绘制 (Instanced Drawing)。
如果逐帧更改或创建 GameObject,则 GPU Resident Drawer 会随更改而更新。
要从 GPU Resident Drawer 中包含或排除 GameObject,请参阅使 GameObject 与 GPU Resident Drawer 兼容。
分析 GPU Resident Drawer
要分析 GPU Resident Drawer 的结果,可使用以下方法:
-
帧调试器。GPU Resident Drawer 会将 GameObject 分组为名为 混合批次组 (Hybrid Batch Group) 的绘制调用。
-
渲染调试器。
-
渲染统计信息并检查每秒帧数是否增加,以及 CPU 处理时间和 SetPass 调用是否减少。
- Unity Profiler
优化 GPU Resident Drawer
GPU Resident Drawer 加快渲染速度的程度取决于场景。GPU Resident Drawer 在以下情况中最为有效:
- 场景很大。
- 多个 GameObject 使用相同的网格,从而让 Unity 可以将它们分组到单个绘制调用中。
与运行模式或最终构建的项目相比,场景 (Scene) 视图和游戏 (Game) 视图中的渲染速度通常较低。
以下方法可能会加快 GPU Resident Drawer 的速度:
- 转到项目设置 (Project Settings) > 播放器 (Player),找到其他设置 (Other Settings) 分段并禁用静态批处理 (Static Batching)。
- 转到窗口 (Window) > 面板 (Panels) > 光照 (Lighting),然后找到光照贴图设置 (Lightmapping Settings) 分段,启用固定光照贴图尺寸 (Fixed Lightmap Size) 并禁用 使用 Mipmap 限制 (Use Mipmap Limits)。
其他资源
使游戏对象与 URP 中的 GPU Resident Drawer 兼容