Advanced Computer Graphics 4. Übung

Größe: px
Ab Seite anzeigen:

Download "Advanced Computer Graphics 4. Übung"

Transkript

1 Advanced Computer Graphics 4. Übung M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 1

2 Gliederung 1. OpenGL Shader Programme 2. Erzeugen, Kompilieren und Linken von OpenGL Shadern 3. Vertex Shader 4. Fragment Shader 5. Spezielle Datentypen, Variablen und Konstrukte in GLSL M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 2

3 OpenGL Shader Programme OpenGL verwendet folgende logische Grafikpipeline: Vertexshader Tessellationshader Geometryshader programmierbar Framebuffer Fragmentshader Rasterisierung Nicht programmierbar Früher: spezielle Hardwareeinheiten für jede Stufe Heute: Unified Shader Einheiten für alle Stufen, logische Separation Ausgabe Ermöglichen hardwarenahe GPU Programmierung In der Übung: Konzentration auf Vertex- und Fragmentshader (Optionale Stufen Tessellation/Geometry können entfallen) Verwenden OpenGL Shader Language (GLSL) zur Programmierung M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 3

4 GLSL C++-ähnliche Syntax und atomare Datentypen (float, int, usw.) Zusätzliche Datentypen für Grafikprogrammierung und Rechenoperationen Float- und Integer-Vektortypen (vec2, vec3, vec4, ivec2, ivec3, ivec4) Matrizentypen (mat2, mat3, mat4) Mathematische Hilfsfunktionen Quadratwurzel (sqrt), Potenz (pow), Trigonometrie (sin, cos, tan, atan, usw.) Vektorgeometrie: Skalarprodukt (dot), Kreuzprodukt (cross), euklidische Vektorlänge (length), Einheitsvektorberechnung (normalize), usw. Spezifische Variablen mit Renderinfos, oder zum Übergeben von Ergebnissen an nachfolgende Stufen M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 4

5 Hardwarelimitationen von Shadern Shader verwenden lokales (in Gruppen von bspw. 32 Shader-Einheiten) SIMD-Modell Große Datenmengen parallel bearbeitbar Alle Shader einer Gruppe müssen die gleichen Befehle ausführen in einem Takt Probleme bei verzweigendem Kontrollfluss (Schleifenabbrüche, if/else Statements) Sehr hohe Fließkomma-Performanz bei Multiplikationen und Additionen ABER: Divisionen und Spezialfunktionen (Wurzel, Trigonometrie, usw.) teuer! (verwenden spezielle, deutlich geringer vorhandene Funktionseinheiten) Limitationen bei nutzbarem lokalen Speicher (im KByte Bereich) Begrenzte Anzahl an Instruktionen in einem Programm Nicht beliebig viele Variablen-, Input-, Outputdefinitionen usw. möglich Auf aktueller Hardware nicht mehr so restriktiv ABER: Kann Hardwarebelegung beeinflussen (Shader-Occupancy) Anzahl gleichzeitig laufender Threads M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 5

6 Gliederung 1. OpenGL Shader Programme 2. Erzeugen, Kompilieren und Linken von OpenGL Shadern 3. Vertex Shader 4. Fragment Shader 5. Spezielle Datentypen, Variablen und Konstrukte in GLSL M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 6

7 Erzeugung und Kompilierung von OpenGL Shader Stufen Einzelne Shaderobjekte müssen für die jeweilige Shaderstufe angelegt werden: GLuint vertexshader = glcreateshader(gl_vertex_shader); GLuint fragmentshader = glcreateshader(gl_fragment_shader); Anschließend muss der GLSL-Quelltext als String zugewiesen werden: glshadersource(gluint shaderid, GLsizei count, const GLchar *const *sources, const GLint *length); shaderid count sources length ID des OpenGL Shaderobjektes Anzahl der Strings ( mehrere getrennte Quelltexte können zugewiesen werden) Array von Quelltext Strings der Länge count Array, welches die Längen der einzelnen Quelltext Strings enthält (kann NULL sein) Die einzelnen Shaderstufen müssen kompiliert werden: glcompileshader(gluint shaderid); GLSL wird nicht mit der Anwendung kompiliert, sondern zur Laufzeit durch OpenGL M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 7

8 Erzeugung von OpenGL Shader Programmen Verknüpfung der einzelnen Shaderstufen zu einem Program: GLuint programid = glcreateprogram(); glattachshader(gluint programid, GLuint shaderid); Zum Abschluss ist das Programm zu linken: gllinkprogram(gluint programid); Drawcalls verwenden das jeweils zuletzt gebundene Programm zum Zeichnen: gluseprogram(gluint programid); Unbinds erfolgen wieder mit ID 0 (Analog Buffer/Vertex Arrays) VORSICHT: Beim Kompilieren und/oder Linken können Fehler auftreten, was separat abgefragt werden muss (Hausaufgabe) M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 8

