[英]Depth buffer is not filled with data in shadow map render pass
我目前正在Vulkan进行着色。 我已经基于SaschaWillem和Itoral的代码为阴影贴图创建了单独的渲染通道。 我的应用程序的基础基于VulkanTutorial 。
我遇到的问题是应该将Z值写入的深度缓冲区完全用零填充。 我目前正在将与相机相同的MVP传递给阴影贴图着色器。 我已经将RenderDoc附加到我的应用程序上,并且阴影贴图过程的“网格输出”选项卡包含与常规过程完全相同的gl_Position值。 不幸的是,这些值没有按纹理查看器所示保存到缓冲区中。
同时,常规深度缓冲区将用常规着色器中计算的值正确填充。
“每次光栅化器生成一个片段时,深度测试都会检查新片段是否比前一个片段更近。如果不是,则丢弃新片段。通过深度测试的片段会将自己的深度写入深度缓冲区。”
看起来好像所有碎片都被丢弃了。
我完全不知道如何进行。 您能指出我寻找该问题原因的方向吗?
似乎渲染过程的明确值是这里的问题。
std::array<VkClearValue, 1> clearValues = {};
clearValues[0].depthStencil = { 1.0f, 0 };
renderPassInfoStruct.clearValueCount = 1;
renderPassInfoStruct.pClearValues = clearValues.data();
是什么为我解决了这个问题。 以前的索引0的颜色值设置为{0.f,0.f,0.f,1.f};
谢谢杰西(Jesse)再次提出建议的建议,否则我可能永远也找不到:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.