【问题标题】:Depth buffer only show blue color深度缓冲区仅显示蓝色
【发布时间】:2010-07-07 04:43:21
【问题描述】:

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

【问题讨论】:

  • 我们可以看到生成的深度缓冲区的图像吗?
  • 它只是纯浅蓝色。没有其他的。想看的话就用这个链接flickr.com/photos/50600408@N07/4772680803其实你可以下载我上面上传的workspace自己试试

标签: graphics rendering depth-buffer


【解决方案1】:

浅蓝色实际上是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;
}

根据您的相机设置,您可能会得到如下信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多