9 Gliederung 1. OpenGL Shader Programme 2. Erzeugen, Kompilieren und Linken von OpenGL Shadern 3. Vertex Shader 4. Fragment Shader 5. Spezielle Datentypen, Variablen und Konstrukte in GLSL M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 9

10 Vertex Shader Erste Shaderstufe, erhält Vertices als Input Jeder Aufruf eines Vertex-Shaders bearbeitet ein Vertex (einen Satz aus vorher definierten Vertex-Attributen) Generell für Vertex-Transformationen/pro-Vertex-Berechnungen (bspw. Gouraud- Shading) Bestimmt die Bildraumposition welche an den Rasterisierer weitergegeben wird vorgegebene Variable gl_position muss immer gesetzt werden, sonst Fehler beim Kompilieren/Linken Vertices werden vor Rasterstufe verworfen oder ersetzt, wenn gl_position außerhalb des gültigen Bildraums M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 10

11 Vertex Shader Vertex-Shader erhält als erste Stufe je einen Satz vorher definierter Vertex-Attribute Müssen vorher durch glvertexattribpointer festgelegt werden Entsprechende Puffer müssen gebunden sein Foliensatz von Übung 1 Bevor das Programm gelinkt wird, muss OpenGL mitgeteilt werden, welche Inputs im Vertex-Shader welchem Attributsindex entsprechen: glbindattriblocation (GLuint programid, GLuint index, const GLchar *name); Input Typen müssen nicht den tatsächlichen Attributtypen entsprechen Bspw. kann ein 2-Komponenten-Fließkomma-Attribut als vec4 im Vertexshader deklariert werden die 3. und 4. Komponente ist nicht definiert aber die ersten beiden sind korrekt Datentypen werden beim Lesen konvertiert (bspw. Integer->float) Fehleranfällig Empfehlung: Selbe Typen wie die tatsächlichen Vertexattribute benutzen M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 11

12 Vertex Shader Inputs Attribut auf Index 0 mit 3 Komponenten, Fließkomma glvertexattribpointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(0); Vertex Attribut C++ Vertex Shader Bindings glbindattriblocation(program, 0, example_position ); in vec3 example_position; Vertex Shader Input GLSL M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 12

13 Vertex Shader Inputs Attribut auf Index 5 mit 1 Komponente, Integer glvertexattribpointer(5, 1, GL_INT, GL_FALSE, 0, 0); glenablevertexattribarray(5); Vertex Attribut C++ Vertex Shader Bindings glbindattriblocation(program, 5, example_integer ); in int example_integer; Vertex Shader Input GLSL M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 13

