シーンの深度バッファを読み取っていますが、カメラを回転させると、画面の端に向かって深度がカメラに近づいていることに気付きます。インパクトの角度は深度バッファに影響を与えると思いますが、フレームバッファにクワッドを描画しているので、これが発生することは望ましくありません (これは実際にはそうではありませんが、これは私が必要とするものです)。
次のように深さを線形化します。
float linearize(float depth) {
float zNear = 0.1;
float zFar = 40.0;
return (2.0 * zNear) / (zFar + zNear - depth * (zFar - zNear));
}
これを修正するために次のように考えましたが、まだ完全ではありません。45.0 はカメラの垂直方向の角度 / 2. side は画面の中心からのスペースです。
const float angleVert = 45.0 / 180.0 * 3.17;
float sideAdjust(vec2 coord, float depth) {
float angA = cos(angleVert);
float side = (coord.y - 0.5);
if (side < 0.0) side = -side;
side *= 2.0;
float depthAdj = angA * side;
return depth / depthAdj;
}
カメラの前の平面の深さの結果を含む図面で私の問題を示すには:
c
/ | \
/ | \
/ | \
closer further closer
is what I have, what I need:
c
| | |
| | |
| | |
even even even