输入附件和多重采样
Input attachments and multisampling
我知道如何分别使用输入附件和多重采样。但是我不明白这两个功能如何一起使用。
我有 2 个子通道和 4 个附件的渲染通道:
- 一张图片,已呈现;
- 样本数为 N 的多重采样图像,在第二个子通道中渲染和解析(进入图像 #1);
- 一个多采样深度图像,样本数=N,在两个子通道中渲染;
- 样本数为 N 的多重采样图像,在第一个子通道中用作颜色附件,在第二个子通道中用作输入附件。
如果 N 等于 VK_SAMPLE_COUNT_1_BIT,一切正常。但是如果N等于VK_SAMPLE_COUNT_4_BIT,我就报错很多:
- vkCreateRenderPass returns Mi A1 上的错误代码;
- vkCreateRenderPass returns 在 Mi A2 lite 上成功,但我从验证层收到很多警告:
Descriptor set 0x28107 encountered the following validation error at vkCmdDraw() time: Descriptor in binding #0 at global descriptor index 0 requires bound image to have VK_SAMPLE_COUNT_1_BIT but got VK_SAMPLE_COUNT_4_BIT.
问题:
- 是否禁止使用多重采样输入附件?我在规范中找不到任何相关信息。
- 我可以将第一个子通道中的图像 #4 解析为其他图像 (#5),该图像将在第二个子通道中用作输入附件。这是解决此问题的唯一方法吗?
I don't change shaders.
那就是你的问题了。纹理的多重采样状态是其 GLSL type 的一部分。您不能通过 subpassInput
从多重采样输入纹理中获取;你必须使用 subpassInputMS
.
我知道如何分别使用输入附件和多重采样。但是我不明白这两个功能如何一起使用。
我有 2 个子通道和 4 个附件的渲染通道:
- 一张图片,已呈现;
- 样本数为 N 的多重采样图像,在第二个子通道中渲染和解析(进入图像 #1);
- 一个多采样深度图像,样本数=N,在两个子通道中渲染;
- 样本数为 N 的多重采样图像,在第一个子通道中用作颜色附件,在第二个子通道中用作输入附件。
如果 N 等于 VK_SAMPLE_COUNT_1_BIT,一切正常。但是如果N等于VK_SAMPLE_COUNT_4_BIT,我就报错很多:
- vkCreateRenderPass returns Mi A1 上的错误代码;
- vkCreateRenderPass returns 在 Mi A2 lite 上成功,但我从验证层收到很多警告:
Descriptor set 0x28107 encountered the following validation error at vkCmdDraw() time: Descriptor in binding #0 at global descriptor index 0 requires bound image to have VK_SAMPLE_COUNT_1_BIT but got VK_SAMPLE_COUNT_4_BIT.
问题:
- 是否禁止使用多重采样输入附件?我在规范中找不到任何相关信息。
- 我可以将第一个子通道中的图像 #4 解析为其他图像 (#5),该图像将在第二个子通道中用作输入附件。这是解决此问题的唯一方法吗?
I don't change shaders.
那就是你的问题了。纹理的多重采样状态是其 GLSL type 的一部分。您不能通过 subpassInput
从多重采样输入纹理中获取;你必须使用 subpassInputMS
.