私は遅延シェーダーを作成しており、gbuffer をより密にパックしようとしています。ただし、ビュー空間の深さを正しく指定すると、ビューの位置を計算できないようです
// depth -> (gl_ModelViewMatrix * vec4(pos.xyz, 1)).z; where pos is the model space position
// fov -> field of view in radians (0.62831855, 0.47123888)
// p -> ndc position, x, y [-1, 1]
vec3 getPosition(float depth, vec2 fov, vec2 p)
{
vec3 pos;
pos.x = -depth * tan( HALF_PI - fov.x/2.0 ) * (p.x);
pos.y = -depth * tan( HALF_PI - fov.y/2.0 ) * (p.y);
pos.z = depth;
return pos;
}
計算された位置が間違っています。私はまだgbufferに正しい位置を保存していて、それを使ってテストしているので、これを知っています。