【发布时间】:2019-03-22 22:24:26
【问题描述】:
主要出于调试目的,我希望在未来的渲染调用深度缓冲区中存储和重用,该深度缓冲区不受 Vulkan 规范的限制在 [0.0, 1.0] 范围内。 VK_EXT_depth_range_unrestricted 似乎正是我需要的,所以我有
- 启用 VK_EXT_depth_range_unrestricted,
- 将视口中的深度范围设置为 [0.0, 10.0],
- 将 VkPipelineDepthStencilStateCreateInfo 的深度范围设置为 [0.0, 10.0],depthTestEnable 和 depthWriteEnable 设置为 VK_TRUE,
- 将渲染通道的深度清除值设置为等于 10,
- 光栅化了一些三角形,每个顶点的深度等于3.0,
发现深度图的所有像素都等于1.0。但我希望光栅化像素的深度为 3.0,而不是光栅化为 10.0(在 renderdoc 和通过将深度缓冲区转储到主机内存中进行检查)。
因此我的问题是:是否可以将未标准化的深度实际存储在 Vulkan 的深度缓冲区中?如果是,我该怎么做?
更新: 我根据 Sascha Willems 的三角形绘图示例制作了复制器。它在fork 中运行示例时,验证不会报告任何内容。我看到的是空白图像(每个像素都被清除),但是我希望绘制一个三角形(因为它的每个顶点的深度为 3,清除的深度为 5)。 以防万一,设备是 Vega RX,驱动程序 18.50-ubuntu16.04。
【问题讨论】:
标签: vulkan