对于片段着色器,可以将颜色附件索引设置为VK_ATTACHMENT_UNUSED
(来自 C/C++ API);在这种情况下,对这些附件的写入将被丢弃。这很好,因为它允许我们编写无条件写入输出附件的着色器,并且写入可能会或可能不会被丢弃,具体取决于渲染器的决定。
也可以将输入附件索引设置为VK_ATTACHMENT_UNUSED
,但我们不允许从此类附件中读取。这意味着如果输入附件可以是VK_ATTACHMENT_UNUSED
,着色器必须知道它是否应该从中读取。
是否有 glsl/spir-v 内置方法来检查输入附件是否绑定到有效的图像视图 vs 指向VK_ATTACHMENT_UNUSED
?否则,应用程序必须将数据传递给着色器,以确定是否可以读取。那是一种痛苦。
内置的东西,如:
layout(input_attachment_index=0, binding=42) uniform subpassInput inputData;
vec4 color = vec4(0);
if (gl_isInputAttachmentValid(0)) {
color = subpassLoad(inputData).rgba
}