Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization OpenGL Shading Language.

Ähnliche Präsentationen


Präsentation zum Thema: "Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization OpenGL Shading Language."—  Präsentation transkript:

1 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization OpenGL Shading Language

2 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Inhalt  Einführung  Was ist eine Shading Language?  Kurze Geschichte der Shading Languages  Wozu sind Shaders gut?  OpenGL und die Programmierbare Pipeline  Die OpenGL Architektur  Der Vertex- und der Fragment-Prozessor  Die OpenGL Shading Language  Overview und Basis der Sprache  Flow control und Einbindung in OpenGL  GPGPU

3 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Was ist eine „Shading Language“?  Programmiersprache, die für die entwicklung von „Shaders“ geeignet ist  Shaders sind Programme, die auf dem Vertex- oder Fragment-Prozessor durchgeführt werden

4 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Shading Languages sind nichts Neues!  Renderman Shading Language, Pixar 1988: Star Wars Episode 1, The Lord of the Rings...  OpenGL Shader (ISL), SGI  HLSL, Microsoft  Cg, NVIDIA

5 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Shading Languages sind nichts neues?  Für Echtzeit-Graphik wurden bis vor kurzem ventor-spezifische Assembler benutzt  Große Kompatibilitätsprobleme

6 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Wozu brauchen wir Shaders?  Änderungen in Computer Hardware: „Fixed Functionality“ wird in komplexeren Bereichen durch Programmierbarkeit ersetzt.  Größere Freiheit für Programmierer: API Begrenzungen werden eliminiert (z.B. Area Lights in OpenGL).  Bessere effekte sind dadurch erzielbar:

7 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Wozu brauchen wir Shaders?

8 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Die OpenGL Architektur

