【Unity6+】GPU-Driven细节和Unity6+新增功能列表.
有机紫菜
2025年04月08日 20:16

Unity Gpu-Driven相关.

Unity 的 GPU-Driven Rendering 计划是近年来重要的性能优化方向,旨在将更多渲染计算从 CPU 转移到 GPU,以提升大规模场景的渲染效率(主要是面对开放环境)。在 Unity 6(2023年发布的技术路线)中,该计划得到了进一步强化,主要包括以下几个核心内容:1. GPU-Driven Rendering 的核心目标

  • 减少 CPU 负担:将剔除(Culling)、合批(Batching)、LOD 计算等任务交给 GPU。

  • 提升渲染规模:支持数百万级对象的实时渲染(如开放世界、大场景植被)。

  • 优化 Draw Calls:通过 GPU 实例化(Instancing)和间接渲染(Indirect Rendering)降低 CPU 提交开销。

2. Unity 6 中 GPU-Driven 的主要技术 (1) Batch Renderer Group (BRG) 增强

  • 更高效的合批:支持动态物体(如可移动的植被)的自动合批。

  • GPU 剔除优化

    • Hierarchical-Z Occlusion Culling(层级Z遮挡剔除)

    • Cluster-Based Culling(分块剔除,减少不必要的实例计算)

  • 与 DOTS/ECS 深度集成:Entities Graphics 底层依赖 BRG,实现超大规模实体渲染。

(2) GPU Resident Drawer (GRD)

  • 完全绕过 CPU 提交渲染指令

    • 传统渲染需要 CPU 提交 DrawMesh,而 GRD 允许 GPU 直接决定渲染哪些物体。

    • 适用于静态/半静态场景(如地形、建筑群)。

  • 支持动态更新:通过 Compute Shader 修改实例数据(位置、颜色等)。

(3) Mesh & Material Variants 优化

  • GPU-Driven 的变体管理

    • 自动处理不同 LOD、光照贴图、材质变体,减少 CPU 切换开销。

    • 例如:同一植被 Mesh 的不同季节变体,由 GPU 动态选择。

(4) Ray Tracing & GPU-Driven 光照

  • 光线追踪加速

    • GPU 直接管理 BVH(包围盒层级)构建,提升动态物体的光追性能。

    • 适用于 HDRP 的高质量全局光照(GI)。

3. 对比 Unity 5 vs. Unity 6 的 GPU-Driven 改进技术

4. 开发者如何适配 Unity 6 的 GPU-Driven 渲染? (1) 对于传统项目

  • 逐步迁移到 URP/HDRP:BRG 和 GRD 主要在 SRP(可编程渲染管线)中可用。

  • 启用 GPU Instancing:在 Shader 中添加 #pragma multi_compile_instancing。

  • 使用 Entities.Graphics(如需超大规模渲染):适用于 ECS 架构的项目。

(2) 对于新项目

  • 直接使用 BRG 替代 DrawMeshInstancedIndirect(除非需要极低层级控制)。

  • 尝试 GPU Resident Drawer(实验性功能,需 Unity 6.0+)。

  • 结合 DOTS 渲染:适用于海量实体(如沙盒游戏、模拟类应用)。

5. 未来方向(Unity 6+)

  • 更智能的 GPU 资源管理:自动处理纹理、Mesh 的 GPU 内存分配。

  • Nanite 类似技术:动态 Mesh 细节分级(目前 Unity 的 Adaptive Probe Volumes(动态光照探针) 已部分实现)。

  • AI 驱动的渲染优化:利用 ML 预测最佳 LOD 和剔除策略。

总结 Unity 6 的 GPU-Driven Rendering 计划核心包括:

  1. BRG 增强(自动合批 + GPU 剔除)

  2. GPU Resident Drawer(GPU 自主提交渲染)

  3. DOTS/ECS 深度集成(超大规模实体渲染)

  4. 光线追踪 & 动态光照优化

开发者建议

  • 新项目 优先使用 URP/HDRP + BRG

  • 旧项目 逐步迁移,结合 Entities.Graphics 提升性能。

  • 关注 Unity 6.0+ 的正式发布,尤其是 GPU Resident Drawer 的稳定版。🚀

Unity6新增功能列表

(注:BRG代表Batch Rendering Group)

  • Unity6+计划统一渲染管线,shader系统也会有变化,包括BlockShader等.

  • Mesh Lod与自定义LOD对比---Mesh内存占用小,自定义的略高保存多个模型数据在内存,暂时不支持GPU实例化.

  • Render Graph和心的NRP的类似PBR---可以看到全部渲染流程下的每个Pass的具体操作和设置,方便调试高级性能部分.

  • Gpu Resident Drawer(GRD)---该功能主要优化多场景物体的情况,类似一种高级合批,支持实例化,对大量相似物体,渲染比较有优势.保持数据常驻GPU.

  • WebGPU Backend---更新的网页后端,支持更现代的图形接口.

  • HDR Display Output.---高色彩范围.---HDR不仅仅是打开就提升色彩范围,还要具体设置场景曝光啥的.

  • Gpu Occlusion Culling---需要开启GRD功能,上面的.

  • ScalableTemporalPost-Processing(STP)---时序超分辨率,类似大力水手(DLSS)

  • Batched Compute Skinning---GPU计算的蒙皮合批功能.之前已经支持GPU蒙皮,这是合批部分.

  • GameActivity---针对于安卓的入口点,提升帧率,同步设备刷新.

  • PSO---预配置GPU缓存状态,提升渲染效率.的功能.

  • Deferred+,渲染通道.主要是支持GRD,在延迟管线.半透和透明还是前向渲染+

  • VRS可变着色率渲染---改变片元和像素着色率.(模糊粗糙的快速渲染不同部分的概念?针对不同片元)

  • Adaptive Probe Volumes (APV): Stream Lighting Data---流式传输的APV光照探针数据,比较针对大型开放场景.