Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken.

Ähnliche Präsentationen


Präsentation zum Thema: "Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken."—  Präsentation transkript:

1 Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken III

2 Gliederung 1.Was ist ein Shader? 2.Verschiedene Shader 2.1 Vertex-Shader 2.2 Pixel-Shader 3. Einsatzbeispiele 3.1 Per-Pixel-Beleuchtungsmodell 3.2 Realistische Wasseroberflächen

3 1. Was ist ein Shader? ● Kleines Programm, das einmal pro Vertex oder Pixel aufgerufen wird ● Wird vom Grafikprozessor ausgeführt => sehr schnell

4 ● Geschrieben in speziellen Shader- Assembler-Sprachen ● Seit DirectX 9 innnerhalb einer Effektdatei auch in gewöhnlicher C(++)- Syntax -> High Level Shader Language (HLSL)

5 ● Einsatzgebiet: Aufwändige Spezialeffekte Fixe Rendering-Pipeline wird durch Shadereinsatz selbst definierbar

6 2. Verschiedene Shader 2.1 Vertex-Shader Beispiel: Glow-Effekt: “Hülle” mit Alpha-Blending in der Glühfarbe Entstehung der Hülle: Jeder Vertex wird entlang seines Normalenvektors verschoben

7

8 2.2 Pixel-Shader Meist kleiner als Vertex-Shader => werden öfter aufgerufen Interessant für Per-Pixel Beleuchtung (Bump- Mapping) Darstellung detaillierter Oberflächen (Wasser, Haut)

9

10 3. Einsatzbeispiele 3.1 Per-Pixel Beleuchtungsmodell Nachteile des Direct3D-Beleuchtungsmodells: Nur auf Vertexbasis Keine eigenen Lichtberechnungen (Normal-Mapping) Begrenzte Anzahl von Lichtquellen

11 Multi-Pass-Verfahren Anzahl an Registern bei frühen Pixel-Shader Versionen stark begrenzt => mehrere Durchgänge (Passes) nötig Ambient-Pass Pro Lichtquelle ein weiterer Pass (mit Alpha- Blending)

12

13 Single-Pass-Verfahren (spätere Vers.) Einschränkungen der früheren Versionen werden gelockert =>Mehrere Lichtquellen in einem Pass Seperate Pixel-Shader für 1,2,3,4 Lichtquellen Vorteil ggü. Multi-Pass: Vertex-Shader wird nur ein Mal aufgerufen

14 Normal-Mapping Normalenvektor bestimmt, wie viel Licht eine Oberfläche empfängt x-, y- und z-Komponenten eines Normalenvektors in den drei Farbkanälen der Textur kodieren: Vektor (1,0,-0,5) => Farbe (255,127,63) Transformation der Normalenvektoren in Weltkoordinaten:

15

16 3.2 Realistische Wasseroberflächen Wasseroberflächen reflektieren und brechen Licht Je flacher der Einfallswinkel des Lichtstrahls auf die Oberfläche, desto höher der Reflexionsanteil Ansatz: Zwei Render-Targets (Reflexion und Brechung), ein Pixel-Shader Pixel-Shader sampelt beide Render-Targets und rechnet gewichtet nach Lichtanteil zusammen Zufällige Verschiebung der Texturkoordinaten für Welleneindruck

17 Reflexion Clipping-Ebene: Clipping-Ebene an der Wasseroberfläche Vertex-Shader übergibt Entfernung jedes Vertex zur Clipping-Ebene an Pixel-Shader Wenn Wert <0: Pixel wird verworfen (s. HLSL- Funktion clip )

18 Spiegelung: Transformationsmatrix: D3DXMatrixReflect Culling-Modus umkehren: D3DCULL_CCW auf D3DCULL_CW Spiegelung der sichtbaren Objekte und Lichtquellen Alpha-Kanal des Render-Targets: Entfernung des Pixels zur Wasseroberfläche

19

20 Brechung Entfernung zur Clipping-Ebene >0: Verwerfen Stauchung der Szene entlang der y-Achse mit Wasseroberfläche als Zentrum Auch alle Lichtquellen stauchen Alpha-Kanal: Entfernung zur Oberfläche Trübheitseffekt mit Nebel; Nebelstärke abhängig von der Teilstrecke Wasseroberfläche-Pixel

21 Zusammenfügen der Szenen Wasseroberfläche aus zwei Dreiecken Pixel-Shader berechnet Winkel zwischen Normalenvektor und Verbindungsvektor Kamera- Pixel Sampeln der Render-Targets mit vPos. Welleneindruck durch Verschiebung der Koordinaten anhand einer Normal-Map

22

23 Alpha-Kanal des Pixels als Faktor für Verschiebung durch die Wellen Reflektierte und gerenderte Szene mit leicht vergrößertem FoV rendern zur Vermeidung von Fehlern am Rand Glitzern auf Wasseroberfläche durch Specular Highlighting mit hoher Glanzkraft

24 Weiterführende Infos zu Shadern im DirectX-SDK, auf msdn.microsoft.com oder in der DirectX- Dokumentation Vielen Dank für die Aufmerksamkeit!


Herunterladen ppt "Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken."

Ähnliche Präsentationen


Google-Anzeigen