シェーダにsampler2DShadowがあり、シャドウマッピングを実装するために使用したいと思います。 GL_TEXTURE_COMPARE_MODEがGL_COMPARE_R_TO_TEXTUREに設定され、GL_TEXTURE_COMPARE_FUNCがGL_LEQUALに設定されている(つまり、座標のr値がテクスチャでフェッチされた深度値よりも小さいか等しい場合、比較結果が1になるはずです)。このテクスチャは、ライトスペース座標でレンダリングされたFBOのGL_DEPTH_ATTACHMENTにバインドされています。texture2D関数による自動比較を使用したシャドウマップテクスチャからのデータのサンプリング
最後のフラグメントシェーダでtexture2D関数にどのような座標を割り当てる必要がありますか?私は現在、
light_vert_pos
vec4でなめらかな機能により頂点シェーダで定義されている私のフラグメントシェーダでセット
light_vert_pos = light_projection_camera_matrix *モデルビュー* in_Vertexを持っています。
私は値
にTexture2D(シャドウマップ、(light_vert_pos.xyz)/light_vert_pos.w)
が、これは動作していないようで、私のライティングを掛けることができ引き受けます。 light_vert_posは射影座標(ポストプロジェクティブ座標)にしかないので(FBOにデプスバッファを作成するために使用する行列です)、手動で3つのx/y/z変数を[0,1]にクランプする必要がありますか?
深度テクスチャに正しい画像が含まれていることを確認します。 – kvark