是否有可能有一个不写入通行证的所有颜色附件的管道(带有适当的片段着色器)?例如Pass有2xColor + 1depth附件。一些片段程序可能同时写入color01 +深度,而有些只写入color0 +深度。
仅将未使用的附件的colorWriteMask设置为none不成功。我无法找到将通过验证层的管道配置。它总是抱怨片段着色器不会写出额外的附件。
答案 0 :(得分:1)
Vulkan 1.0.18现在解决了这个问题。它现在使perfectly clear成为:
对于与片段着色器输出不对应的组件,未定义混合或颜色附件写入的输入。
因此,将写掩码设置为none应该没问题,因为值本身是未定义的,但确实存在。由于没有任何内容可写,因此没有理由认为该州无效。
因此,请将此作为错误提交给相关验证层的维护者。
嗯,这会造成问题。
一方面,没有理由不应该这样做。无论价值是什么,你都要掩盖它,所以这是无关紧要的。
另一方面...... Vulkan规范说 nothing 关于当你的FS没有写入输出时会发生什么。它没有说它是合法的还是非法的。它没有说明该输出是否仅仅是未定义的,或者整个管道是否产生了未定义的行为。
因此,验证层是错误的,或者您想要做的事情不是允许的。但是在Vulkan规范清除之前,没有办法确定哪一个。
答案 1 :(得分:1)
如果这是在单独的子通道中,那么您只需将颜色附件添加到pPreserveAttachments
。
另一个选项是use blending欺骗片段着色器丢弃片段着色器输出并使用现有颜色。使用ONE表示dst,使用ZERO表示使用OP_ADD混合的src。