2017-09-23 186 views
2

关于Vulkan API,'attachment'是什么意思?我看到这个词用于渲染通过(即:彩色附件)。我对自己的想法有着模糊的想法,但希望听到专家的定义。Vulkan:'attachment'的含义是什么

我做图形编程,第一次,决定用福尔康开始直接跳进深水区。

+0

我不是专家,但从我所了解的OpenGL中,您可以找到一个名为Framebuffers的对象,其中可以包含可添加到其中的附件。例如,通常你会对颜色附件进行绘制,通常是你的图像。其他附件通常是模板缓冲区和深度缓冲区。 – Zebrafish

+0

“*希望听到来自专家的定义*”Vulkan规范有一个实际术语表,其中定义了此特定术语(以及其他术语)。 –

+0

@Nicol Bolas:啊,好的RTFM。我确实读过它,但描述不太清楚。它表示:在渲染通道创建中使用的一个从零开始的整数索引名称,指的是一个或多个子通道访问的帧缓冲区附件。该索引还涉及附件说明,其中包含有关稍后将附加的图像视图属性的信息。 – Dess

回答

5

要了解福尔康附件,你首先需要了解渲染通道和subpasses。

渲染通道是对步骤的一般描述您的绘图命令被分为以及渲染期间使用的资源。没有渲染通道,我们无法在Vulkan中渲染任何东西。每个渲染过程必须有一个或多个步骤。这些步骤称为子路径,每个子通道使用为渲染通道定义的(子)资源集合。渲染通道的资源可能包括渲染目标(颜色,深度/模板,解析)和输入数据(资源,这些资源可能会在同一渲染通道的以前的子通道中渲染目标)。这些资源被称为附件(它们不包括描述符/纹理/采样器和缓冲区)。

我们为什么不叫他们只呈现targers或图像?因为我们不仅渲染它们(输入附件),而且它们只是描述(元数据)。应该在渲染过程中用作附件的图像通过帧缓冲区提供。

所以一般我们可以给他们打电话的图像,因为(据我所知)可以用于附件只图像。但是,如果我们想要完全正确:图像是可以用于多种目的的特定Vulkan资源(描述符/纹理,附件,分段资源);附件是对渲染过程中使用的资源的描述。

+1

谢谢!我非常感谢你也解释了附件的概念。这不仅可以帮助解释依恋,还可以对其他概念有所暗示。我一直在阅读Vulkan规范。这是一个写得很好的文档,但它假定读者已经熟悉OpenGL。我们中有些人是完整的小菜鸟! – Dess

+1

我一直在阅读/ r/vulkan,我发现你也在那里发帖。我希望你继续保持下去,因为你的写作非常清晰,阅读起来非常愉快。你就像一位天生的老师,对我们来说是一个真正的资产。 – Dess

+0

@Dess谢谢你的客气话! :-)我不能说我知道Vulkan API的每个特性或方面。但是,如果我知道其中的某些部分,并且如果有人需要帮助理解它们,我会尽我所能地尽力解释它们。无论我是否做得好,我都无法判断。但是,如果你这么认为 - 听到这个很好---)。我必须说,我喜欢帮助别人,向别人解释事情。可能这就是为什么我同意PacktPub询问我是否可以写一篇“Vulkan Cookbook”的原因;-)。尽管如此 - 在学习和理解Vulkan API方面祝你好运! – Ekzuzy

2

实际上有几种类型的附件。我将解释两个最常见的问题。

颜色/深度附件

这些是您写入它的图像。正如斑马鱼告诉的那样,它可以让你画一些东西(通过vkCmdDraw *)。你可以在阅读完之后。他们是一个输出

输入附件:

这些,作为告诉名称被用作输入而不是作为输出。例如,假设你正在构建一个延迟渲染器,你将有几个子路径(2是简单的)。

您的第一个子通道会写入多个图像(您的G_BUFFER):反照率/正常/深度。

一旦你完成这个subpass,你就可以开始另一个(照明之一),并进行照明计算,你需要给这个传递一些输入(您的G缓冲区)。您将您的G-Buffer图像设置为输入附件。

是什么输入附件和“取样”的区别?输入附件不可寻址,您只能获得正在处理的像素。它可能允许驱动程序进行一些优化,并且可以用作临时附件来优化使用Tiled GPU进行渲染(但这是另一个问题)。