1

OpenGL 2.0 でシャドウ キューブ マップの PCF を実装しようとしています。ここで解決策を見つけたと思った(キューブ マップ PCF のセクションの開始を検索する) が、コードはOpenGL 2.0 では使用できない にPercentage closer filtering (PCF) algorithm依存しているため、その上に表示されているへの呼び出しを使用できません。ページ。samplerCubeShadowtexture(samplerCubeShadow(), vec4())

この質問の最初の部分は次のとおりですsamplerCube。OpenGL 2.0/GLSL 1.10 から同じ結果を取得する方法はありますか? textureCubeまたは何か他のものを使用して?

2 番目の部分は、この問題を解決するために私が持っている考えに関連しています。下の画像は、私がやりたいことを示しています。

ライトから頂点/プレーン

青い実線と赤い点線はすべてsamplerCube、深度値を格納する の 1 つの面からのベクトルです。黒い四角の中心にある濃い灰色の四角と青い線の交点は、立方体からサンプリングされたポイントを表します。青いベクトルに垂直な平面 (明るい灰色の長方形で表される) を作成したいと思います。次に、Z ベクトルをライトの位置 (赤い点線) からその平面上の x、Y 値にキャストすることで、カメラから 4 つの黒い点をサンプリングしたいと思います。その後、これらの値を元のサンプルの値と組み合わせて使用​​して、PCF シャドウ値を計算します。

これは、ポイントライト/キューブマップの PCF を計算する実行可能で効率的な方法ですか? 平行平面を作成し、そこから必要な X 座標と Y 座標を取得するにはどうすればよいでしょうか。

4

1 に答える 1

0

それが効率的か良いか (または正しいか) はわかりませんが、絶対に実行可能です。

光からフラグメントまでのベクトル v が与えられた場合、v に平行ではない任意のベクトル u を選択します。外積 w = cross(u, v) は v に垂直になります。w を軸として、cross(v, w ) を 2 番目の軸として使用します。

于 2015-12-30T13:32:54.613 に答える