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

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

Computer Graphics Shader
ALP II: Objektorientierte Programmierung Sommersemester 2006
Constantin Timm Informatik 12 TU Dortmund
Agenda Sitzung 2 für den Programmaufbau
10. Grundlagen imperativer Programmiersprachen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Objektorientierung mit VBA
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
Cassey - Common Answer Set Evaluation sYstem Jean Gressmann Benjamin Kaufmann Robert Lenk.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
OGRE Object-Oriented Graphics Rendering Engine Szenen-orientierte, flexible 3D Engine in C++ Hardware-beschleunigte 3D Grafiken Unterstützt Direct3D und.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Java3d „Licht und Material“
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Introducing the .NET Framework
Einführung in C EDV1 - 03C-Einführung.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Einführung in C EDV1 - 04C-Einführung.
Einführung in die Programmierung Datensammlung
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Computergraphik mit OpenGL Einführung. Bilder Objekt existiert im Raum unabhängig vom Betrachter Objekte sind beschrieben durch die Position verschiedener.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
GPU Computing Burim Kameri Fachhochschule Hannover (FHH)
Einführung in die Programmiersprache C 4
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Signal-Prozessoren DSV1, 2009, Hhrt, 1 Mikro-Prozessor Von Neumann-Architektur Daten und Programmcode im gleichen Speicher => Sequenzieller Zugriff auf.
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Computerorientierte Physik VORLESUNG und Übungen Vorlesung Zeit: Mo., – Uhr Ort: Hörsaal 5.01, Institut für Physik, Universitätsplatz 5, A-8010.
Dynamische Datentypen
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
EPROG Tutorium #3 Philipp Effenberger
Einführung in PHP.
Einführung in PHP 5.
MODULA-2.
Datentypen: integer, char, string, boolean
Agenda für heute, 28. April, 2005 Strukturierte VariablenStrukturierte Variablen Arrays.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
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.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
3D Graphics APIs: OpenGL & Fixed Function Pipeline
Die Renderpipeline.
2 Datenabstraktion Geheimnisprinzip:
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Programmiersprache PASCAL
Einführung. Ziel der Veranstaltung  Vermittlung von Grundkenntnissen in C++  Solide Basis für anschließende Weiterentwicklung  Fähigkeit, kleine Programme.
Marcus Schaber 1 /33 Seminar - Paralleles Rechnen auf Grafikkarten Seminarvortrag: Übersicht über die Programmierung von Grafikkarten Marcus.
Blowfish mit CUDA Dominik Oepen Inhalt ● Blowfish Grundlagen ● Implementierungsdetails ● Performance ● Fazit.
UNIVERSITY OF APPLIED SCIENCES Brückenkurs Programmieren Einführung in die IT für Social Media Systems.
Vom HW-Automaten zum Prozessor
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
Schleifen Datenfelder (Arrays) Verzweigungen
The Programming Language Pascal
 Präsentation transkript:

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

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

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

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

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

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:

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

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

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.

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

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

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

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

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

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

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

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

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!).

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

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

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

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

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

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

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

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

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)

Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization GPGPU

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 

Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization Quellen     

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