簡體   English   中英

為什么我的深度值在這個怪異的范圍內?

[英]Why are my depth values in this freaky range?

在我的延遲渲染器中,深度緩沖區保存的值介於0.97001.0000 我通過在給定深度范圍內繪制像素黑色發現了這一點。 這是我使用的着色器代碼。

bool inrange(in float position)
{
    float z = texture2D(depth, coord).r;
    return abs(position - z) < 0.0001;
}

void main()
{
    if(inrange(0.970)) image = vec3(0);
    else result = texture2D(image, coord);
}

這就是它的樣子。 我嘗試了幾個深度值。 該圖像的深度值為0.998

截圖

我使用GL_DEPTH24_STENCIL8類型的紋理,將GL_FLOAT_32_UNSIGNED_INT_24_8_REV格式GL_FLOAT_32_UNSIGNED_INT_24_8_REV為深度和模版附件。

我的深度值在此范圍內有解釋嗎? 這是默認行為嗎? 我希望它們在0.00001.0000的范圍內。

聽起來像剪裁平面附近的透視圖非常接近原點。 在構建透視矩陣時,嘗試將近限度設置為離原點盡可能遠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM