シャドウマッピングが標準である理由


41

私は貿易のプログラマですが、ゲーム開発にはほとんど触れていません。私はしばらくの間この質問をしてきましたが、今はゲーム開発を検討しているので、尋ねるのに良い時期だと思いました。

ゲームがシャドウを作成するために、シャドウマッピングが排他的な方法であるように見えるのはなぜですか?率直に言って、ひどく見えます。シャドウ設定が最大化された最新のゲームでさえ、非常に注意をそらすギザギザのブロックyシャドウがあります。

11年前に作成されたDoom 3は、この質問が投稿された同じ週にリリースされたAAAゲームを含む、これまでに見たどのシャドウマップの実装よりもはるかに優れたシャドウボリュームを使用しました。Doom 3のサードパーティ製のMODは、シャドウのエッジをさらに柔らかくし、視覚的な印象をさらに高めました。

シャドウボリュームなどの実装には、何らかの技術的な問題や制限がありますか?シャドウマップの実装は非常に簡単で、開発者は他に何も考慮していませんか?

このテーマについて私が見つけた唯一の情報は、ボリュームを構成するポリゴンが非常に大きくなり、要求が厳しくなることです。おそらくシャドウボリュームにははるかに高いシステム要件がありますが、その場合、2004年にシャドウボリュームを使用することでどのように逃げましたか?

この質問は、シャドウマッピングとシャドウボリュームに固有のものではありません。それらは完全な製品で使用された2つだけであり、他のテクニックに関する多くの情報を見つけることができませんでした。


3
注:Doom 3はその日は非常にパフォーマンスが集中しており、一部の最新システムでもまだ不安定です(統合GPUについては、ここではあまり不適切ではありませんが、話はしていません。その年齢のため、しかし...)。そして、私はそれが影と照明が単に働かなかった多くのコンピューターで動くのを見ました。明らかに、ゲーム内でシャドウを取得するのは非常に複雑であり、Doom 3は、非常に現実的なグラフィックスが多くのコンピューター構成に対してどれほど難しいかを示す良い例です。
ルアーン

1
Doom 3は、(少なくともグラフィックスAPIの選択を考えると)開発が開始されたときよりも何年も前でした。シェーダーモデル2.0よりも前の世代のハードウェアを処理するためのバックエンドがいくつかあり、エンジンの約1/4が​​かろうじて移植可能で(GLSLよりも古い)、残りの3/4は古代のNVおよびATIハードウェア拡張のコードパスですゲームが出荷された時点では無関係でした。ステンシルシャドウボリュームの選択は、おそらくその問題の中で最も少なかったでしょう。
アンドンM.コールマン

回答:


48

シャドウマッピングとステンシルシャドウ(シャドウボリューム)は、既に述べたように間違いなく大きな2つなので、この2つを比較することに固執します。そして、シャドウマッピングの最も明らかな欠点とステンシルシャドウの利点を指摘したので、反対のことを行います。

ステンシル影の欠点

  1. 影はキャスティングメッシュの形状に一致します。これは非常に限定的であり、おそらくステンシルシャドウを使用しない最大の技術的理由です。木の葉、茂み、ワイヤーフェンス、布の裂け目、およびその他の一般的なシャドウキャスティングゲーム要素は、アルファ透明度を使用してオブジェクトの形状を定義します。ただし、ステンシルシャドウはメッシュと一致し、メッシュ上のテクスチャの可視部分と厳密には一致しないため、このようなオブジェクトには使用できません。たとえば、ツリー内の葉のクラスターは、通常、クワッド上の葉のクラスターのテクスチャです。ステンシルシャドウは、クワッド自体のシャドウを表示することしかできません(そして、クワッドは閉じたメッシュではないため、問題がありますが、これは、この回答では省略します。一般的に回避することができます)。
  2. 正確なソフトシャドウを行うことはできません。あなたは、Doom 3がソフトシャドウを許可するように改造されていることを指摘しました。このバージョンでは、少なくとも、ソフトシャドウにシャドウマッピングを使用しています。ハードシャドウを和らげるスクリーンスペーステクニックも見ましたが、あらゆる種類の問題が発生しやすくなっています。
  3. 透明なオブジェクトに影を付けることはできません。これには回避策があります-透明なオブジェクトの影を別々のパスでレンダリングし、後で合成します。しかし困難な回避策の他に、ステンシルシャドウの性質は、画面上の各画素があるようなものであるいずれかの影の中に、またはしません。これは、前述のソフトシャドウがない理由でもあります。
  4. Angewがコメントで指摘したように、「Carmack's Reverse」と呼ばれることが多いステンシルシャドウの一般的に好まれ、最も堅牢な実装は、実際に特許を取得しています。(Carmackによる特許は取得されていません。彼はDoom 3のオープンソースバージョンで回避する必要がありました)

シャドウマッピングを支持する

ステンシルシャドウ専用にリストした制限がないこととは別に、シャドウマッピングにはいくつかの追加の利点があります。

  1. スケーラビリティ。シャドウマッピングは安価でも完全でもありませんが(ed:しかしステンシルシャドウも安価ではありません)、シャドウマップの解像度を変更したり、シャドウのフィルタリングを変更したりすることで、パフォーマンスと忠実さを比較的簡単に交換できます。これにより、さまざまなシステムのシャドウの品質/パフォーマンスを比較的簡単に調整できます。あなたが指摘したように、これはしばしば完璧ではありませんが、これの多くはプレイヤーの知覚力と彼らがプレイしている解像度に依存します(画面解像度が高いほど影のブロック感が見やすくなりますマッピング)。一部のAAAゲーム(Fractureなど)は、適切なフィルターを選択して適切なノブを調整するだけで、シャドウマッピングで素晴らしい仕事をします。
  2. Cookie(テクスチャシャドウ):スポットライトまたはステンドグラスのテクスチャを追加すると、あらゆる種類の現実世界の光源をエミュレートできます。ちなみに、これはステンシルシャドウでも実行できますが、シャドウマッピングのほとんどすべてのセットアップが含まれます(オブジェクトのライトテクスチャを投影するために使用されるのと同じ投影マトリックスがシャドウマッピングに使用されます)。
  3. 透明な影:ほとんどのゲームはこれをあまり試みませんが、シャドウマッピングでは透明な影が可能です。前に述べたような木やフェンスのようなアルファカットアウトを意味するのではなく、煙やほこりのような部分的に透明な影を意味します。

これらのリストはいずれも網羅的ではありません。

したがって、シャドウマッピングとステンシルシャドウについての観察は正しいものの、ステンシルシャドウの欠点は多くの望ましい効果を発揮するためのストッパーであり、シャドウマッピングにはいくつかの利点があります。


1
ああ、私はこれらのことのほとんどを考慮することができず、葉のような透明なテクスチャはかなり大きな問題です。答えてくれてありがとう!
gnoblin

1
問題ありません:)これらのいくつかは見逃しやすいです!
ジブスマート

8
シャドウボリュームに関するもう1つの問題は、深度パスではカメラがシャドウの内側にあることを好まないこと、および深度エラーが特許を取得していることです。
モニカを復活させる

良い点、Angew。ステンシルシャドウを使用しない理由にそれを追加し、ステンシルシャドウを使用しない「最大の技術的理由」として、ステンシルシャドウを使用しない主な理由を明確にしました。
ジブスマート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.