Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Antje Henschel Geändert vor über 9 Jahren
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?
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.