深度缓冲区只显示蓝色
问题描述:
我正试图在RenderMonkey中实现Light Prepass渲染。到目前为止,在Normal + Depth中,看起来正常缓冲区正在得到正确的结果,但深度缓冲区只显示一种颜色。我如何检查我的深度缓冲区是否正确? 工作区下载链接:http://www.mediafire.com/?jq3jmantyxw深度缓冲区只显示蓝色
答
淡蓝色实际上是RGB值0.0, 1.0, 1.0
。由于深度(通常)是代表Z的单个通道,因此从纹理采样时,它会在第一个通道中返回红色。缺少绿色,蓝色和alpha通道将用硬件取代1.0。
您的下载链接不起作用,因为我怀疑已经有2年了。
您应该确保您的像素着色器返回既COLOR0
和COLOR1
语义(注意,深度是float4
尽管输出是一个单通道纹理):
struct PS_OUT { float4 color : COLOR0; float4 depth : COLOR1; };
PS_OUT ps_main(PS_INPUT Input)
{
PS_OUT Output;
// your color shader here
Output.color = myFinalColor;
Output.depth = myFinalDepth; // e.g. Input.posz/Input.posw from your vertex shader
return Output;
}
根据您的相机设置,你可以得到是这样的:
我们可以看到所产生的深度缓冲的形象? – Goz 2010-07-07 10:29:17
它只是浅蓝色。没有其他的。如果你想看,使用这个链接http://www.flickr.com/photos/[email protected]/4772680803/ 其实,你可以下载我上面上传的工作区,并尝试为你的自己 – Ethan 2010-07-08 02:26:20