您可以将深度值写入计算着色器中的深度缓冲区吗? (凡尔康 GLSLS)

Can you write depth values to a depth buffer in a compute shader? (Vulkan GLSLS)

我有一个光线追踪器,需要与传统的三角形投影技术结合使用,我需要使光线追踪图像能够遮挡投影的三角形。最简单的方法是将深度值直接写入深度缓冲区。

显然 imageStore 只能处理彩色图像。有没有我可以使用的机制?唯一的选择是将深度存储在彩色图像中,然后制作一个虚拟着色器来设置片段着色器中的深度。

https://vulkan.gpuinfo.org/listoptimaltilingformats.php

看起来大多数实现不允许使用深度图像作为存储图像。我建议创建一个额外的图像并将其 copying/blitting 添加到深度图像。