Warum ist Shadow Mapping der Standard?


41

Obwohl ich von Beruf Programmierer bin, habe ich die Spieleentwicklung kaum berührt. Ich habe diese Frage seit einiger Zeit und jetzt, da ich mich mit der Entwicklung von Spielen beschäftige, dachte ich, es wäre ein guter Zeitpunkt, sie zu stellen.

Warum scheint Shadow Mapping die exklusive Methode zu sein, mit der Spiele Schatten erzeugen? Stumpf zu sein, sieht schrecklich aus. Sogar moderne Spiele mit maximaler Schatteneinstellung haben gezackte blockartige Schatten, die sehr ablenken.

In Doom 3, das vor 11 Jahren erstellt wurde, wurden Schatten-Volumes verwendet, die viel besser aussahen als alle bisher von mir beobachteten Schatten-Karten-Implementierungen. Dies schließt AAA-Spiele ein, die in der gleichen Woche veröffentlicht wurden, in der diese Frage gestellt wird. Mit Mods von Drittanbietern für Doom 3 wurden die Ränder der Schatten noch weicher und optisch noch eindrucksvoller.

Gibt es technische Probleme oder Einschränkungen bei der Implementierung von Dingen wie Shadow-Volumes? Sind Shadow Maps so einfach zu implementieren, dass Entwickler gar nichts anderes berücksichtigen?

Die einzige Information, die ich zu diesem Thema finden konnte, ist, dass die Polygone, aus denen die Volumina bestehen, sehr groß sein können und immer anspruchsvoller werden. Vielleicht haben Shadow-Volumes viel höhere Systemanforderungen, aber wenn ja, wie sind sie 2004 damit durchgekommen?

Diese Frage ist nicht spezifisch für Shadow Mapping vs. Shadow Volume. Sie sind einfach die einzigen 2, die ich in Vollprodukten gesehen habe, und ich konnte nur nicht viele Informationen zu anderen Techniken finden.


3
Nur eine Anmerkung - Doom 3 war für seine Tage extrem leistungsintensiv und selbst auf einigen modernen Systemen immer noch unruhig (und ich spreche hier nicht von integrierten GPUs, auch wenn es hier nicht wirklich unangemessen wäre; sicher, es ist höchstwahrscheinlich altersbedingt, aber ...). Und ich habe es auf vielen Computern laufen sehen, auf denen die Schatten und die Beleuchtung einfach nicht funktionierten . Offensichtlich gibt es viele Komplexitäten, die die richtigen Schatten in einem Spiel erzeugen, und Doom 3 ist ein schönes Beispiel dafür, wie hart realistische Grafiken über eine Vielzahl von Computerkonfigurationen hinweg sind.
Luaan

1
Doom 3 war seiner Zeit, als die Entwicklung begann, um Jahre voraus (zumindest angesichts der Wahl der Grafik-API). Es gab mehrere Backends, die Generationen von Hardware vor Shader Model 2.0 handhabten, und das bedeutete, dass ungefähr 1/4 der Engine kaum portabel ist (es datiert sogar vor GLSL) und die restlichen 3/4 Codepfade für alte NV- und ATI-Hardware-Erweiterungen sind Das war zu dem Zeitpunkt, als das Spiel ausgeliefert wurde, irrelevant. Die Wahl der Schablonen-Schatten-Bände war vielleicht das geringste Problem.
Andon M. Coleman

Antworten:


48

Shadow Mapping und Stencil Shadows (Schattenvolumen) sind definitiv die großen zwei, wie Sie bereits erwähnt haben. Ich werde mich also an den Vergleich der beiden halten. Und da Sie auf die offensichtlichsten Mängel der Schattenzuordnung und die Vorteile von Schablonenschatten hingewiesen haben, mache ich das Gegenteil.

