2010-07-07 134 views
0

我正试图在RenderMonkey中实现Light Prepass渲染。到目前为止,在Normal + Depth中,看起来正常缓冲区正在得到正确的结果,但深度缓冲区只显示一种颜色。我如何检查我的深度缓冲区是否正确? 工作区下载链接:http://www.mediafire.com/?jq3jmantyxw深度缓冲区只显示蓝色

+1

我们可以看到所产生的深度缓冲的形象? – Goz 2010-07-07 10:29:17

+0

它只是浅蓝色。没有其他的。如果你想看,使用这个链接http://www.flickr.com/photos/[email protected]/4772680803/ 其实,你可以下载我上面上传的工作区,并尝试为你的自己 – Ethan 2010-07-08 02:26:20

回答

0

淡蓝色实际上是RGB值0.0, 1.0, 1.0。由于深度(通常)是代表Z的单个通道,因此从纹理采样时,它会在第一个通道中返回红色。缺少绿色,蓝色和alpha通道将用硬件取代1.0。

您的下载链接不起作用,因为我怀疑已经有2年了。

您应该确保您的像素着色器返回既COLOR0COLOR1语义(注意,深度是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; 
} 

根据您的相机设置,你可以得到是这样的:

enter image description here