Technikecke: Verbesserte Schatten für Guild Wars 2: Visions of Eternity

  • Wenn Guild Wars 2®: Visions of Eternity™ (Affiliate-Link) nächste Woche am 28. Oktober erscheint, veröffentlichen wir auch eine neue Schattentechnologie, mit der wir das Spiel grafisch aufwerten können!

    Schatten können eine Menge zu einer glaubwürdigeren Spielwelt beitragen; sie können weit mehr als nur Licht verbergen. Unser Gehirn lässt sich vom Schatten bezüglich Tiefe, Form, Entfernung und Bewegung Hinweise geben. Ohne sie kann eine 3D-Welt platt und unzusammenhängend aussehen.

    Hinweis: Dieser Beitrag geht tief in die technischen Details, die bekanntermaßen die allerbesten Details sind. Wenn ihr also einfach nur die Vorher-Nachher-Bilder sehen wollt, dann scrollt bis zum Ende, aber wenn ihr mehr über Beleuchtung und Schattensystem erfahren möchtet, dann lest weiter!

    Schattenziele

    Seit dem Start von Guild Wars 2 hat sich die Grafikhardware weiterentwickelt, und dies bietet uns eine Gelegenheit, das Rendering im Spiel zu verbessern. Einer der Bereiche, um die wir uns gekümmert haben, ist das Schattensystem. Bei all unseren Verbesserungen geht es um zwei Hauptziele:

    • Mehr vom Bild abdecken Wir würden gerne entferntere Teile der Welt in qualitativ hochwertigen, dynamischen Schatten abbilden.
    • Mehr Details Wir möchten knackigere Ränder und mehr Details in unseren Schatten sehen, insbesondere feine Details.

    Gleichzeitig möchten wir jedoch auch sicherstellen, dass Spieler mit weniger leistungsstarken Systemen nach wie vor reibungslos spielen können, also beschränken wir uns darauf, nur die Einstellungen „Mittel“, „Hoch“ und „Ultra“ zu verändern. Der Rest bleibt wie bisher.

    Hintergrund im Schatten

    Unsere dynamischen Schatten werden mittels einer Technik namens „Kaskadierte Schattenkarten“ generiert. Das bedeutet, dass wir mehrere Ansichten von der Hauptlichtquelle aus erstellen und die Entfernung vom Licht zu jedem Pixel in einem Bild speichern, das als „Schattenkarte“ bezeichnet wird.

    Beim Generieren der Hauptansicht vergleichen wir die Entfernung jedes einzelnen Pixels zum Licht mit der Entfernung des Lichts in der Schattenkarte. Wenn der Pixel weiter entfernt ist, liegt er im Schatten, ansonsten fällt Licht darauf. Die Ansicht vom Licht aus ist verzerrt, wenn sie auf die Hauptansicht projiziert wird, also können wir Pixel-Entfernungen nicht perfekt vergleichen. Das „Kaskadieren“ von „kaskadierten Schattenkarten“ bedeutet, dass wir mehrere Schattenkarten generieren, um verschiedene Orte des Bildes abzudecken. So wird die Verzerrung der einzelnen Karten reduziert.

    Erhöhte Auflösung

    Die offensichtliche Methode, die Details zu erhöhen, wäre, einfach die Anzahl der Pixel auf der Schattenkarte zu erhöhen. Bei der Umsetzung war sorgfältiges Refactoring erforderlich, da bestimmte Teile der Engine Annahmen über die Auflösung der Schattenkarten anstellten.

    Wir erhöhen die Auflösung der Schattenkarte auf „Mittel“ von 512 × 512 auf 1024 × 1024 und auf „Hoch“ und „Ultra“ von 1024 × 1024 auf 2048 × 2048. Als wir sahen, wie viel besser dies aussieht, wurde uns klar, dass hier das Potenzial für weitere Verbesserungen schlummerte.

    Bessere Kaskade-Berechnungen

    Das Platzieren und die Größe der Kaskade sind von großer Bedeutung für schöne Schatten. Deshalb konzentrierten wir uns auf diesen Bereich. Bei unserer ursprünglichen Version hatten wir einen oder zwei Kreise fester Größe in der Welt, je nach den Grafikeinstellungen. Dies bringt Vorteile wie intuitive Parameter, die festlegen, welcher Teil der Welt von dynamischen Schatten abgedeckt ist, und es ist bestens dafür geeignet, die Mitte des Bildschirms abzudecken, auf den sich der Blick des Spielers größtenteils richtet.

    Nun haben wir jedoch fliegende Reittiere und extreme (und beeindruckendere) Landschaftsformen, und der Algorithmus zeigte erste Schwächen. Der neue Algorithmus deckt jetzt einen größeren Teil des Bildschirms ab, indem dynamisch verändert wird, wie viel der Welt von einer Schattenkarte abgedeckt ist. Der Schritt von einer festen Größe in einem Weltbereich zu einer variablen Größe erforderte sorgfältige Platzierung und Skalierung, damit gewährleistet ist, dass die Schatten stabil blieben, wenn die Kamera sich bewegt, aber nachdem wir das hinbekommen haben, kann nun ein wesentlich größerer Teil des Bildschirms dynamische Schatten anzeigen.

    Die folgenden Bilder sind eine Entwicklungsansicht und vergleichen, welchen Teil des Bildschirms der alte, oder, genauer gesagt, der neue Algorithmus mit dynamischen Schatten abdeckt. Rot ist die Schattenkarte mit den meisten Details, die einen kleineren Teil der Welt abdeckt und der Kamera am nächsten ist. Gelb ist weniger detailliert, deckt mehr der Welt ab und ist weiter von der Kamera entfernt. Cyan ist am wenigsten detailliert, deckt noch mehr der Welt ab, ist aber am weitesten von der Kamera entfernt. Die dunklen Bereiche, die farblich nicht markiert sind, werden nicht von einer Schattenkarte abgedeckt und haben somit keine dynamischen Schatten.

    Wie ihr seht, deckt der neue Algorithmus mehr Fläche mit dynamischen Schatten ab, er deckt den Bereich rechts ab, den der alte Algorithmus ignorierte, und er deckt mehr mit der Schattenkarte mit den höchsten Details ab. Durch all diese Verbesserungen erhalten wir nun detailliertere Schatten, die sich vom Charakter aus weiter in die Welt erstrecken.

    Ein Blick aus der Vogelperspektive auf einen Charakter auf einem Himmelsschuppen-Reittier. Das Terrain zeigt einen Farbverlauf, von Rot um den Charakter bis zu Gelb in der Ferne. Jenseits des Gelbs ist alles dunkel.

    Oben: Abdeckung der alten Schattenkarte.
    Unten: Abdeckung der neuen Schattenkarte.

    Ein Blick aus der Vogelperspektive auf einen Charakter auf einem Himmelsschuppen-Reittier. Das Terrain zeigt einen Farbverlauf, von Rot direkt um den Charakter über Gelb in der Mitteldistanz bis zu einem großen blauen Abschnitt in der Ferne.

    In Bälde wird es zwei Schattenkarten auf den Einstellungen „Mittel“ und „Hoch“ geben, und drei auf der Einstellung „Ultra“. Im Vergleich dazu bot der alte Algorithmus hier eine beziehungsweise zwei Schattenkarten.

    Fortschrittlicheres Sampling

    Die Schattenkarte korrelieren nicht gleichmäßig mit jedem Pixel auf dem Bild. Dadurch gibt es ein Sample-Aliasing, um das wir uns kümmern müssen; wenn wir die Ränder der Schattenkarte nicht zusätzlich bearbeiten, erscheinen sie kantig und unschön. Um dies zu mindern, sampeln wir Pixel der Schattenkarte in den benachbarten Bereichen und interpolieren zwischen ihnen. So werden die kantigen Ränder geglättet, und die Umrisse kleinerer Details, etwa feiner Linien, werden schöner abgebildet.

    Wir verbesserten die Sampling-Technik mittels einer Technik namens „Poisson Disc Sampling“; so können wir im Vergleich zu zuvor mehr aus jedem Sample herausholen, als wir mittels eines Gitters sampelten; zusätzlich werden diese Samples nun gewichtet durch eine Gauß-Verteilung, damit der Fokus auf den Punkten liegt, die näher an dem Punkt auf der Schattenkarte liegen, der geglättet wird. Dies sieht besser aus, als wenn alle Samples dieselbe Gewichtung hätten.

    Bildraum-Schatten

    Manche Details sind einfach zu klein, als dass sie auf einer Schattenkarte sichtbar wären; man bekommt also auch mit erhöhter Auflösung der Schattenkarte keine Schatten. Wir verwenden nun eine Technik namens „Bildraum-Schatten“, um diesen Details Schatten zu verleihen. Der Z-Buffer des aktuellen Einzelbilds wird verwendet, um ein Raymarching im Bildraum durchzuführen; dies verhält sich ähnlich wie Raytracing, ist aber eingeschränkter. Hierdurch können wir kleine Details für Elemente wie Gras, kleine architektonische Details und Heldenausrüstung hinzufügen, damit diese mehr Tiefe zeigen.

    Da wir nur den Z-Buffer haben, ist die Technik begrenzt, und daher treten gelegentlich Inkonsistenzen auf. Wir haben in enger Zusammenarbeit mit dem Grafikteam die Parameter abgestimmt, um das optimale Verhältnis zwischen Qualität und visuellen Artefakten zu finden. Außerdem gibt es eine Option in den Grafikeinstellungen, mit der man die Funktion aktivieren und deaktivieren kann. Bildraum-Schatten sind für die Einstellungen „Hoch“ und „Ultra“ verfügbar.

    Auf den folgenden Vergleichsbildern seht ihr weitere Beispiele dieser Technologie in der Praxis. Wir hoffen, dass ihr mit diesen Verbesserungen noch mehr Spielspaß bei euren Abenteuern in Tyria haben werdet!


    61c8fLionsArchOld-590x332.jpg
    ae011LionsArchNew-590x332.jpg


    17b85gw262-590x332.jpg
    0ce9dgw263-590x332.jpg


    af1f7Before-Springer2-590x332.jpg
    d626fAfter-Springer2-590x332.jpg


    0a066VoE-Before-590x332.jpg
    184a0VoE-After-590x332.jpg


    34389Before-WizardTower-590x332.jpg
    b981cAfter-WizardTower-590x332.jpg


    e581cBefore-Kormir-590x332.jpg
    53f74After-Kormir-590x332.jpg


    73ae0TimberlineFallsOld-590x332.jpg
    d75bbTimberlineFallsNew-590x332.jpg


    Quelle: https://www.guildwars2.com/de/…ium=news&utm_campaign=rss

    ArenaNet Partner

  • Auf Reddit hat jemand aus den Slidern gifs gemacht. Da sieht man die neuen Effekte noch viel besser.


    Improved Shadow Technology Demo as GIF's
    Posted in r/Guildwars2 by u/Bozofriendly • 442 points and 64 comments
    old.reddit.com