渲染依赖性图表

渲染依赖性图表是一个基于图表的调度系统,用于执行渲染管线的整帧优化。

Windows
MacOS
Linux
本页面的内容

截至虚幻引擎4.23版,渲染依赖性图表(RDG)的底层实现仍在开发中,仍缺少本页面中提到的诸多性能优势。但现版本中API很稳定,渲染器也正在全面移植到RDG。此外,所有新的渲染功能都是用RDG编写的。

渲染依赖性图表(Rendering Dependency Graph) 也被称为RDG或渲染图表,是一个基于图表的调度系统,用于执行渲染管线的整帧优化。它利用DirectX 12这样的现代API,使用自动异步计算调度以及更高效的内存管理和屏障管理来提高性能。

DirectX 11和OpenGL式的API要求驱动器调用复杂的启发法,以确定何时以及如何在GPU上执行关键的调度操作。例如清空缓存、管理和再使用内存,或执行布局转换,等等。由于接口存在即时模式特性,因此需要复杂的记录和状态跟踪才能处理各种极端情况。这些情况最终会对性能产生负面影响,并阻碍并行。

DirectX 12、Vulkan和Metal 2之类的现代图形API已经弃用此模型,而选择将低级GPU管理的负担转移至应用程序本身。这提供了一个机会,可以利用渲染管线的高级情境来驱动调度,从而提高性能并且简化渲染堆栈。

RDG的概念如下:在GPU上并非立即执行通道,而是延迟到整个帧已记录到依赖性图表数据结构之中后再执行。当完成了对所有通道的收集之后,则按照依赖性的排序顺序对图表进行编译和执行。

依赖性图表数据结构的整帧认知与现代图形API的能力相结合,使RDG能够在后台执行复杂的调度任务,并对用户完全透明:

  • 执行异步计算通道的自动调度和隔离。

  • 在帧的不相交间隔期间,使资源之间的别名内存保持活跃状态。

  • 尽早启动屏障和布局转换,避免管道延迟。

此外,RDG利用依赖性图表在通道设置期间提供丰富的验证,对影响功能和性能的问题进行自动捕捉,从而改进开发流程。

附加注释和资源

Select Skin
Light
Dark

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见