2 Punkte von GN⁺ 2024-03-01 | 1 Kommentare | Auf WhatsApp teilen

Wie LUTs in Videospielen verwendet werden und wie auch du sie einsetzen kannst

  • In Videospielen werden LUTs (Look-up-Tables) eingesetzt, um kreative Techniken zu nutzen.
  • Anhand eines Beispiels mit WebGL wird erklärt, wie sich Videodaten in Echtzeit manipulieren lassen.
  • Nutzer können mit ihrem eigenen Video oder ihrer Webcam selbst experimentieren.

Einrichtung

  • Als Ausgangspunkt dient ein in Schwarz-Weiß aufgenommenes Video einer Wärmebildkamera.
  • Über WebGL wird das Video auf die GPU hochgeladen und mit Shadern zunächst identisch zum Original angezeigt.

Einfärbung

  • Mithilfe eines Fragment Shader, der die Farbe pro Pixel bestimmt, wird das Video eingefärbt.
  • An einem einfachen Beispiel mit einer orangefarbenen Tönung wird erklärt, wie Farbmanipulation funktioniert.

Leistungskosten: null

  • Die Leistungsauswirkungen der Einfärbung sind nahezu nicht vorhanden und durch das GPU-latency hiding praktisch vernachlässigbar.

Einsatz der Einfärbung bei Valve Software

  • Im Spiel Left 4 Dead von Valve Software wird Einfärbung auf Fahrzeugmodelle angewendet, um verschiedene Varianten zu erzeugen.

LUT – einfach, aber leistungsstark

  • Es wird erklärt, wie sich mit LUTs Farbbereiche definieren und verändern lassen.

Die bescheidene 1D-LUT

  • Eine 1D-LUT ist ein Farbarray, das verwendet wird, um Graustufenvideos in RGB umzuwandeln.
  • Farbtransformationen werden mit 1D-LUTs unterschiedlicher Größe demonstriert.

Viele Farben

  • Alle von matplotlib unterstützten Farbskalen werden als 1D-LUT bereitgestellt.
  • Empfohlen wird die Verwendung von Perceptually Uniform-Farbskalen.

Immer noch ohne Leistungskosten?

  • Bei kleinen 1D-LUTs gibt es kaum Auswirkungen auf die Leistung, da der GPU-Cache effizient genutzt wird.

Vielfalt für Zombies

  • In Left 4 Dead 2 werden LUTs verwendet, um verschiedene Farbvarianten von Zombies zu erzeugen.

Berechnungen vorab berechnen

  • Mit 1D-LUTs lassen sich rechenintensive Operationen cachen, um zum Beispiel Gammakorrektur schnell durchzuführen.

Die leistungsstarke 3D-LUT

  • Eine 3D-LUT bildet den gesamten RGB-Raum als einen Würfel ab und ordnet Farben neu zu.

Einrichtung

  • Anhand von mit einer Panasonic GH6 aufgenommenem Video im Log-Profil wird die Verarbeitung mit 3D-LUTs erklärt.

Einfache Korrekturen

  • Es wird beschrieben, wie Farbkorrekturen in DaVinci Resolve angewendet und anschließend wieder als LUT exportiert werden.

Einsatz von 3D-LUTs in Left 4 Dead

  • Dies ist ein in der Spieleindustrie weithin bekannter Workflow, bei dem externe Tools genutzt werden, um die Farbgestaltung eines Spiels zu stilisieren.

Fortgeschrittene Abenteuer

  • Es wird erklärt, wie komplexe Farbtransformationen mit Color-Grading-Tools wie DaVinci Resolve als LUT exportiert werden können.

Weitere Einsatzmöglichkeiten

  • Als weiterer Anwendungsfall wird eine LUT vorgestellt, die beim Port von Tomb Raider auf den Game Boy Advanced verwendet wurde.

Meinung von GN⁺

  • LUTs sind ein leistungsstarkes Werkzeug für Farbmanipulation und Optimierung in Videospielen und der Grafikprogrammierung. Diese Technik kann in Echtzeit-Rendering verschiedenste visuelle Effekte ohne Leistungseinbußen liefern und ist damit sowohl für Entwickler als auch für Artists nützlich.
  • Beim Einsatz von LUTs sollten Farbgenauigkeit und die visuelle Darstellung von Daten berücksichtigt werden. Besonders wichtig ist es, die Bedeutung von Perceptually Uniform-Farbskalen zu verstehen, insbesondere im Hinblick auf Farbenblindheit.
  • Die Technik lässt sich in vielen Bereichen anwenden, etwa für Farbkorrektur, visuelles Styling und Datenvisualisierung. So können beispielsweise LUT-ähnliche Verfahren aus dem Color Grading der Filmindustrie in der Spieleentwicklung genutzt werden.
  • Größe und Präzision einer LUT können je nach Einsatzzweck und Plattform variieren; ein entsprechendes Verständnis ist wichtig. In der Filmindustrie sind beispielsweise LUTs mit einer Größe von 33³px Standard, während Spiele oder andere Grafikapplikationen andere Größen benötigen können.
  • Beim Einsatz dieser Technik ist es wichtig, ein Gleichgewicht zwischen exakter Farbdarstellung und Leistungsoptimierung zu finden. Um LUTs effektiv zu nutzen, ist ein tiefes Verständnis von Farbtheorie und Grafikprogrammierung erforderlich.

1 Kommentare

 
GN⁺ 2024-03-01
Hacker-News-Kommentare
  • Erklärung, wie sich Effekte mit Lookup-Tabellen (LUTs) umsetzen lassen

    • Verwendet werden eine große Lookup-Tabelle, die Details der kreisförmigen Beleuchtung um den Spieler speichert, sowie eine zweite Lookup-Tabelle, die die Reihenfolge der Hintergrundzeilen zufällig festlegt.
    • Es kann zwar nur 1/20 des Bildschirms aktualisiert werden, doch durch die zufällige Reihenfolge entstehen weiche Kanten und das Raster-Scanning wird verborgen.
    • Teile, die in Echtzeit zu langsam zu berechnen wären, werden über Lookup-Tabellen verarbeitet, damit keine Zeilen ungeändert bleiben.
  • Geteilte Erfahrungen mit dem Einsatz von Lookup-Tabellen für einen Texture-Tunnel-Effekt

    • Für jedes Pixel auf dem Bildschirm wird eine Lookup-Tabelle verwendet, die Winkel und Entfernung vom Mittelpunkt liefert.
    • Es sieht so aus, als bewege man sich durch einen Tunnel mit 3D-Geometrie, ist aber so kostengünstig, dass es sogar auf dem Pico umsetzbar ist.
    • Man dachte, das Spiel „Stardust“ habe diesen Effekt verwendet, tatsächlich nutzte es jedoch eine sich wiederholende 6-Frame-Animation als Hintergrund.
  • Verweis auf ein Video darüber, wie das Spiel „The Legend of Zelda: Wind Waker“ mit Lookup-Tabellen seine einzigartige Optik umgesetzt hat

    • „Breath of the Wild“ und „Tears of the Kingdom“ verwenden dieselbe Technik ebenfalls.
  • Hinweis darauf, dass der Autor des Beitrags über Lookup-Tabellen bereit ist, Fragen zu beantworten.

  • Erklärung der Bedeutung von Lookup-Tabellen in der Retro-Spieleentwicklung

    • Früher war der Speicher schnell, aber die Prozessoren langsam, daher wurde versucht, möglichst viele Berechnungen in Lookup-Tabellen auszulagern.
    • Je besser man Lookup-Tabellen nutzte, desto spektakulärere Spiele konnte man bauen.
  • Geteilte Erfahrungen zum Spiel „Bobl“ aus der NES-Homebrew-Community, das mit Lookup-Tabellen erstaunliche Physikeffekte umgesetzt hat

    • Effekte, die deutlich komplexer wirken als das, was das System in Echtzeit berechnen könnte, wurden mit Lookup-Tabellen erreicht.
  • Verweis auf eine Podcast-Episode darüber, wie der SNES-Port von „Doom“ Lookup-Tabellen zur Berechnung trigonometrischer Funktionen nutzte

    • Der SNES hatte keinen Grafikprozessor, daher wurden die Berechnungen mit Lookup-Tabellen durchgeführt.
  • Ausdruck von Frust darüber, dass Menschen mit Kenntnissen in dynamischer Programmierung Caching und Memoization verwechseln

    • Memoization ist lokal geteilter Zustand, Caching global geteilter Zustand; beide haben unterschiedliche Probleme.
    • Caching bedeutet, etwas vorzuhalten, das man künftig wahrscheinlich braucht, während Memoization bedeutet, dass man weiß, dass es sofort benötigt wird.
    • Tabulation bedeutet, gemeinsame Teilprobleme im Voraus zu finden und zu lösen; eine Lookup-Tabelle ist eine Tabulation mit fester Größe.
  • Geteilte Informationen über „Lattice“, eine Mac-App zum Umgang mit Lookup-Tabellen

  • Liste mit Beispielen verschiedener Effekte, die sich mit Lookup-Tabellen umsetzen lassen

    • Dazu zählen atmosphärische Streuung, das Umfärben von Sprites, Nachtsicht, Wärmebildkamera, Schwarzweiß-Video-Feed-Effekte, Glitch-Effekte, Heightmap-Shading, Alpha-Point-Elemente für Triebwerksabgasfahnen von Raumschiffen, Heatmaps der Mausverweildauer von Website-Besuchern, Kristalleffekte sowie Post-Processing-Kolorierung in einem primitiven Farbraum.
    • Lookup-Tabellen sind eine Visualisierung von Arrays bekannter Werte und äußerst nützlich.