Was ist ein Shader?
Ein Shader ist ein Begriff aus dem Bereich der Computergrafik, bei dem es sich um ein Hardware- oder Software-Modul handelt, das ursprünglich für die Schattierung in 3D-Szenen verwendet wurde. Hierdurch konnte die richtige Menge an Licht, Dunkelheit und Farbe in einem Bild mit Rendering-Effekten sichergestellt werden. Auch für VR-Anwendungen werden Shader benötigt. In der heutigen Zeit können Shader eine Vielzahl an Funktionen erfüllen: Spezialeffekte in der Computergrafik, Nachbearbeitung von Videos (auch ohne Bezug zu Shading) oder auch andere Funktionen, die nichts mit der Grafik zu tun haben.
Welche Typen gibt es?
Es gibt 2D-Shader (auch Textures genannt), die für digitale Bilder benutzt werden können und die Eigenschaften von Pixeln modifizieren. Sie können am Rendering von 3D Geometrien mitbeteiligt sein. Unter diese Kategorie fallen Pixel Shader (ebenfalls Fragment Shader genannt), die Fragmente verändern und die Farbe, die z-Tiefe sowie den alpha Wert der Pixel beschreiben.
Eine größere Gruppe stellen die 3D-Shader dar. Hierunter fallen zum Beispiel Vertex Shader, die älteste und von den 3D-Shadern am häufigsten genutzte Art. Diese beschreiben die Attribute der Eckpunkte, zum Beispiel die Position, die Koordinaten der Strukturen und die Farben. Deshalb eignen sie sich für die geometrische Berechnung der dynamischen Bewegung von Objekten. So können zum Beispiel Fell, Lava oder Wassereffekte sehr gut dargestellt werden. Auch die Geometry-Shader gehören zu den 3D-Shadern und sind seit DirectX 10/OpenGL 3.2 dazugekommen. Diese können Polygondaten von einem Vertex-Shader erhalten und diese äußerst flexibel modifizieren. Einer der großen Vorteile des Geometry Shaders ist, dass er zu der bestehenden Szene noch weitere, vorher noch nicht vorhandene Geometrien einfügen kann. Der später mit Direct X11/OpenGL 4.0 hinzugekommene Tessellation-Shader verfeinert in zwei Schritten die Geometrie der beiden vorhergehenden Typen von Shadern (Vertex und Geometry) weiter.
Integration der Shadereinheiten
Bei den Shadereinheiten handelt es sich um eine integrierte Recheneinheit in der Rendering-Pipeline des Grafikchips. Aufgrund des steigenden Funktionsumfang in den letzten Jahren wurde der Unified Shader entwickelt, wodurch die Hardware der unterschiedlichen Shadereinheiten vereinheitlicht wurde. Dadurch wurde auch erreicht, dass dieselben Operationen von unterschiedlichen Shadereinheiten durchgeführt werden können, sodass der Grafiktreiber die Shadereinheiten gezielt einsetzen kann. Dadurch kann die Leistungsausbeute erhöht werden.
Die Grafikverarbeitungskette
Der Prozessor sendet Anweisungen und geometrische Daten zur Grafik prozessierenden Einheit auf der Grafikarte. Dann werden innerhalb des Vertex Shaders die Eckpunkte der Strukturen umgewandelt. Falls es einen aktiven Geometry Shader in der Grafik prozessierenden Einheit gibt, wird die Geometrie in der Szene teilweise verändert. Falls es auch einen aktiven Tessellation Shader gibt, können die geometrischen Daten in der Szene unterteilt werden. Die berechnete Geometrie wird trianguliert, das heißt in Dreiecke unterteilt. Die Dreiecke werden weiter zerteilt in Fragment Quads und diese werden mit dem Fragment-Shader modifiziert. Anschließend wird der Sichtbarkeitstest (Z-Test) durchgeführt und wenn dieser positiv ausfällt, erfolgt ein Schreibvorgang in den Framebuffer.
Programmierung
Die Programmierung der Shadereinheiten erfolgt in extra dafür entwickelten Sprachen, wie zum Beispiel Cg, GLSL (OpenGL Shading Language) oder HLSL (High Level Shader Language). Dieser Code muss vom Grafikkartentreiber für die Grafikkarte übersetzt werden, während eine 3D-Anwendung läuft.
Du interessierst dich für die Entwicklung einer VR oder AR Applikation? Du hast vielleicht schon eine konkrete Idee oder bist noch auf der Suche nach Inspiration? Mache heute den ersten Schritt und erhalte Antworten auf deine Fragen:
Unsere VR-Experten helfen dir gerne bei einer unverbindlichen Einschätzung deines Projekts! Erfahre jetzt alles was du wissen musst, um deine Firma oder Organisation in die Welt der virtuellen und erweiterten Realität zu führen. Es lohnt sich!
Du interessierst dich für die Entwicklung einer VR oder AR Applikation? Du hast vielleicht schon eine konkrete Idee oder bist noch auf der Suche nach Inspiration? Mache heute den ersten Schritt und erhalte Antworten auf deine Fragen:
Unsere VR-Experten helfen dir gerne bei einer unverbindlichen Einschätzung deines Projekts! Erfahre jetzt alles was du wissen musst, um deine Firma oder Organisation in die Welt der virtuellen und erweiterten Realität zu führen. Es lohnt sich!