問題タブ [shadow-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
579 参照

opengl - 正投影のシャドウマップを画面にレンダリングしますか?

ディレクショナル ライトのシャドウ マップの実装が機能しており、正投影を使用して投影マトリックスを構築しています。私の質問は、シャドウ マップを視覚化するにはどうすればよいですか? スポット ライト (透視投影を使用) に使用する次のシェーダーがありますが、それを正射投影で作成されたシャドウ マップに適用しようとすると、完全に黒い画面になります (シャドウ マッピングは機能しますが)。シーン自体をレンダリングする場合)

0 投票する
2 に答える
4139 参照

opengl - シャドウ マッピング シェーダー

次のようなシャドウ マッピングを実装するシェーダーがあります。

私がやりたいことは、フラグメントが実際に影にあるかどうかを最初に確認してから、色変更することです(完全な黒と元の色の中間になるように半分にします)。

textureProj(...)ただし、正規化された値を返すことがわかっている限り、結果が実際に影にあるかどうかを確認する方法float

textureProj(...) > 0.9999すでに十分でしょうか?マルチサンプリングを使用している場合、0 または 1 以外の値を返す可能性があることはわかっています。また、ある時点で壊れない動作が必要です。

出力頂点シェーダー:

フラグメント シェーダーは地形用であり、頂点シェーダーは床用であるため、この 2 つの間には多少の不一致がある可能性がありますが、関連性はありません。

shadow_matrixとして渡されるユニフォームbias_matrix * light_projection_matrix * light_view_matrix * light_model_matrixです。

0 投票する
1 に答える
590 参照

opengl - シャドウに深度バッファを使用するopengl-深度バッファを使用するのではなく、zをtexにレンダリングしない理由はありますか?

そこで、シャドウ マッピングの実装に取り​​組んでいます。ここまでで、カメラの視点からジオメトリ (深度、法線、色) をフレーム バッファにレンダリングし、ライトの視点からジオメトリの深度をレンダリングしました。ここで、カメラの視点からライティングをレンダリングしています。各フラグメントについて、ライトまでの距離と、render-from-the-lights-pov パスの深度 tex 値を比較します。距離が大きい場合は影になります。(ここで要約して、理解していないことに気付いていないことを確認してください)。

したがって、この最後のステップを実行するには、深度値 [0-1] をその眼空間値 [0.1-100] (近/遠面) に変換する必要があります。(説明はこちら -深度バッファから真の z 値を取得する)。

代わりに、render-from-the-lights-pov パスを使用して、フラグメントからカメラまでの距離 (z コンポーネント) をテクスチャに直接書き込むだけにする理由はありますか? そうすれば、ばかげた変換に対処する必要はありませんか?または、何か不足していますか?

0 投票する
1 に答える
649 参照

three.js - three.js shadowCascade DirectionalLight

http://threejs.org/examples/webgl_morphtargets_md2_control.htmlから自分のプロジェクトにshadowCascade 機能をコピーしようとしています。私はこれを 1:1 で行いましたが、特定の角度と回転で少しだけ影ができ、しばしば途切れてしまいます。さらに、最初から shadowCascade を有効にすると、シェーダー エラーがスローされます。shadowCascade = true を設定できるようになるまで、しばらく待たなければなりません。

shadowCascade がどのように機能するか、およびこれらすべてのパラメーターが何を行うかを説明するドキュメント、リンク、またはヒントを見つけようとしましたが、これまでのところ成功していません。

全体として、私はかなり混乱しています。何が起こっているのか、なぜなのか、よくわかりません。いくつかの説明と助けを前もってありがとう!

ここにスクリーンショットがあります

編集:これは効果のビデオです

0 投票する
1 に答える
161 参照

c++ - シャドウ マップに対して計算されたテクスチャ座標が正しくない

シャドウ マップをサンプリングするための正しいテクスチャ座標を取得するのに問題があります。私のコードを見ると、問題は間違った行列にあるようです。これは、シャドウを行うレンダリング パスのフラグメント シェーダーです。

このシェーダーからシャドウイングに関係のないすべてのコード (ライティングなど) を削除しました。これは、最終パスをレンダリングするために使用するコードです。

私の問題に関連する場合は、深度マップとシャドウ マップの深度フレームバッファ アタッチメントを生成する方法を次に示します。

数学またはコードのどこに問題があり、それを修正するにはどうすればよいですか?