Uso un buffer di profondità logaritmico: nel mio shader ho scritto il codice descrive here.Buffer profondità logaritmica
Nella vertex shader:
void main()
{
vec4 vertexPosClip = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_Position = vertexPosClip;
gl_TexCoord[6] = vertexPosClip;
}
nello shader frammento:
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));
}
Ora, in uno dei miei algoritmi (SSAO che funziona bene con un buffer di profondità classico), voglio recuperare la profondità del mio frammento. Ecco la formula che uso:
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;
Tuttavia, non funziona, l'algoritmo non funziona più. Sai se la z che ho calcolato è la profondità corretta?