14

最近、OpenGL 4.3でボクセルコーントレースを使用して、光の方向にコーンをトレースし、不透明度の値を累積することで、ソフトシャドウを実装しました。 ここに画像の説明を入力してください

私が解決または非表示にしようとしている重要なことは、オクルージョンされた表面がオクルーダーに近づくにつれて非常にボクセル化されたシャドウイング効果であり、表面のボクセル化によってシャドウ内のクリアスポットを非表示にします。私は低解像度のボクセル64x64x64を使用しています。ただし、高解像度のボクセルを使用した場合でも、より高いミップマップレベルの低解像度のボクセルの一部がトレースにキャプチャされます。

ですから、私の最初のアイデアは次のとおりです。シャドウの最も柔らかい部分を最も遠くに保ち、オクルーダーに近いシャドウの部分をシャドウマップに置き換えたいと考えています。シャドウマップは、各オクルーダーから離れるにつれてフェードし、コーントレースシャドウとどうにかしてブレンドします。

ここに画像の説明を入力してください

シャドウマップの各オブジェクトからの距離に基づいてシャドウをフェードアウトし、コーントレースシャドウにスムーズに溶け込ませる方法を誰かが考えられますか?

私が持っているもう1つのアイデアは、オクルーダーに近いサーフェスにシャドウをレイトレースすることですが、これはおそらくコストがかかりすぎます。

または、ソフトシャドウアルゴリズムの改善に役立つ他のアイデアを歓迎します。

私はまた、それが動いていることを示すためにビデオを載せました:

https://www.youtube.com/watch?v=SUiUlRojBpM

シャドウイングの問題を解決する方法はまだ見つかりません。

4

2 に答える 2

2

大きなボクセル サイズがジオメトリで部分的にしか満たされていないために、「クリア スポット」アーティファクトが発生していると推測しています:「不透明度の値の蓄積」。ラスター化されたピクセルからボクセルに変換するときに、いくつのサンプルを取得していますか? サンプル ボリューム/ボクセル ボリュームが小さい場合、透明度を正しくレンダリングする際に問題が発生する可能性があります。明るい領域でノイズが示されます。

また、ボクセルの透明度の方向は依存していますか? 著者の原著論文に基づく。方向依存性は、半不透明なボクセルが正しくレンダリングされるようにするために重要です。

説明する簡単な写真

「シャドウ マップの場合は、コーン トレース シャドウにスムーズにブレンドしますか?」

これは、あなたが自分の足を撃っているように見えます。さらに大きなパフォーマンス ヒットが得られ、シャドウ マッピングとボクセル コーン トレースの両方の欠点が生じます。ボクセル コーン トレーシングはコストがかかりますが、素敵なソフト シャドウを作成し、グローバル イルミネーションを行うことができます。シャドウ マッピングは、ハード シャドウの実行に優れており、小さなシーンでは高速ですが、ジオメトリを追加すると、同じものを複数回 (少なくともライトごとに 1 回) 再描画することになります。

ところで素晴らしい仕事。私自身のボクセル コーン トレーシングの DirectX 実装の予備調査を行っているときに、あなたの問題に遭遇しました。

[編集]

写真を間違えたことに気づきました。右の写真は 4/16 ではなく 4/64 である必要があります。Z次元を忘れていました。

于 2013-03-24T20:53:21.120 に答える
0

この場合、ライトを追加することでそれを行うことができます。元のライトの近くにさらにライトを追加してから、ライトの影をより近いライトの束の影で構成できます。それが「エリアライト」効果です。

于 2013-03-02T09:46:19.223 に答える