我在獲取存儲在Float紋理中的深度值(或者我不明白值)時遇到了一些問題。基本上我創建了一個渲染渲染器,並且在其中一個傳遞中,我將深度存儲在浮點渲染目標的alpha組件中。該着色器的代碼看起來是這樣的在後期處理中獲取來自Float紋理的深度
定義夾位置變化
varying vec4 clipPos;
... 在頂點着色器指定的位置
clipPos = gl_Position;
現在在片段着色器我店深度:
gl_FragColor.w = clipPos.z/clipPos.w;
這個大大的作品。當我在任何後續着色器中訪問此渲染目標時,我可以獲得深度。即是這樣的:
float depth = depthMap.w;
我是正確的假設,0.0表示就在鏡頭前和1是在距離?因爲我正在做一些基於這個霧計算,但他們似乎並不正確。
fogFactor = smoothstep(fogNear, fogFar, depth);
霧附近和霧霧是我發送到着色器的制服。當fogNear設置爲0時,我會認爲我可以從鏡頭前方的右側平滑地過渡到它的繪製距離。然而,這是我所看到的:
當我設置fogNear到0.995,然後我得到更多的東西像什麼林期待:
那是正確的,它只是似乎並不對我來說? (幾何體的規模着實不小/過大,也不是附近的攝像頭和過於龐大的所有值是相當合理的。)
什麼是您的zNear和zFar設置在您的透視矩陣? – gman 2014-09-30 09:14:44
你可能會覺得這個答案有用http://stackoverflow.com/a/21106656/128511 – gman 2014-09-30 09:16:42