[英]Why are my depth values in this freaky range?
在我的延遲渲染器中,深度緩沖區保存的值介於0.9700
到1.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.0000
到1.0000
的范圍內。
聽起來像剪裁平面附近的透視圖非常接近原點。 在構建透視矩陣時,嘗試將近限度設置為離原點盡可能遠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.