我正在尝试在RenderMonkey中实现Light Prepass渲染。到目前为止,在Normal + Depth pass中,似乎Normal缓冲区获得了正确的结果,但Depth缓冲区只显示了一种颜色。如何检查我的深度缓冲区是否正确? 工作区下载链接:http://www.mediafire.com/?jq3jmantyxw
答案 0 :(得分:0)
浅蓝色实际上是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;
}
根据您的相机设置,您可以获得以下内容: