Shader sind kleine Programme, die als Teil des Rendering-Prozesses auf Ihrer GPU ausgeführt werden. Sie übernehmen alle Aufgaben, von der Transformation der Geometrie von 3D-Modellen bis hin zur Anwendung von Texturen, Beleuchtung, Schatten und Nachbearbeitungseffekten. Sie sind für moderne Spiele unverzichtbar und tragen maßgeblich dazu bei, dass diese Spiele so beeindruckend aussehen.
Das war jedoch nicht immer so. Frühe Grafikkarten basierten auf Hardware mit festen Funktionen, wobei separate Einheiten für Aufgaben wie Texturierung und Beleuchtung zuständig waren. Diese Einheiten waren für ihre Zeit zwar leistungsstark, aber auch unflexibel. Als Spiele immer komplexer und visuell anspruchsvoller wurden, schränkte die feste Hardware sowohl die visuellen Effekte als auch die kreative Freiheit ein. Programmierbare Shader beseitigten diese Einschränkungen.
Die ersten weit verbreiteten Shader waren Pixel-Shader. Diese bestimmen die endgültige Farbe jedes Pixels auf dem Bildschirm und können Beleuchtungsberechnungen, Schatten, Texturen, Transparenz und Nachbearbeitungseffekte wie Unschärfe oder Cel-Shading verarbeiten. Bald darauf folgten Vertex-Shader, mit denen Entwickler Vertex-Daten wie Position, Farbe und Texturkoordinaten vor dem Rendern der Geometrie bearbeiten können.
Später kamen Geometrie-Shader hinzu, die Geometrien innerhalb der Grafik-Pipeline spontan generieren und modifizieren können. Obwohl sie aufgrund ihrer Leistungsauswirkungen heute nicht mehr häufig verwendet werden, ermöglichten sie Effekte wie prozedurale Geometrien und Partikeleffekte. Tessellations-Shader bauten auf dieser Idee auf, indem sie geometrische Details dynamisch erhöhten, wodurch Oberflächen glatter erschienen, ohne dass mehr Modelldaten gespeichert werden mussten.
In jüngerer Zeit haben moderne APIs Task- und Mesh-Shader eingeführt. Diese ersetzen Teile der traditionellen Vertex-, Geometrie- und Tessellationsstufen durch ein flexibleres System, das Entwicklern mehr Kontrolle über die Erzeugung und Verarbeitung von Geometrien gibt.
Raytracing-Shader sind die neueste Ergänzung. Diese werden für Effekte wie Reflexionen, Schatten und globale Beleuchtung verwendet, indem sie die Wege der Lichtstrahlen durch eine Szene verfolgen. Sie werden durch DirectX Raytracing und Vulkan unterstützt und erfordern relativ moderne Grafikkarten, um mit spielbarer Leistung zu laufen.
Wenn das die Funktion von Shadern ist, warum dauert das Vorladen dann so lange und was bedeutet Vorladen eigentlich?
Der Begriff ist etwas irreführend. In der Praxis bedeutet das Vorladen von Shadern eher das Kompilieren und Zwischenspeichern von Shadern als das einfache Laden. Spieleentwickler können Shader entweder während des Spielens spontan kompilieren oder sie vor Beginn des Spiels im Voraus kompilieren.
Das Kompilieren von Shadern während des Spiels kann in einfachen Fällen funktionieren, führt jedoch häufig zu Verzögerungen und Ruckeln, wenn neue Effekte oder Bereiche auftreten. Wenn viele Shader gleichzeitig kompiliert werden müssen, kann es zu starken Einbrüchen bei der Bildrate kommen, weshalb dieser Ansatz in Open-World-Spielen so auffällig ist. Übermäßiges Kompilieren während des Spiels ist oft ein Zeichen für eine schlechte PC-Optimierung.
Durch das Vorladen von Shadern wird dieses Problem vermieden, indem sie im Voraus kompiliert und die Ergebnisse in einem Cache gespeichert werden. Nach der Kompilierung können Shader während des Spiels sofort wiederverwendet werden, was zu einer flüssigeren Leistung führt. Der Nachteil ist, dass Sie beim ersten Start des Spiels einen Shader-Kompiliierungsschritt abwarten müssen.
Diese Wartezeit kann nach einem größeren Spiel-Update oder Grafikkartentreiber-Updates wieder auftreten, da Shader-Binärdateien eng mit der Spielversion und dem GPU-Treiber verbunden sind. Da Grafikkartentreiber häufig aktualisiert werden, ist die Neukompilierung von Shadern für PC-Spieler eine bekannte Frustration.
Warum können Entwickler nicht einfach vorkompilierte Shader ausliefern? Auf unseren geliebten PCs ist die Hardware- und Treiberlandschaft einfach zu vielfältig. Die Shader-Kompilierung hängt von der GPU-Architektur, der Treiberversion und der Grafik-API ab, sodass ein kompilierter Shader, der auf einem System funktioniert, auf einem anderen nicht funktioniert. Konsolen vermeiden dieses Problem, da sie feste Plattformen sind, PCs jedoch nicht.
Wenn Sie also das nächste Mal auf einen Shader-Vorladebildschirm starren, denken Sie daran, dass dieser dazu dient, Ruckeln zu reduzieren und die Leistung zu verbessern, sobald Sie tatsächlich spielen. Es ist eine Kraft für das Gute.
JOIN OUR OFFICIAL CORSAIR COMMUNITIES
Join our official CORSAIR Communities! Whether you're new or old to PC Building, have questions about our products, or want to chat the latest PC, tech, and gaming trends, our community is the place for you.