我正在尝试在 RenderMonkey 中实现 Light Prepass 渲染。到目前为止,在 Normal+Depth 通道中,Normal 缓冲区似乎得到了正确的结果,但 Depth 缓冲区只显示一种颜色。如何检查我的深度缓冲区是否正确?工作区下载链接:http ://www.mediafire.com/?jq3jmantyxw
问问题
299 次
1 回答
0
浅蓝色实际上是 RGB 值0.0, 1.0, 1.0
。由于深度(通常)是表示 Z 的单个通道,因此当从纹理中采样时,它会在第一个通道中返回,红色。缺少的绿色、蓝色和 alpha 通道将由硬件替换为 1.0。
您的下载链接不起作用,因为我怀疑它已经 2 年了。
您应该确保您的像素着色器同时返回COLOR0
语义COLOR1
(请注意,float4
尽管输出是单通道纹理,但深度是 a):
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;
}
根据您的相机设置,您可能会得到如下信息:
于 2012-07-10T18:38:17.710 回答