5
我使用對數深度緩衝區:在我的着色器中,我寫的代碼描述了here。對數深度緩衝區
在頂點着色器:
void main()
{
vec4 vertexPosClip = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_Position = vertexPosClip;
gl_TexCoord[6] = vertexPosClip;
}
在片段着色器:
void main()
{
gl_FragColor = ...
const float C = 1.0;
const float far = 1000000000.0;
const float offset = 1.0;
gl_FragDepth = (log(C * gl_TexCoord[6].z + offset)/log(C * far + offset));
}
現在,在我的算法之一(SSAO它採用了經典的深度緩衝效果很好),我想恢復我的片段的深度。下面是式I使用:
const float C = 1.0;
const float far = 1000000000.0;
const float offset = 1.0;
//depth
z=(pow(C*far+offset,depth_in_depth_buffer)-offset)/C;
但是它不工作,該算法不工作了。你知道我計算的z是否是正確的深度?