谈到 Vulkan API 时,'attachment' 是什么意思?
What is the meaning of 'attachment' when speaking about the Vulkan API?
关于 Vulkan API,'attachment' 是什么意思?我看到这个词与渲染过程有关(即:颜色附件)。我对我认为它们是什么有模糊的想法,但想听听专家的定义。
我是第一次进行图形编程,因此决定直接从 Vulkan 开始深入研究。
实际上有几种类型的附件。我将解释最常见的两个。
颜色/深度附件
这些是你写入图像的。正如 Zebrafish 所说,它们允许您在其中绘制一些东西(通过 vkCmdDraw*)。您可以稍后阅读它们。它们是输出。
输入附件:
顾名思义,这些用作 输入 而不是输出。例如,假设您正在构建一个延迟渲染器,您将有几个子通道(简单来说是 2 个)。
您的第一个子通道将绘制到多个图像(您的 G_BUFFER):反照率/正常/深度。
完成此子通道后,您可以开始另一个子通道(照明通道)并进行照明计算,您需要为该通道提供一些输入(您的 G-Buffer)。您将 G-Buffer 图像设置为输入附件。
输入附件和“采样器”有什么区别?输入附件不可寻址,您只能获取正在处理的像素。它可能允许驱动程序进行一些优化,并且可以用作瞬态附件以使用 Tiled GPU 优化渲染(但这是另一个问题)。
要了解 Vulkan 中的附件,您首先需要了解渲染通道和子通道。
Render-pass是对步骤的一般描述你的绘图命令分为和渲染过程中使用的资源。没有渲染通道,我们无法在 Vulkan 中渲染任何东西。并且每个渲染通道必须有一个或多个步骤。这些步骤称为,
子通道并且每个子通道使用为渲染通道定义的(子)资源集合。渲染通道的资源可能包括渲染目标(颜色、depth/stencil、解析)和输入数据(可能是同一渲染通道的先前子通道中的渲染目标的资源)。这些资源被称为,
附件(它们不包括 descriptors/textures/samplers 和缓冲区)。
为什么我们不称它们为渲染目标或图像?
因为我们不仅渲染它们(输入附件)而且因为它们只是描述(元数据)。应在渲染过程中用作附件的图像通过帧缓冲区提供。
所以,一般来说,我们可以称它们为图像,因为(据我所知)只有图像才能用于附件。但如果我们想要完全正确:图像是特定的 Vulkan 资源,可用于多种用途(descriptors/textures、附件、暂存资源);附件是渲染过程中使用的资源的描述。
关于 Vulkan API,'attachment' 是什么意思?我看到这个词与渲染过程有关(即:颜色附件)。我对我认为它们是什么有模糊的想法,但想听听专家的定义。
我是第一次进行图形编程,因此决定直接从 Vulkan 开始深入研究。
实际上有几种类型的附件。我将解释最常见的两个。
颜色/深度附件
这些是你写入图像的。正如 Zebrafish 所说,它们允许您在其中绘制一些东西(通过 vkCmdDraw*)。您可以稍后阅读它们。它们是输出。
输入附件:
顾名思义,这些用作 输入 而不是输出。例如,假设您正在构建一个延迟渲染器,您将有几个子通道(简单来说是 2 个)。
您的第一个子通道将绘制到多个图像(您的 G_BUFFER):反照率/正常/深度。
完成此子通道后,您可以开始另一个子通道(照明通道)并进行照明计算,您需要为该通道提供一些输入(您的 G-Buffer)。您将 G-Buffer 图像设置为输入附件。
输入附件和“采样器”有什么区别?输入附件不可寻址,您只能获取正在处理的像素。它可能允许驱动程序进行一些优化,并且可以用作瞬态附件以使用 Tiled GPU 优化渲染(但这是另一个问题)。
要了解 Vulkan 中的附件,您首先需要了解渲染通道和子通道。
Render-pass是对步骤的一般描述你的绘图命令分为和渲染过程中使用的资源。没有渲染通道,我们无法在 Vulkan 中渲染任何东西。并且每个渲染通道必须有一个或多个步骤。这些步骤称为,
子通道并且每个子通道使用为渲染通道定义的(子)资源集合。渲染通道的资源可能包括渲染目标(颜色、depth/stencil、解析)和输入数据(可能是同一渲染通道的先前子通道中的渲染目标的资源)。这些资源被称为,
附件(它们不包括 descriptors/textures/samplers 和缓冲区)。
为什么我们不称它们为渲染目标或图像? 因为我们不仅渲染它们(输入附件)而且因为它们只是描述(元数据)。应在渲染过程中用作附件的图像通过帧缓冲区提供。
所以,一般来说,我们可以称它们为图像,因为(据我所知)只有图像才能用于附件。但如果我们想要完全正确:图像是特定的 Vulkan 资源,可用于多种用途(descriptors/textures、附件、暂存资源);附件是渲染过程中使用的资源的描述。