9 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Die OpenGL Architektur  Bis vor kurzem bestand OpenGL nur aus standard Operationen.  Basis-Operationen der Pipeline und ihre Reihenfolge konnten nicht geändert werden.  Standartisierte Funktionalität bei den per Vertex und per Fragment Operationen durch Programmierbarkeit ersetzt! (Vertex- und Fragment- Prozessoren.

10 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Der Vertex-Prozessor

11 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Der Vertex-Prozessor  Vertex Transformation  Normale Transformation und Normalisation  Texturen-Koordinaten Generation  Texturen-Koordinaten Transformation  Lighting  Material- und Farbe-Application

12 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Der Fragment-Prozessor

13 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Der Fragment-Prozessor  Operationen auf interpolierten Werten  Texture Access  Texture Application  Fog  Colour Sum

14 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Ziele  Gleiche Sprache für Vertex- und Fragment- Shaders  Speziell für OpenGL entwickelt  Lange Lebensdauer ist erwünscht  Leicht zu benutzen und zu kompilieren  Höhere Ebenen von paralleler Verarbeitung erlaubt  Zukunftige Hardware Fähigkeiten werden unterstützt

15 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization GLSL Overview  C/C++ Basis, von Renderman SL auch beeinflusst  Wichtige Erweiterungen  Nicht alle C Features unterstützt

16 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization C als Basis  void main() {...} ist das Entry-Point für einen Set von Shaders (Vertex- und Fragment-Shaders)  Konstanten, Identifiers, Operatoren, Expressions, Statements wie in C  Benutzer-definierte Structures ähnlich zu C  Preprocessor

17 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Wichtige Erweiterungen Wichtige Erweiterungen  Matrizen und Vektoren sind Basis-Typen  Noch ein Basis-Typ: sampler  Qualifiers für Input- und Output- Management: attribute, uniform, varying, in, out, inout  Kommunikation mit OpenGL durch „gl_“ Variablen (gl_ModelViewMatrix, gl_Lightsource[i])

18 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Wichtige Erweiterungen  vec2 (2 floats Vektor), vec3 (3 floats Vektor), vec4 (4 floats Vektor)  ivec2 -> (2 Integer)..., bvec2 -> (2 Booleans)...  mat2 (2x2 float Matrix)....  Zugriff auf Vektoren-Komponenten durch die Sets: (.r,.g,.b,.a) -> (Farbe), (.x,.y,.z,.w) -> (Position),(.s,.t,.p,.q) -> (Texture Koordinate)  Zugriff auf Matrizen-Spalten wie in Arrays (Jede Spalte ist ein Vektor!).

19 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Wichtige Erweiterungen  Samplers werden benutzt um Informationen über Texture Look-ups zu speichern  Shaders können Samplers nicht initialisieren. Die letzteren werden den Shaders nur durch uniform Variablen überliefert werden  sampler1D->accesses ein 1D Texture sampler2D->accesses ein 2D Texture sampler3D->accesses ein 3D Texture samplerCube- >accesses ein cube-mapped Texture sampler1DShadow ->accesses ein 1D Texture mit Vergleich sampler2DShadow->accesses ein 2D Texture mit Vergleich

20 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Wichtige Erweiterungen  uniform Variablen sind read-only und für jeden Shader zugänglich  attribute Variablen die von der Anwendung für jeden Vertex dem Vertex Shader überliefert werden  varying Variablen werden benutzt, um Informationen aus dem Vertex- dem Fragment-Shader zu übergeben

21 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Unterschiede zu C  Keine automatische Typen-Konvertion  Keine Pointers (Memory Aliasing)  Keine Characters, Strings, usw.  Keine bit-wise Operationen  Keine Rekursion (Funktionen Aufruf wie in C++)  CALL BY VALUE-RETURN

22 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Built-in Funktionen  Viele wichtige Funktionen werden dem Programmierer zur Verfügung gestellt (z.B. trigonometrische, exponentiele, für texture access uva.)  Alle bereitgestellte Funktionen können überschrieben werden

23 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Flow Control  Entry-Point: main  Schleifen: for, while, do-while. Auch break und continue möglich  Verzweigung: if bzw. if-else wie in C++  Nicht unterstützt: goto, switch und labels  Special: discard

24 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Einbindung in OpenGL  glCreateShader  glShaderSource  glCompileShader  glCreateProgram  glAttachObject  glLinkProgram  glUseProgram Anwendung Shader Quellcode OpenGL Treiber Comp iler Linke r Shader Object Program Object GPU

25 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization GPGPU General-Purpose computations on GPUs

26 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization GPGPU  Heutige GPUs können viel mehr als nur Graphik-Operationen  Bereiche wie Scientific Computing, Computational Geometry und sogar Datenbanksysteme profitieren davon  Arbeitet eine GPU als Koprozessor, kommt es zu einer beeindruckenden Steigerung der System-Leistung (40 Gigaflops, 35,2 GB/s für GeForce 6800 Ultra vs. 6 Gigaflops, 5,96 GB/s für P4 3GHz!!!)

27 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization GPGPU  Konventionelle Programmiersprachen sind ungeeignet  Shading Languages auch Spezielle Programmierumgembungen (z.B. BrookGPU) Spezielle Programmierumgembungen (z.B. BrookGPU)

28 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization GPGPU

29 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Quellen  OpenGL Programming Guide, ARB, Addison Wesley 2005  OpenGL Shading Language, Randi J. Rost, Addison-Wesley 2004  The OpenGL Shading Language, John Kessenich, Dave Baldwin, Randi Rost  http://www.opengl.org http://www.opengl.org

30 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Quellen  http://wwwcg.in.tum.de http://wwwcg.in.tum.de  http://www.gpgpu.org http://www.gpgpu.org  http://graphics.stanford.edu http://graphics.stanford.edu  http://www.nvidia.com http://www.nvidia.com  http://www.ati.com http://www.ati.com

31 Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Fragen?


Herunterladen ppt "Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization OpenGL Shading Language."

Ähnliche Präsentationen


Google-Anzeigen