Mängel der Schablonenschatten

  1. Schatten entsprechen der Form des Gussnetzes. Dies ist sehr einschränkend und wahrscheinlich der größte technische Grund, keine Schablonenschatten zu verwenden . Baumblätter, Büsche, Drahtzäune, Stoffrisse und andere gängige Schattenwurf-Spielelemente verwenden Alpha-Transparenz, um die Form des Objekts zu definieren. Da Schablonenschatten jedoch mit dem Netz übereinstimmen und nicht unbedingt mit den sichtbaren Teilen der Textur auf dem Netz, können sie für solche Objekte nicht verwendet werden. Beispielsweise ist eine Gruppe von Blättern in einem Baum normalerweise eine Textur einer Gruppe von Blättern auf einem Quad. Schablonenschatten können nur den Schatten des Quad selbst zeigen (und es wird Probleme damit geben, da ein Quad kein geschlossenes Netz ist, aber dies ist ein kleines Detail, das ich für diese Antwort überspringen werde, da es ist generell umgearbeitet werden können).
  2. Genaue weiche Schatten können nicht erstellt werden. Sie haben darauf hingewiesen, dass Doom 3 modifiziert wurde, um weiche Schatten zu ermöglichen. Zumindest in dieser Version wird die Schattenzuordnung für weiche Schatten verwendet. Ich habe auch Techniken im Bildschirmbereich gesehen, um harte Schatten zu mildern, aber sie sind anfällig für alle Arten von Problemen.
  3. Kann keine Schatten auf transparenten Objekten machen. Hierfür gibt es Problemumgehungen: Rendern von Schatten für transparente Objekte in separaten Übergängen und anschließendes Zusammensetzen. Abgesehen von schwierigen Problemumgehungen sind Schablonenschatten so beschaffen, dass sich jedes Pixel auf dem Bildschirm entweder im Schatten befindet oder nicht. Dies ist auch der Grund dafür, dass wie bereits erwähnt keine weichen Schatten entstehen.
  4. Die allgemein bevorzugte und robusteste Implementierung von Schablonenschatten, die oft als "Carmack's Reverse" bezeichnet wird, ist tatsächlich patentiert, wie Angew in den Kommentaren ausgeführt hat. (Nicht von Carmack patentiert; er musste es für die Open-Source-Version von Doom 3 umgehen)

Für das Shadow Mapping

Abgesehen von den Einschränkungen, die ich speziell für Schablonenschatten aufgeführt habe, bietet das Shadow Mapping einige zusätzliche Vorteile:

  1. Skalierbarkeit. Während Shadow Mapping weder günstig noch perfekt ist ( ed: aber auch Schablonenschatten sind nicht günstig ), ist es relativ einfach, die Wiedergabetreue gegen die Leistung auszutauschen, indem Sie die Auflösung der Shadow Maps oder die Filterung für Schatten ändern. Dies macht es relativ einfach, die Schattenqualität / -leistung für verschiedene Systeme einzustellen. Wie Sie bereits betont haben, ist dies häufig nicht perfekt, aber vieles davon hängt von der Wahrnehmung des Players und der Auflösung ab, mit der sie wiedergeben (eine höhere Bildschirmauflösung erleichtert das Erkennen der Schattenblockade Kartierung). Einige AAA-Spiele (wie Fracture ) machen einen tollen Job mit Shadow Mapping, indem sie nur die richtigen Filter auswählen und die richtigen Regler einstellen, während viele einfach darauf einschlagen und "gut genug" sagen.
  2. Cookies (strukturierte Schatten): Fügen Sie die Textur eines Scheinwerfers oder Buntglases hinzu, und Sie können alle Arten von realen Lichtquellen emulieren. Dies ist im Übrigen auch mit Schablonenschatten möglich, beinhaltet jedoch fast den gesamten Aufbau der Schattenzuordnung (dieselben Projektionsmatrizen, die zum Projizieren der Lichttextur auf Objekte verwendet werden, werden auch für die Schattenzuordnung verwendet).
  3. Transparente Schatten: Die meisten Spiele versuchen nicht viel damit, aber transparente Schatten sind mit Shadow Mapping möglich. Ich meine nicht nur Alpha-Ausschnitte wie Bäume und Zäune, wie ich sie bereits erwähnt habe, sondern auch teilweise transparente Schatten, wie Rauch und Staub.

Keine dieser Listen ist vollständig.

Während Ihre Beobachtungen zu Shadow Mapping und Stencil Shadows korrekt sind, sind die Mängel von Stencil Shadows Show-Stopper für viele wünschenswerte Effekte, und Shadow Mapping hat einige eigene Vorteile.


1
Ahhh, ich habe die meisten dieser Dinge nicht berücksichtigt und transparente Texturen wie Blätter sind ein ziemlich wichtiges Thema. Danke für die Antwort!
Gnoblin

1
Kein Problem :) Einige davon sind leicht zu übersehen!
Jibb Smart

8
Ich würde sagen, dass ein zusätzliches Problem bei Schattenvolumen darin besteht, dass Tiefenpass die Kamera im Schatten nicht mag und Tiefenfehler patentiert ist.
Setzen Sie Monica

Guter Punkt, Angew. Ich habe das zu den Gründen hinzugefügt, warum Schablonenschatten nicht verwendet werden sollten, und den Hauptgrund dafür, Schablonenschatten nicht zu verwenden, als den "größten technischen Grund", warum sie nicht verwendet werden sollten, klargestellt , da die Patentausgabe für sich genommen ein Aushängeschild sein könnte.
Jibb Smart
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.