+ All Categories
Home > Documents > Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred...

Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred...

Date post: 06-Apr-2015
Category:
Upload: seppel-moseman
View: 107 times
Download: 0 times
Share this document with a friend
24
Die Welt der Shader Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Fortgeschrittene Techniken III
Transcript
Page 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.

Die Welt der ShaderDie Welt der Shader

Universität zu KölnWS 14/15 Softwaretechnologie II (Teil 1)Prof. Dr. Manfred ThallerReferent: Lukas Kley

Fortgeschrittene Techniken III

Page 2: 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.

GliederungGliederung1. Was ist ein Shader?2. Verschiedene Shader

2.1 Vertex-Shader2.2 Pixel-Shader

3. Einsatzbeispiele3.1 Per-Pixel-Beleuchtungsmodell3.2 Realistische Wasseroberflächen

Page 3: 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.

1. Was ist ein Shader?1. Was ist ein Shader?

● Kleines Programm, das einmal pro Vertex oder Pixel aufgerufen wird

● Wird vom Grafikprozessor ausgeführt=> sehr schnell

Page 4: 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.

● Geschrieben in speziellen Shader-Assembler-Sprachen

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

Page 5: 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.

● Einsatzgebiet:Aufwändige Spezialeffekte

Fixe Rendering-Pipeline wird durch Shadereinsatz selbst definierbar

Page 6: 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.

2. Verschiedene Shader2. Verschiedene Shader2.1 Vertex-ShaderBeispiel:

Glow-Effekt:

“Hülle” mit Alpha-Blending in der Glühfarbe

Entstehung der Hülle: Jeder Vertex wird entlang seines Normalenvektors verschoben

Page 7: 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.
Page 8: 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.

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)

Page 9: 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.
Page 10: 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.

3. Einsatzbeispiele3. Einsatzbeispiele3.1 Per-Pixel Beleuchtungsmodell

Nachteile des Direct3D-Beleuchtungsmodells:

Nur auf Vertexbasis

Keine eigenen Lichtberechnungen (Normal-Mapping)

Begrenzte Anzahl von Lichtquellen

Page 11: 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.

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)

Page 12: 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.
Page 13: 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.

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

Page 14: 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.

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:

Page 15: 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.
Page 16: 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.

3.2 Realistische WasseroberflächenWasseroberflä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

Page 17: 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.

ReflexionClipping-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)

Page 18: 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.

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

Page 19: 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.
Page 20: 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.

BrechungEntfernung 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

Page 21: 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.

Zusammenfügen der SzenenWasseroberflä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

Page 22: 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.
Page 23: 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.

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

Page 24: 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.

Weiterführende Infos zu Shadern im DirectX-SDK, auf msdn.microsoft.com oder in der DirectX-Dokumentation

Vielen Dank für die Aufmerksamkeit!


Recommended