14 Vertex Shader Inputs Attribut auf Index 4 mit 2 Komponenten, Fließkomma glvertexattribpointer(4, 2, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(4); Vertex Attribut C++ Vertex Shader Input GLSL layout(location = 4) in vec2 example_vec2; Neuere Semantik (ab GLSL 3.30, OpenGL 3.30) Erlaubt Weglassen des 2. Schritts und freie Namenswahl im Shader M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 14

15 Vertex Shader - Beispiel #version 150 uniform mat4 projection; in vec3 vertex_position; out vec3 worldpos; Versionsnummer (Konfiguration des Shadercompilers) Uniform vom Typ 4x4-Floating-Point Matrix In allen Shaderinstanzen gleich Input aus Vertex-Attribut (Index muss mittels glbindattriblocation gesetzt werden) Output zur nächsten Shaderstufe void main() { } worldpos = position; gl_position = projection * vec4(position, 1.f); Eintrittspunkt des Shaderprogramms Setzen der eigenen Ausgabevariablen Eingebaute GLSL-Variable gl_position muss gesetzt werden M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 15

16 Vertex Shader - Beispiel (2. Möglichkeit) #version 330 uniform mat4 projection; layout(location = 0) in vec3 position; out vec3 worldpos; Versionsnummer (Konfiguration des Shadercompilers) Uniform vom Typ 4x4-Floating-Point Matrix In allen Shaderinstanzen gleich Input aus Vertex-Attribut location (Index bei glvertexattribpointer) Output zur nächsten Shaderstufe void main() { } worldpos = position; gl_position = projection * vec4(position, 1.f); Eintrittspunkt des Shaderprogramms Setzen der eigenen Ausgabevariablen Eingebaute GLSL-Variable gl_position muss für den Rasterisierer gesetzt werden! M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 16

17 Gliederung 1. OpenGL Shader Programme 2. Erzeugen, Kompilieren und Linken von OpenGL Shadern 3. Vertex Shader 4. Fragment Shader 5. Spezielle Datentypen, Variablen und Konstrukte in GLSL M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 17

18 Fragment Shader Letzte Shaderstufe, erhält Pixelkandidaten (Fragmente) als Input Jeder Aufruf eines Fragment-Shaders bearbeitet ein Fragment (ein rasterisiertes Pixel und zugehörige interpolierte Attribute aus vorherigen Stufen) Generell für Pixelmanipulationen (Farbfilter)/pro-Pixel-Operationen (Phong-Shading) Bestimmt Pixelwerte der Outputs (Farben, ggf. Tiefe) Hat verschiedene Kontrollmöglichkeiten wie Verwerfen von Pixelkandidaten Veränderung der Pixeltiefe Kann nicht die finale xy-pixelposition verändern M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 18

19 Fragment Shader Schreibt in für das Programm definierte Puffer Framebuffer Müssen vor dem Linken durch glbindfragdatalocation festgelegt werden Entsprechende Puffer müssen im aktuellen Framebuffer vorhanden sein Tiefenpuffer hat speziellen, nicht frei definierbaren Zugriff Aktuell kennen wir nur den Fenster-Framebuffer 1 Farbpuffer und 1 Tiefenpuffer Aufruf vor dem Linken für Output-Konfiguration: glbindfragdatalocation(gluint programid, GLuint color, const GLchar *name); Output Typen müssen nicht den tatsächlichen Puffer-Datentypen entsprechen Bspw. kann ein RGB-Puffer als vec4 im Fragmentshader definiert werden 4. Komponente wird beim Schreiben ignoriert Datentypen werden beim Schreiben konvertiert Fehleranfällig Empfehlung: Selben Datentyp wie im Puffer verwenden M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 19

20 Fragment Shader Outputs Outputs in Fensterpuffer GLenum buffs[] = { GL_BACK_LEFT, // Index 0 }; gldrawbuffers(1, buffs); Fragment Shader Bindings Draw Outputs C++ glbindfragdatalocation(program, 0, window_color ); out vec4 window_color; Fragment Shader Input GLSL In den meisten Implementierungen ist der Fensterpuffer automatisch auf Index 0 Konfiguration kann weggelassen werden, sofern Shader in Fensterpuffer schreibt M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 20

21 Fragment Shader Outputs Outputs in Puffer 0, 2 und 5 GLenum buffs[] = { GL_COLOR_ATTACHMENT0, // Index 0 GL_COLOR_ATTACHMENT2, // Index 1 GL_NONE, // Index 2 GL_COLOR_ATTACHMENT5 // index 3 }; gldrawbuffers(4, buffs); Fragment Shader Bindings out vec3 color0; out vec4 color2; out int color5; Draw Outputs M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 21 C++ glbindfragdatalocation(program, 0, color0 ); glbindfragdatalocation(program, 1, color2 ); glbindfragdatalocation(program, 3, color5 ); Fragment Shader Input GLSL

22 GLSL-Beispiel: Fragment Shader #version 150 uniform vec3 color; in vec3 worldpos; out vec4 finalcolor; void main() { finalcolor = vec4(color, 1.f); } Versionsnummer (Konfiguration des Shadercompilers) Uniform vom Typ 3-Komponenten-Floating-Point-Vektor In allen Shaderinstanzen gleich Input aus der letzen Shaderstufe (Rasterisierer linear interpolierte Werte aus den Vertex Attributen) Ausgabe des Fragment Shaders (Index sollte mittels glbindfragdatalocation gesetzt werden) Eintrittspunkt des Shaderprogramms Setzen der Ausgabe M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 22

23 GLSL-Beispiel: Fragment Shader (2. Möglichkeit) #version 330 uniform vec3 color; in vec3 worldpos; layout(location = 0) out vec4 finalcolor; void main() { finalcolor = vec4(color, 1.f); } Versionsnummer (Konfiguration des Shadercompilers) Uniform vom Typ 3-Komponenten-Floating-Point-Vektor In allen Shaderinstanzen gleich Input aus der letzen Shaderstufe (Rasterisierer linear interpolierte Werte aus den Vertex Attributen) Ausgabe des Fragment Shaders (Letzte Stufe Ausgabe wird in Bildpuffer mit Index location geschrieben) Eintrittspunkt des Shaderprogramms Setzen der Ausgabe M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 23

24 Gliederung 1. OpenGL Shader Programme 2. Erzeugen, Kompilieren und Linken von OpenGL Shadern 3. Vertex Shader 4. Fragment Shader 5. Spezielle Datentypen, Variablen und Konstrukte in GLSL M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 24

25 Spezielle Datentypen in GLSL uniform in out Quasi-Konstanten: Können im CPU-Code durch gluniform für ein Programmobjekt gesetzt werden und sind garantiert für einen Drawcall in jeder Shaderinstanz gleich Inputs von der vorhergehenden Shaderstufe (Vertex-Attribute bei Vertex-Shader) Variablennamen müssen identisch sein zwischen den Stufen. Outputs an die nächste Shaderstufe (Bildpuffer-Ausgabe bei Fragment-Shader) Layout Qualifier layout(): Ermöglichen spezielle Konfiguration von Variablen Verwenden in der Übung alte Semantik für Inputs und Outputs, layout(location = i) kann wahlweise bei vorhandener Unterstützung verwendet werden M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 25

26 Wichtige Variablen und Befehle in GLSL gl_position Teilt dem Rasterisierer die zu verwendende Vertex-Position mit (4- dimensionale homogene Bildraumkoordinate). Muss im Vertexshader gesetzt werden! gl_fragcoord gl_fragcolor gl_fragdepth discard 3-Komponenten-Vektor mit Fragment-Viewport-xy-Koordinaten im Bereich [(vvvv xx, vvvv yy ); (vvvv xx + vvvv ww, vvvv yy + vvvv h )] (glviewport(vvvv xx, vvvv yy, vvvv ww, vvvv h )) und z- Wert im Bereich [0;1] Ältere Möglichkeit zum Setzen der Fragment-Ausgabe. Setzen überschreibt die aktuelle Fragmenttiefe (beeinflusst Tiefentest, im Bereich [0;1]). Bricht einen Fragmentshader sofort ab und verwirft das bearbeitete Fragment M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 26

27 Swizzle Masks Zugriffe auf einzelne Vektorkomponenten kann über [ ]-Operator erfolgen GLSL enthält Komfortzugriffe durch swizzling : vec3 testvec = vec3(1, 2, 3); float x = testvec.x; float y = testvec.y; float z = testvec.z; // x == 1, y == 2, z == 3 vec3 copyvec = testvec.zyx; // copyvec == (3, 2, 1) vec4 copyvec2 = testvec.zxxy; // copyvec2 == (3, 1, 1, 2) testvec.zxy = copyvec2.wwx; // testvec == (2, 3, 2) Neben xyzw sind rgba und stpq valide Swizzle Masks ABER: Mischformen sind laut GLSL-Standard nicht valide, d.h. bspw. xgpw sollte nicht kompilieren (auf meiner NVIDIA geht s trotzdem ;)) M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 27

3D Programmierpraktikum: OpenGL Shading Language (GLSL)

3D Programmierpraktikum: OpenGL Shading Language (GLSL) 3D Programmierpraktikum: OpenGL Shading Language (GLSL) Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 13. Juli 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Advanced Computer Graphics 1. Übung

Advanced Computer Graphics 1. Übung Advanced Computer Graphics 1. Übung M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 1 1 Gliederung 1. Erzeugen, Binden und Löschen von OpenGL Objekten 2. Geometrie: Vertex Arrays, Buffers und Attributes

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik GLSL Agenda Rendering Pipeline Prozessoren: Vertex Prozessor Fragment Prozessor OpenGL Setup für GLSL Shader-Grundlagen Beispiele Die Rendering-Pipeline

Mehr

GL ShadingLanguage(GLSL)

GL ShadingLanguage(GLSL) Was ist GLSL C/Java ähnliche Hochsprache zur Erstellung von GPU-basierter Software (Shader) An die Open Graphics Library (OpenGL) gebunden Darstellung komplexer 2D- und 3D-Szenen auf Basis von Echtzeitberechnungen

Mehr

Computergrafik SS 2010 Henning Wenke. Kapitel 21: OpenGL 3.1 (Fortsetzung)

Computergrafik SS 2010 Henning Wenke. Kapitel 21: OpenGL 3.1 (Fortsetzung) Computergrafik SS 2010 Henning Wenke Kapitel 21: OpenGL 3.1 (Fortsetzung) 1 OpenGL Aufgaben der GL-Befehle Konfigurieren der Graphics Pipeline Datenübergabe an Server Steuern des Datenflusses Java OpenGL

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche

Mehr

Computer Graphics Shader

Computer Graphics Shader Computer Graphics Shader Sven Janusch Inhalt Fixed Function Pipeline Programmable Pipeline Implementierung Applikation Beispiel Sven Janusch 2 Fixed Function Pipeline T&L Pipeline (Transformation and Lighting)

Mehr

Einführung in GLSL - OpenGL Shading Language. Athanasios Karamalis

Einführung in GLSL - OpenGL Shading Language. Athanasios Karamalis Einführung in GLSL - OpenGL Shading Language Athanasios Karamalis Allgemein zur Shader-Programmierung Vor 2001 konnte nur die sogenannte Fixed Functionality der Graphik API und Graphikkarte verwendet werden

Mehr

Geometry Shader. Ausarbeitung im Rahmen des Seminars Echtzeit Rendering" Von Sebastian Jackel Franz Peschel. Geometry Shader 1

Geometry Shader. Ausarbeitung im Rahmen des Seminars Echtzeit Rendering Von Sebastian Jackel Franz Peschel. Geometry Shader 1 Geometry Shader Ausarbeitung im Rahmen des Seminars Echtzeit Rendering" Von Sebastian Jackel Franz Peschel Geometry Shader 1 Inhalt I Einführung II Facts Renderpipeline III Funktionsweise Geometry Shader

Mehr

Computergrafik SS 2010 Henning Wenke. Kapitel 21: OpenGL 3.1

Computergrafik SS 2010 Henning Wenke. Kapitel 21: OpenGL 3.1 Computergrafik SS 2010 Henning Wenke Kapitel 21: OpenGL 3.1 1 Einordnung 2 Über OpenGL API für Rastergrafik Prozedural Hardwarenah Plattform-, Betriebssystem- und Sprachunabhängig Spezifikationen variieren

Mehr

Computergrafik II. OpenGL Einführung

Computergrafik II. OpenGL Einführung Computergrafik II OpenGL Einführung OpenGL Rein prozedurales Interface Keine direkten Klassen/Objekte Verwaltung von OpenGL-Strukturen mittels Identifier Explizites funktionales Erzeugen/Löschen von Objekten

Mehr

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell

Mehr

Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-08

Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-08 Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-08 Noch Kapitel IV: OpenGL Zielsetzungen Hardwarenah aber unabhängig Verschiedene Anwendungsbereiche Wissenschaft, Visualisierung & Entwicklung

Mehr

Shader. Computer Graphics: Shader

Shader. Computer Graphics: Shader Computer Graphics Computer Graphics Shader Computer Graphics: Shader Inhalt Pipeline Memory Resources Input-Assembler Vertex-Shader Geometry-Shader & Stream-Output Rasterizer Pixel-Shader Output-Merger

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

Mehr

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni 1 Ablauf GPU Programm Vertex und Fragment Shader 2 3 4 5 Image Processing 6 Ablauf GPU Programm Ablauf GPU Programm Vertex und Fragment

Mehr

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme

Mehr

Computergrafik SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc.

Computergrafik SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc. Computergrafik SS 2012 Probeklausur 1 06.07.2012 Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc. Aufgabe 1 (19 Punkte) Beantworten Sie die folgenden Fragen prägnant.

Mehr

Einführung in die Programmierung II. 5. Zeiger

Einführung in die Programmierung II. 5. Zeiger Einführung in die Programmierung II 5. Zeiger Thomas Huckle, Stefan Zimmer 16. 5. 2007-1- Bezüge als Objekte Bisher kennen wir als Bezüge (Lvalues) nur Variablennamen Jetzt kommt eine neue Sorte dazu,

Mehr

Übungsblatt 10: Klausurvorbereitung

Übungsblatt 10: Klausurvorbereitung Übungsblatt 10: Klausurvorbereitung Abgabe: Dieses spezielle Übungsblatt hat keine Abgabefrist und wird auch nicht korrigiert. Die Lösung gibt es wie immer auf der Homepage der Vorlesung oder in den Übungen

Mehr

(5) GPU Programmierung

(5) GPU Programmierung (5) GPU Programmierung Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich, Thorsten Grosch KOBLENZ LANDAU Fantastische Effekte in Echtzeit... Real-Time Fur Over Arbitrary Surfaces, Lengyel

Mehr

GPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1

GPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1 GPGPU Basiskonzepte von Marc Kirchhoff 29.05.2006 GPGPU Basiskonzepte 1 Inhalt Warum GPGPU Streams, Kernels und Prozessoren Datenstrukturen Algorithmen 29.05.2006 GPGPU Basiskonzepte 2 Warum GPGPU? Performance

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)

Mehr

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht Einleitung Architektur Programmierung 2 Einleitung Computations on GPU 2003 Probleme Hohe Kenntnisse der Grafikprogrammierung nötig Unterschiedliche

Mehr

3D Programmierpraktikum: Szenegraphen und Texturierung

3D Programmierpraktikum: Szenegraphen und Texturierung 3D Programmierpraktikum: Szenegraphen und Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 1. Juni 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum SS2006

Mehr

Numerik und Rechnen. Martin Heide & Dominik Holler. 12. Juni 2006

Numerik und Rechnen. Martin Heide & Dominik Holler. 12. Juni 2006 12. Juni 2006 Bibliothek für Lineare Algebra GPGPU-Programming: Low-Level High-Level Bibliothek Bibliothek für Lineare Algebra Gliederung 1 Bibliothek für Lineare Algebra 2 Skalare Bibliothek für Lineare

Mehr

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15 Variablen CoMa-Übung VIII TU Berlin 4.12.2013 CoMa-Übung VIII (TU Berlin) Variablen 4.12.2013 1 / 15 Themen der Übung 1 Typanpassungen 2 Operatoren 3 Variablen-Gültigkeit CoMa-Übung VIII (TU Berlin) Variablen

Mehr

Übersicht 1. Anzeigegeräte 2. Framebuffer 3. Grundlagen 3D Computergrafik 4. Polygongrafik, Z-Buffer 5. Texture-Mapping/Shading 6. GPU 7. Programmierbare Shader 1 LCD/TFT Technik Rotation der Licht-Polarisationsebene

Mehr

Praktikum Computergrafik

Praktikum Computergrafik Praktikum Computergrafik Steven Schlegel Abteilung für Bild- und Signalverarbeitung Betreuer: Steven Schlegel (schlegel@informatik.uni-leipzig.de) Einführung in OpenGL und GLSL OpenGL OpenGL (Open Graphics

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-04 Kapitel VIII: Per Primitive Operations Primitive I 3 Primitive II Elementare grafische Grundform Besteht in OpenGL aus Folge von 1-3 Vertices

Mehr

Arrays. Einleitung. Deklarieren einer Array Variablen

Arrays. Einleitung. Deklarieren einer Array Variablen Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt

Mehr

9. Vektoren. (auch Felder/array)

9. Vektoren. (auch Felder/array) 9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die

Mehr

Die Shading Language

Die Shading Language Seminar Analyse, Planung und Konstruktion computergraphischer Systeme Die Shading Language Stephan Brumme 7. Januar 2004 Lehrstuhl für Computergraphische Systeme 7. Januar 2004 Stephan Brumme: Die OpenGL

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-25 Kapitel XV: Parallele Algorithmen mit OpenCL 15.1 Parallele Programmierung Quellen: V.a. Wikipedia. Leistungsdaten unter Vorbehalt. Bitte

Mehr

Programmierung für Mathematik HS11

Programmierung für Mathematik HS11 software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren

Mehr

C for Graphics Benjamin Rommel Seminar 'Paralleles Rechnen auf Grafikkarten' Sommersemester 2009 Betreuer: Julian M.

C for Graphics Benjamin Rommel Seminar 'Paralleles Rechnen auf Grafikkarten' Sommersemester 2009 Betreuer: Julian M. C for Graphics Benjamin Rommel 12.05.2009 Seminar 'Paralleles Rechnen auf Grafikkarten' Sommersemester 2009 Betreuer: Julian M. Kunkel 'C for Graphics', Benjamin Rommel, SS 2009 Inhaltsübersicht Gliederung

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Grafikkarten-Architektur

Grafikkarten-Architektur > Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur

Mehr

MATLAB-Tutorium WS18 Nathalie Marion Frieß

MATLAB-Tutorium WS18 Nathalie Marion Frieß MATLAB-Tutorium WS18 Nathalie Marion Frieß nathalie.friess@uni-graz.at Zugang UNI-IT Arbeitsplätzen lokal vorinstalliert Von zu Hause: Zugriff über Terminalserver Installation des Citrix Receiver Clients:

Mehr

Tag 4 Repetitorium Informatik (Java)

Tag 4 Repetitorium Informatik (Java) Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!

Mehr

Advanced Computer Graphics Erweiterung zur 6. Übung

Advanced Computer Graphics Erweiterung zur 6. Übung Advanced Computer Graphics Erweiterung zur 6. Übung M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 6 Model-View-Projection Transformationen Model-View-Projection Gegeben Gesucht y Modell Kamera

Mehr

Erste Java-Programme (Arrays und Schleifen)

Erste Java-Programme (Arrays und Schleifen) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Arrays und Schleifen) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5 Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in

Mehr

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch Wiederholung Vorlesung Thorsten Grosch Klausur 2 Zeitstunden (26.7., 8:30 10:30 Uhr, G29/307) Keine Hilfsmittel Kein Bleistift / Rotstift verwenden 3 Aufgabentypen Wissensfragen zur Vorlesung (ca. 1/3)

Mehr

Anregungen zu Übung 2

Anregungen zu Übung 2 Anregungen zu Übung 2 Allgemeine Informatik II - SS 2007 Was sind Arrays und wie kann man sie verwenden? Ein Array ist ein spezieller Datentyp, der mehrere Werte zu einer Einheit zusammenfasst. Er ist

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

Quellen (2) Motivation (1) Quellen (1)

Quellen (2) Motivation (1) Quellen (1) Vertex- und Pixelshader für Echtzeit- Rendering von Glas und Wasser Seminar Physically-based methods for 3D games and medical applications Wintersemester 02/03 Thomas Rusterholz Quellen (2) MPI (Max-Planck-Institut)

Mehr

Compute Unified Device Architecture CUDA

Compute Unified Device Architecture CUDA Compute Unified Device Architecture 06. Februar 2012 1 / 13 Gliederung 2 / 13 : Compute Unified Device Architecture entwickelt von Nvidia Corporation spezifiziert Software- und Hardwareeigenschaften Ziel:

Mehr

HTBLuVA Innsbruck DIPLOMARBEIT. 3D Grafik (Game) Tutorial mit OpenGL R Trainings-LiveCD. Teil 2: Tutorial

HTBLuVA Innsbruck DIPLOMARBEIT. 3D Grafik (Game) Tutorial mit OpenGL R Trainings-LiveCD. Teil 2: Tutorial HTBLuVA Innsbruck Höhere Lehranstalt für Elektronik Ausbildungsschwerpunkt Technische Informatik DIPLOMARBEIT 3D Grafik (Game) Tutorial mit OpenGL R Trainings-LiveCD Teil 2: Tutorial Ausgeführt im Schuljahr

Mehr

Ulrich Stein

Ulrich Stein Von C nach MATLAB Einführung in MATLAB für Personen mit C-Kenntnissen Datentypen ähnlich in C und MATLAB, dort aber automatische Typzuweisung möglich double a = 2; Arrays a = double( 2 ); aber auch a =

Mehr

Grundlagen der Informatik 6. Arrays I

Grundlagen der Informatik 6. Arrays I 6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Szenegraphen, Texturen und Displaylisten. Agenda Organisatorisches Das Konzept der Szenegraphen Grundlagen Beispiel eines Szenegraphen Transformationen

Mehr

Thema: Hardware-Shader

Thema: Hardware-Shader Seminar Grafikprogrammierung Thema: Hardware-Shader Christian Bauer 03.07.08 Überblick Entwicklung Die Shader im Detail Programmierung GPGPU Zusammenfassung & Ausblick 1/19 Entwicklung (1) Früher: Berechnung

Mehr

Zeiger. Zeiger ist eine Variable deren Wert eine Adresse enthält. Zeiger werden im Programm definiert. int *pmyinteger; Type *PointerName ;

Zeiger. Zeiger ist eine Variable deren Wert eine Adresse enthält. Zeiger werden im Programm definiert. int *pmyinteger; Type *PointerName ; Zeiger & Variable ist ein Speicherort im C++ Programm und hat eine Adresse. Variable - Zugriff auf Variable und/oder Adresse * & Operator liefert die Adresse einer Variablen im Speicher Adresse int myvariable

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung

Mehr

Institut für Informatik und Angewandte Kognitionswissenschaften

Institut für Informatik und Angewandte Kognitionswissenschaften Grundlegende Programmiertechniken (»Programmierung«), WS 2007/2008 Übungsblatt 5 Präsenzaufgaben: 11, 12, 13 Hausaufgabe: 14 Aufgabe 11 STRING- UND OBJEKT-VERGLEICH String s1 = new String("Test String");

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

WiMa-Praktikum 1. Woche 8

WiMa-Praktikum 1. Woche 8 WiMa-Praktikum 1 Universität Ulm, Sommersemester 2017 Woche 8 Lernziele In diesem Praktikum sollen Sie üben und lernen: Besonderheiten der For-Schleife in Matlab Wiederholung des Umgangs mit Matrizen und

Mehr

Quellen (1) Motivation (1) Quellen (2) Vertex- und Pixelshader für Echtzeit- Rendering von Glas und Wasser

Quellen (1) Motivation (1) Quellen (2) Vertex- und Pixelshader für Echtzeit- Rendering von Glas und Wasser Vertex- und Pixelshader für Echtzeit- Rendering von Glas und Wasser Quellen (1) Seminar Physically-based methods for 3D games and medical applications Wintersemester 02/03 Thomas Rusterholz NVIDIA GForce

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss

Mehr

Wertebereich und Genauigkeit der Zahlendarstellung

Wertebereich und Genauigkeit der Zahlendarstellung Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden

Mehr

6. Funktionen, Parameterübergabe

6. Funktionen, Parameterübergabe 6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen

Mehr

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

1. Referenzdatentypen: Felder und Strings

1. Referenzdatentypen: Felder und Strings 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

General Purpose Computation on GPUs

General Purpose Computation on GPUs General Purpose Computation on GPUs Matthias Schneider, Robert Grimm Universität Erlangen-Nürnberg {matthias.schneider, robert.grimm}@informatik.stud.uni-erlangen.de M. Schneider, R. Grimm 1 Übersicht

Mehr

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,

Mehr

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Übungsstunde 7 zu Computergrafik 1

Übungsstunde 7 zu Computergrafik 1 Institut für Computervisualistik Universität Koblenz 10. und 11. Dezember 2012 Inhaltsverzeichnis 1 Licht und Material Licht in OpenGL Material in OpenGL 2 in C++ Licht in OpenGL Lichtquellen In OpenGL

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08 Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für

Mehr

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656

Mehr

Seminar. Echtzeit-Rendering SS Geometry Shader. Franz Peschel

Seminar. Echtzeit-Rendering SS Geometry Shader. Franz Peschel Fachbereich 4: Informatik Seminar Echtzeit-Rendering SS 2008 Geometry Shader vorgelegt von Franz Peschel Betreuer: Prof. Dr. Stefan Müller (Institut für Computervisualistik, AG Computergrafik) Koblenz,

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Computergrafik. Peter Rösch Hochschule Augsburg University of Applied Sciences. Sommersemester 2014. Version: 24. März 2014

Computergrafik. Peter Rösch Hochschule Augsburg University of Applied Sciences. Sommersemester 2014. Version: 24. März 2014 Peter Rösch Hochschule Augsburg University of Applied Sciences Sommersemester 2014 Version: 24. März 2014 Sommer 2014, HS Augsburg, Peter Rösch Inhalt [1] 1. Einführung 2. WebGL und GLSL 3. Geometrie und

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Eine Einführung Computergrafik SS14 Timo Bourdon

Eine Einführung Computergrafik SS14 Timo Bourdon Eine Einführung Computergrafik SS14 Timo Bourdon Organisatorisches Übung am Freitag den 11. Juli entfällt! Zum OpenGL-Übungsblatt OpenGL 3.0 oder höher notwendig (Shading Language 1.50 oder höher) CIP

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Computergraphik I Die Graphik-Pipeline &

Computergraphik I Die Graphik-Pipeline & Computergraphik I Die Graphik-Pipeline & Einführung in OpenGL 3+ G. Zachmann University of Bremen, Germany cgvr.informatik.uni-bremen.de OpenGL OpenGL ist ein Software-Interface für Graphik-Hardware mit

Mehr

Aktuelle Grafikleistungen

Aktuelle Grafikleistungen Aktuelle Grafikleistungen Alexander Hötzendorfer Universität Ulm 03. Juli 2007 Inhalt Übersicht Aktuelle Techniken HDR-Lighting Tessellation Aufbau der Rendering-Pipeline Shader Vertex-Shader Geometry-Shader

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen

Mehr

Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr.

Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr. The Rendering Pipeline Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr. Volker Schulz Referent: Carsten Kurz Datum 25.10.07

Mehr

CPU, GPU und FPGA. CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017

CPU, GPU und FPGA. CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017 CPU, GPU und FPGA, Bianca Forkel 21. November 2017 CPU, GPU und FPGA Inhalt CPU: Central Processing Unit GPU: Graphical Processing Unit FPGA: Field Programmable Gate Array 2 CPU Central Processing Unit

Mehr

Proseminar: Virtuelle Präsenz

Proseminar: Virtuelle Präsenz Montag 20. Juni 2005 Proseminar: Virtuelle Präsenz Steve Rechtenbach steve.rechtenbach@informatik.uni-ulm.de Inhaltsverzeichnis Einführung 3 Beispiel 4 Das Architecture Review Board 6 Shader - OpenGL Shading

Mehr

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 21 Einstieg in die Informatik mit Java Felder, eindimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 21 1 Überblick: Was sind Felder? 2 Vereinbarung von Feldern

Mehr

Bitmaps. - Definition eigener Zeichenmuster - Definition eigener Schriften. Zeichnen auf Pixel- und Bitmap-Ebene

Bitmaps. - Definition eigener Zeichenmuster - Definition eigener Schriften. Zeichnen auf Pixel- und Bitmap-Ebene Bitmaps Grundlagen - Bitmaps sind rechteckige Arrays bestehend aus 0 und 1 Werten - Sie dienen als Zeichenmaske in einem rechteckigen Fensterbereich - Bei gegebner Zeichenfarbe f=(r, B, G) werden die Pixel,

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 08-25.04.2018 Lernziele const: Reference const: Pointer vector: iterator using Jonas Lauener (ETH Zürich) Informatik

Mehr

Übungen zum Bioinformatik-Tutorium. Blatt 3

Übungen zum Bioinformatik-Tutorium. Blatt 3 Institut für Informatik Wintersemester 2018/19 Praktische Informatik und Bioinformatik Prof. Dr. Ralf Zimmer Übungen zum Bioinformatik-Tutorium Blatt 3 Termin: Dienstag, 6.11.2018, 11 Uhr 1. Hello World

Mehr

Übungsblatt 1. Java Vorkurs (WS 2017)

Übungsblatt 1. Java Vorkurs (WS 2017) Übungsblatt 1 Java Vorkurs (WS 2017) Aufgabe 1 Hallo-Welt Erstelle ein neues Projekt mit dem Namen HelloJava. Erzeuge in diesem Projekt eine neue Klasse HelloJava. (a) Schreibe die main-methode in die

Mehr

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Java Übung Übung 2 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 19. April 2006 (UniDUE) 19. April 2006 1 / 13 Java Programme Java Programme bestehen aus (meist mehreren) Klassen. In den Klassen

Mehr

Processing Info zu Variablen und Bedingungen

Processing Info zu Variablen und Bedingungen Processing Info zu Variablen und Bedingungen Dieses Dokument enthält - Variablen (Variablen, Datentypen, Deklaration, Geltungsbereich, Benennung) - Bedingungen (if, mousepressed, else) Variablen Eine Variable

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

PROCESSING STRUKTUR UND INPUT. Created by Michael Kirsch & Beat Rossmy

PROCESSING STRUKTUR UND INPUT. Created by Michael Kirsch & Beat Rossmy PROCESSING STRUKTUR UND INPUT Created by Michael Kirsch & Beat Rossmy INHALT 1. Rückblick 1. Processing Basics 3. Anwendung 1. random 2. 1,2,3,... Integer! 2. else 3. Boolsche Operatoren 3. float 4. Bedingungen

Mehr

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi 1. Datentypen C-Grundlagen zur Programmierung des MicroControllersystems MiCoWi Die Grafiken und Beispiele wurden dem Buch C von A bis z von Jürgen Wolf entnommen. Es werden hier die ANSI-Festlegungen

Mehr