2年前の秋に遅延シェーディングのお話をしましたが、あらためて読み返してみたところ、ビュー空間の深度から求めたジオメトリの位置がおかしいことに気づきました1。 今日は、今秋にふさわしい深度の再構築方法 (reconstructing position from depth) について見直していきます。 前回のシェーダー(悪い例) 前回の日記では G-Buffer にビュー空間の深度値を書き込み、必要に応じて深度から ライティングパスでポイントライトなどを実装するためには、ワールド空間(またはビュー空間)のジオメトリの位置が必要です。 これを G-Buffer の深度値から求めるために次のようにしていました: // The following code is bad example. vec3 DepthToPosition(in vec2 textureCoord, in float dep