我一直在研究LunarG样本中的drawubpasses样本(文件:API-Samples/drawnubpasses/drawnubpasses.cpp).
在此示例中,调用第一个vkCmdDraw()时的活动子传递没有颜色附件,只有深度/模板附件.使用的片段着色器确实有一个输出变量.
阅读规范并没有帮助我理解这种用法是否"安全",或者驱动程序如何处理它.
Vulkan 1.0.16 似乎已经纠正了这个问题。attachmentCount它明确表示不会对大于子通道或显式声明的附件索引执行任何写入操作VK_ATTACHMENT_UNUSED。输出变量将是未定义的,但根据当前子通道的描述,不会向其中写入任何内容。
这是一个非常好的问题。我花了几分钟阅读预期位置的规范,但没有任何语言解释当片段着色器写入子通道中没有附件的输出位置时会发生什么。它应该在第 14.3 节中指定,但其中没有任何内容。
您可能想要提交 Vulkan 规范错误报告。
我认为正确的行为与 OpenGL 相同:有效地忽略此类输出。
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |