Zitat Zitat von Lesterdor Beitrag anzeigen
Guten Tag liebe Community,

ich habe eine Frage, was genau ist Shader? Ich höre es sehr häufig im Zusammenhang mit Spielen. Ich weiß, dass es Pixelshader und andere Arten gibt. Aus dem Artikel von Wikipedia bin ich auch nicht schlauer geworden. Über google erfahre ich auch keine wirkliche Antwort. Lediglich, dass es quasi eine Eigenschaft ist, die eine Grafikkarte haben kann (Shader-Modell 3.0 etc).

Über die Suchfunktion bin ich auf den Thread gestoßen, doch leider finde ich die Frage hier nicht explizit. Daher bitte ich euch mir zu vergeben, falls dem doch so ist .

Auch wenn ich Screenshots sehe, wo angeblich ein "toller" Shadereffekt sein soll, bemerke ich da nichts, wo ich genau sagen kann: "aha, ohne Shader wäre das so"...

Ich hoffe, dass mir jemand leicht verständlich erklären kann, was es mit Shader auf sich hat. Vielen lieben Dank im Voraus!
Shadow Mapping


Shadow Maps erlauben die korrekte Schattenerzeugung in Hardware. [Quelle: siehe Bildergalerie]


Meist nutzen Spiele lediglich vorberechnete Schatten, die nicht dynamisch auf das Geschehen reagieren. Mittels Shadow Mapping können in Echtzeit realistische Schattenwürfe berechnet werden. Für die Grafikkarte bedeutet dieser Effekt Mehrarbeit, da die ganze Spieleszene zusätzlich zur Spielersicht noch aus der Sicht einer jeden Lichtquelle berechnet werden muss. Eine Shadow Map ist eine spezielle, in Echtzeit erzeugte Textur, welche eine die Sicht aus dem Blickwinkel der Lichtquelle enthält. Andere Schatten-Verfahren (beispielsweise volumetrische Echtzeitschatten) erzeugen einen ähnlichen Effekt, arbeiten jedoch mit zusätzlichen Dreiecken. Das Shadow-Mapping-Verfahren ist ähnlich aufwendig, funktioniert aber auch dann sehr gut, wenn das Objekt auf sich selbst einen Schatten werfen soll.

Shader


Dank Shader kann der Programmierer individuelle Anpassungen am Beleuchtungsmodell seines Spiels vornehmen. [Quelle: siehe Bildergalerie]


Pixel- und Vertex Shader sind die neuen Modewörter im 3D-Marketing-Jargon. Bei beiden handelt es sich um programmierbare Hardware-Einheiten in DirectX-8-kompatiblen Grafikprozessoren. Passende Shader-Programme enthalten Befehle, die in diesen Hardware-Einheiten ausgeführt werden können. Vertex-Shader-Programme beinhalten Berechnungsanweisungen für Dreieckseckpunkte. Der Spieleprogrammierer kann dabei beispielsweise eigene Beleuchtungsvorschriften erzeugen und auf der Grafikkarte hardwarebeschleunigt berechnen lassen. Er muss sich dabei nicht an die fest eingebrannten Funktionen der T&L-Einheit halten.

Pixel-Shader-Programme liefern der Grafikkarte die pixelgenauen Anweisungen zum Vermischen der verschiedenen Texturschichten. Auch einfache Rechnungen (Skalarprodukt) können vom 3D-Grafikchip übernommen und für Struktureffekte eingesetzt werden, die dynamisch auf die aktuelle Lichtsituation reagieren.

Grundsätzlich geht es ja nur um Schatten. Denn ein Bild wird für dein Auge 3 Dimensional durch Licht und Schatten. Deaktiviere mal in einem Spiel die Schatten und du wirst sehen wie Sch... das dann aussieht, aber wieviel besser die Performance wird. Das Schwierigste sind natürlich nicht die direkten Schatten die durch eine Imaginäre Lichtquelle entstehen, sondern die durch übereinanderliegende Texturen bzw. Bump Maps. Es wird ja eigentlich eine 3D Tapete vorgegaukelt, welche selbst durch Licht und Schatten diesen 3 D Effekt besitzt, um es noch realistischer wirken zu lassen, müssen diese Texturen ja auch einen eigenen Schatten projezieren, sobald die Lichtquelle(n) sich verändern in Intensität und Position. Stell dir vor du stehst vor einem Lagerfeuer, was flackert und hinter dir am Felsen muss dein Schatten korrekt dargestellt werden, zusätzlich die scheinbare 3 D Textur des Sandes, plus der mögliche Fussabdrücke die du Hinterlässt, welche ja plötzlich auch Schatten erzeugen müssen, sobald sie da sind und das Feuer flackert. Das kannst du ganz gut testen, nehm einfach mal im Level Island die rote Leuchtfackel auf, und spiel mit ihr. Ist schon beeindruckend.