質問

私が理解しているように、シャドウマッピングは光の視点からシーンをレンダリングして深さマップを作成することによって行われます。次に、カメラのPOVからシーンを再レンダリングし、そこからの距離を光源に計算するシーン内の各点(GLSLのフラグメント)について再レンダリングします。それがあなたの影のマップに持っているものと一致するならば、それは光の中にあり、そうでなければそれは影の中にあります。

私はちょうどこのチュートリアルを読み、シャドウマッピングの方法を得るためにポイント/全方向性光

セクション12.2.2であると言う:

すべての光源に単一のシャドウマップを使用します

そして12.3.6未満である:

1)現在の画素から光源への二乗距離を計算します。
...
4)計算された距離値をフェッチされたシャドウマップ値と比較して、シャドウのかどうかを判断します。

これは私が上に述べたものです。

私たちがすべてのライトを1つのシャドウマップに焼きたことがあるのであれば、距離を比較する必要がありますか?地図に焼かれた距離はすべてのライトの混合であるため、何でも対応してはいけません。

私は何かを欠けていると確信していますが、うまくいけば誰かがこれを私に説明することができます。


また、単一のシャドウマップを使用している場合は、すべての光源にどのようにブレンドしていますか?

単一の光源の場合、シャドウマップは、最も近いオブジェクトの距離を光に格納する(すなわち、深さマップ)、複数の光源のために、それは何を含んでいるのでしょうか?

役に立ちましたか?

解決

早期に文を短く切った:

すべての光源に単一のシャドウマップを使用し、画像を作成する マルチパスレンダリングと各光に1パスを実行する ソース

そのため、シャドウマップには一度に1つの光源のデータが含まれていますが、一度に1つの光だけをレンダリングするため、1つのマップしか使用できません。

これはあなたの2番目の質問に流れ込むと思います - 添加物は添加物ですので、それらを一緒に追加するだけで複数の光からの結果を組み合わせることができます。 GPU GEMSの場合、それらはフレームバッファに直接追加され、同時にGPU上で利用可能な比較的限られた数のストレージテクスチャサンプラーのために間違いない。今日では、あなたはおそらくフレームバッファ内でそして直接フラグメントシェーダで直接組み合わせをしたいと思うでしょう。

浮動小数点丸め誤差の蓄積のため、正確に等しいのではなく、「ピクセルはシャドウバッファ内の距離に加えられた場合はピクセルが点灯している場合は点灯します」のテストを適用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top