(6) Fortgeschrittene GPU- Programmierung

Größe: px
Ab Seite anzeigen:

Download "(6) Fortgeschrittene GPU- Programmierung"

Transkript

1 (6) Fortgeschrittene GPU- Programmierung Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich

2 Beleuchtung Vertex void main() { N Eckpunkt Lichtquelle lightvec vec4 vertex = gl_modelviewmatrix * gl_vertex; vec3 normal = normalize(gl_normalmatrix * gl_normal); vec3 lightvector = normalize(gl_lightsource[0].position.xyz - vertex.xyz); vec3 reflectvector = reflect(lightvector, normal); float phi = max( dot(lightvector, normal), 0.0; float psi = max( dot(normalize(vertex.xyz), reflectvector), 0.0) gl_frontcolor = gl_frontmaterial.diffuse * gl_lightsource[0].diffuse * phi + gl_frontmaterial.specular * gl_lightsource[0].specular * pow(psi, gl_frontmaterial.shininess); gl_position = gl_projectionmatrix * vertex; } Thorsten Grosch - 2 -

3 Texturen Im Rahmen der GPU-Programmierung nicht nur zur Speicherung von Farbinformationen gedacht Normalen (Bump-Mapping) Tiefeninformationen (Depth-Peeling) Strahlen (Ray-Tracing) Eigener Datentyp in GLSL sampler1d, sampler2d, sampler3d (1,2 und 3D-Texturen) samplercube (Cube Maps) sampler1dshadow, sampler2dshadow (Depth Maps) Textur wird per uniform-variable an Shader übergeben Niklas Henrich - 3 -

4 Zugriff auf Texturen Texturzugriff in Shader an Position gl_texcoord[0].st uniform sampler2d simpletexture; void main() { vec3 value = texture2d(simpletexture, gl_texcoord[0].st).xyz; } (0,1) (1,1) t (0,0) (1,0) s Niklas Henrich - 4 -

5 Texturen an Shader übergeben Textur generieren und ggf. mit Daten füllen (Applikation) glgentextures(1, &texture); glbindtexture(gl_texture_2d, texture); gltexparameterf(gl_texture_2d,gl_texture_wrap_s,gl_clamp); gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_LINEAR); Textur binden und an Shader übergeben (Applikation) glbindtexture(gl_texture_2d, texture); GLint location = glgetuniformlocation(shaderprogram, "simpletexture"); gluniform1i(location, 0); Sieht komisch aus Niklas Henrich - 5 -

6 Texture Units Was bedeutet die 0 im vorherigen Beispiel? Sie gibt die Texture Unit an, aus der OpenGL die Textur nehmen soll Standardmäßig ist Texture Unit 0 aktiv glbindtexture( ) bindet Textur immer an aktive Texture Unit Beispiel mit zwei Texturen glactivetexture(gl_texture0); glbindtexture(gl_texture_2d, moontex); GLint location = glgetuniformlocation(shaderprogram, "moontex "); gluniform1i(location, 0); glactivetexture(gl_texture1); glbindtexture(gl_texture_2d, startex); location = glgetuniformlocation(shaderprogram, "startex"); gluniform1i(location, 1); Niklas Henrich - 6 -

7 Cube Mapping Eine Form des Environment Mappings Umgebung wird durch 6 Texturen beschrieben Kamera sieht nach vorne, hinten, oben, unten, links und rechts Texturen aus Media-Ordner der DirectX SDK March 2008 Microsoft Corp. Niklas Henrich - 7 -

8 Environment Mapping Simulation von Objekten, die deren Umgebung reflektieren Gespiegelten oder gebrochenen Strahl als look-up in die Cube Map benutzen i n r Vertex Shader r = reflect(i, n); Fragment Shader envcolor = texturecube(envmap,r); Cube Map Niklas Henrich - 8 -

9 Environment Mapping - Ergebnisse r = reflect(i, n) ersetzt durch r = refract(i, n, 1.1) Niklas Henrich - 9 -

10 Multi-Pass Rendering Viele Algorithmen benötigen Zugriff auf die Nachbarn eines Pixels Filter in der Bildverarbeitung Post-Processing Effekte (z.b. Glow-Effekt, siehe Übung) Zugriff auf benachbarte Pixel des Framebuffers innerhalb eines Fragment-Programs nicht möglich Lösung: Multi-Pass Rendering Ergebnis eines Rendering-Schrittes als Eingabe des folgenden Schrittes verwenden Das endgültige Bild entsteht erst nach mehreren Durchläufen Niklas Henrich

11 Multi-Pass Rendering Szene in Textur rendern Textur an Shader-Program übergeben Viewport auf Größe der Textur setzen Bildschirmfüllendes Rechteck zeichnen glbegin(gl_quads); gltexcoord2f(0,0); glvertex2f(-1,-1); gltexcoord2f(1,0); glvertex2f( 1,-1); glend() (-1,1) (0,1) (1,1) (1,1) (-1,-1) (0,0) (1,0) (1,-1) Für jedes Texel der Textur wird genau ein Fragment generiert Zugriff auf Nachbarpixel nun über Texturzugriff Niklas Henrich

12 Full-Screen Quad - Details gldisable(gl_depth_test); glpushattrib(gl_viewport_bit); glviewport(0, 0, width, height); glmatrixmode(gl_modelview); glpushmatrix(); glloadidentity(); glmatrixmode(gl_projection); glpushmatrix(); glloadidentity(); glbegin(gl_quads); gltexcoord2f(0,0); glvertex3f(-1, -1, 0.0f); gltexcoord2f(1,0); glvertex3f(1, -1, 0.0f); gltexcoord2f(1,1); glvertex3f(1, 1, 0.0f); gltexcoord2f(0,1);glvertex3f(-1, 1, 0.0f); glend(); glpopmatrix(); glmatrixmode(gl_modelview); glpopmatrix(); glenable(gl_depth_test); glpopattrib(); Niklas Henrich

13 Mehr Details Textur-Zugriff Die aktuelle Koordinate eines Fragments in Viewport- Koordinaten ([0,Fensterbreite] x [0,Fensterhöhe]) erhält man über gl_fragcoord.xy Bei neueren Grafikkarten können Texel auch direkt mit Integer-Koordinaten im Bereich [0,Texturebreite] x [0, Texturhöhe] angesprochen werden #extension GL_EXT_gpu_shader4 : enable texelfetch2d(texture,ivec2(gl_fragcoord.xy),0); Niklas Henrich

14 Nachbarpixel Wie bestimmt man die Texturkoordinate z.b. des rechten benachbarten Pixels? Falls man texelfetch2d benutzen kann vec4 r = texelfetch2d(texture, ivec2(gl_fragcoord.xy + vec2(1,0)),0); Falls nicht, braucht man die Breite der Textur, z.b. über eine Uniform-Variable uniform float texturewidth; float texturedelta = 1.0 / texturewidth; vec4 r = texture2d(texture, gl_texcoord[0].st + vec2(texturedelta,0)); Niklas Henrich

15 Neulich beim CV-Studenten Brandneue Grafikkarte gekauft und eingebaut GLUT Demoprogramm von den CG-Seiten runtergeladen Programm so geändert, dass genau ein Dreieck gezeichnet wird Frames-per-second (fps) gemessen Niklas Henrich

16 Umfrage FPS für ein Dreieck? A B C fps fps 60 fps Niklas Henrich

17 Der Schock! VSync: Ein ca. 60 fps Vertikale Synchronisation (VSync) Treiber wartet, bis der Monitor das Bild komplett aufgebaut hat Für mehr Geschwindigkeit VSync ausschalten Windows (GLEW) wglswapintervalext(0) VSync: Aus Niklas Henrich

18 Geometry Shader Neue programmierbare Einheit der Grafikpipeline Direkt nach Vertex Shader (vor Clipping etc.) Mit DirectX 10 eingeführt (Shader Model 4.0) Funktionalität in OpenGL über Extension GL_EXT_geometry_shader4 verfügbar Dynamisch neue Geometrie erzeugen Geometrie löschen Niklas Henrich

19 Geometry Shader - Eingabe Arbeitet immer auf gesamten Eingabeprimitiv Mögliche Eingabeprimitive Punkt Linie Dreieck Shader hat Zugriff auf Alle Punkte des Eingabeprimitives Alle direkt benachbarten Punkte Zugriff möglich q2 p2 q1 p1 Benachbartes Dreieck p0 q0 Niklas Henrich

20 Geometry Shader - Ausgabe Ausgabe (beliebig* viele) Punkte Linien (line strips) Dreiecke (triangle strips) Es ist auch möglich, keine Geometrie auszugeben Maximale Anzahl der ausgegebenen Primitive pro Shaderaufruf muss zur Compile-Zeit bekannt sein Je größer diese Zahl, umso stärker sinkt die Performance Ein- und Ausgabetyp können verschieden sein Dreieck als Eingabe Linienzug als Ausgabe Wireframe *beliebig bedeutet bis zum Hardwarelimit Niklas Henrich

21 Geometry Shader neue Befehle EmitVertex() Eckpunkt dem aktuellen Ausgabeprimitiv (z.b. Dreieck) hinzufügen gl_position = vec4(1.0, 0.5, 0.3, 1.0); EmitVertex(); EndPrimitive() Aktuelles Ausgabeprimitiv abschließen Neues Ausgabeprimitiv vom gleichen Typ wird begonnen Ähnlich wie OpenGL-Befehlsreihenfolge: glend(); glbegin( ); Niklas Henrich

22 Beispiel aus Eins mach Drei Geometry Shader: Aus Geometry Shader: Ein Niklas Henrich

23 Beispiel aus Eins mach Drei #version 120 #extension GL_EXT_geometry_shader4 : enable void main() { // 1. Dreieck erzeugen und verschieben for(int i = 0; i < gl_verticesin; i++){ gl_frontcolor = vec4(0,1,0,1); gl_position = vec4(gl_positionin[i].x * 0.5, (gl_positionin[i].y * 0.5) + 0.5, 0, 1); EmitVertex(); } EndPrimitive(); // 2. Dreieck erzeugen und verschieben // 3. Dreieck erzeugen und verschieben. Anzahl der Eckpunkte des Eingabeprimitives Array von Eckpunkten des Eingabeprimitives Niklas Henrich

24 Geometry Shader Ausgabelimit Ein Geometry Shader kann momentan maximal ca. 256 Eckpunkte ausgeben Soll mehr Geometrie erzeugt werden, muss dies in mehreren Schritten geschehen Folgende Funktionalität wird dazu benötigt: Bereits erzeugte Geometrie muss zwischengespeichert werden können Erzeugte Geometrie muss wieder abgerufen werden können Diese Funktionalität wird durch das sogenannte Transform Feedback bereitgestellt Niklas Henrich

25 Transform Feedback Ermöglicht es, Geometrie in Buffer-Objekte zu rendern Fragment Shader wird ausgeschaltet Geometrie kann somit zwischengespeichert werden Inhalt des Buffers kann zu einem späteren Zeitpunkt erneut gerendert werden Niklas Henrich

26 Transform Feedback Vertex Shader und Geometry Shader können Geometrie beliebig verändern Neue Geometrie hinzufügen (GS) Vorhandene Geometrie verschieben (VS + GS) Geometrie löschen (GS) Nachdem gewünschte Geometrie erzeugt wurde Fragment Shader einschalten Geometrie rendern Niklas Henrich

27 Transform Feedback Demo Niklas Henrich

28 Framebuffer Objects (FBOs) Ermöglichen es direkt in Texturen zu rendern Multiple Render Targets (MRT) In einem Schritt in verschiedene Texturen rendern Ohne MRTs müsste die Szene für jede Information (Position, Normale, etc.) neu gerendert werden Render Target 1 (Textur) Fragment Program Position Render Target 2 (Textur) Render Target 3 (Textur) Niklas Henrich

29 FBO Attachments Ein FBO bietet Platz für eine Reihe von Attachments, die an das FBO geknüpft werden können Color Attachment (= Render Target) Texturen In diese wird gerendert Renderbuffer Objects Depth Attachment Falls OpenGL beim Rendern in das FBO einen Tiefentest durchführen soll Stencil Attachment Falls OpenGL beim Rendern in das FBO einen Stenciltest durchführen soll Niklas Henrich

30 FBO Attachments = wird gebunden an Framebuffer Object Color Color Color Color Attachment Textur Color Color Color Color Color Attachment Depth Attachment Stencil Attachment Renderbuffer Object Depth Buffer Stencil Buffer Niklas Henrich

31 Framebuffer Object erstellen Framebuffer Object erzeugen und aktivieren GLuint fbo; glgenframebuffersext(1, &fbo); glbindframebufferext(gl_framebuffer_ext, fbo); Leere Texturen erstellen (wie gehabt, siehe CG1) glgentextures(1, &textureposition); glbindtexture(gl_texture_2d, textureposition); gltexparameteri(gl_texture_2d,gl_texture_mag_filter, GL_NEAREST); gltexparameteri(gl_texture_2d,gl_texture_min_filter, GL_NEAREST); glteximage2d(gl_texture_2d, 0, GL_RGBA32F_ARB, width, height, 0, GL_RGBA, GL_FLOAT, NULL); // Textur texturenormal erzeugen // Niklas Henrich

32 Framebuffer Object erstellen Textur textureposition an ersten Color Attachment Point hängen glframebuffertexture2dext( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, // Erster AttachmentPoint GL_TEXTURE_2D, // 2D-Textur soll angehangen werden textureposition, //.. und zwar diese 0); // MipMap Level ist 0 Textur texturenormal an zweiten Attachment Point hängen glframebuffertexture2dext( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, // Erster AttachmentPoint GL_TEXTURE_2D, // 2D-Textur soll angehangen werden texturenormal, //.. und zwar diese 0); // MipMap Level ist 0 Niklas Henrich

33 In Framebuffer Object rendern OpenGL mitteilen, dass in beide Color Attachments gerendert werden soll glbindframebufferext(gl_framebuffer_ext, fbo); GLenum buffers[2]; buffers[0] = GL_COLOR_ATTACHMENT0_EXT; buffers[1] = GL_COLOR_ATTACHMENT1_EXT; gldrawbuffers(2, buffers); Der Framebuffer wurde nun durch das FBO ersetzt Anschließend Szene rendern Eine glclear( ) löscht nun die Inhalte des aktuell gebundenen FBOs! Niklas Henrich

34 FBO Fragment Shader Im Pixel-Shader kann das Render Target mit gl_fragdata[n] ausgewählt werden Position geht in Color Attachment 0 Normale geht in Color Attachment 1 varying vec4 position; varying vec3 normal; void main() { gl_fragdata[0] = position; gl_fragdata[1] = vec4(normal,0); } Niklas Henrich

35 Anmerkung: Das vorhergehende Beispiel verwendet keinen Tiefenpuffer und somit wird beim Zeichnen auch kein Tiefentest durchgeführt Folgender Code generiert einen Tiefenpuffer und hängt ihn an das FBO (siehe GLuint depthbuffer; glbindframebufferext(gl_framebuffer_ext, fbo); GLuint depthbuffer; glgenrenderbuffersext(1, &depthbuffer); glbindrenderbufferext(gl_renderbuffer_ext, depthbuffer); glrenderbufferstorageext(gl_renderbuffer_ext, GL_DEPTH_COMPONENT, windowwidth, windowheight); glframebufferrenderbufferext(gl_framebuffer_ext, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthbuffer); Niklas Henrich

36 Alles OK? Gebundenes FBO prüfen void checkfbo() { // See // for more information GLenum status; status = glcheckframebufferstatusext(gl_framebuffer_ext); switch(status) { case GL_FRAMEBUFFER_COMPLETE_EXT: // Everything's OK break; case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: cout << "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: cout << "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: cout << "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: cout << "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: cout << "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT\n"; break; case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: cout << "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT\n"; break; case GL_FRAMEBUFFER_UNSUPPORTED_EXT: cout << "GL_FRAMEBUFFER_UNSUPPORTED_EXT\n"; break; default: cout << "Unknown ERROR\n"; } } Niklas Henrich

37 Beispielhafter Ablauf: // Framebuffer binden und überprüfen glbindframebufferext(gl_framebuffer_ext, fbo); checkfbo(); Demo Drehender Teapot // FBO Shader verwenden gluseprogram(fboshader); // Inhalt von FBO löschen glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); // Geometrie rendern draw(); // Nicht mehr in das FBO rendern, sondern wieder in den normalen Framebuffer FramebufferglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // Framebuffer löschen glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); // Display-Shader verwenden gluseprogram(displayshader); // Texturen an Shader weitergeben GLint htexture = glgetuniformlocation(displayshader,"texture"); glbindtexture(gl_texture_2d,textureposition); gluniform1i(htexture,0); // Display-Shader aufrufen um FBO Inhalt darzustellen DrawFullScreenQuad(); Niklas Henrich

38 Deferred Shading Ein sehr unscharfer Begriff Im allgemeinen Fall versteht man darunter* Szene in verschiedene Texturen rendern In einem zweiten Schritt auf / mit dem Inhalt der Texturen arbeiten Praktisch jede moderne GPU-Anwendung benutzt irgendeine Form des deferred rendering / shading Im Folgenden wird das Szenario (Beleuchtung von Objekten in einer Szene) vorgestellt, für welches der Begriff am häufigsten verwendet wird *meiner Meinung nach! Niklas Henrich

39 Objekte in Szene beleuchten (ohne Deferred Shading) Eine Möglichkeit Für jede Lichtquelle in der Szene Lichtquelle aktivieren Für jedes Objekt in der Szene Objekt zeichnen Jedes Objekt muss somit #Lichtquellen #Objekte mal gezeichnet (und beleuchtet) werden Manche Objekte werden beleuchtet, obwohl sie vielleicht in einem späteren Schritt von einem anderen Objekt verdeckt werden Niklas Henrich

40 Objekte in Szene beleuchten (ohne Deferred Shading) Eine andere Möglichkeit Für jedes Objekt in der Szene Für jede Lichtquelle in der Szene Lichtquelle aktivieren und Objekt zeichnen Jedes Objekt muss wieder #Lichtquellen #Objekte mal gezeichnet und beleuchtet werden Warum nicht mehrere Lichtquellen gleichzeitig anwenden? Funktioniert bei wenigen Lichtquellen Manche Anwendungen (Spiele) können über hunderte von Lichtquellen verfügen, die gleichzeitig aktiv sind Zu viele Argumente an einen Shader Niklas Henrich

41 Deferred Shading Für jedes Objekt in der Szene Rendere Weltkoordinate, Normale, Farbe etc. in MRTs Für jede Lichtquelle in der Szene Beleuchtung als Postprocess auf den erstellten Texturen Vorteile Jedes Objekt wird genau einmal gezeichnet Es werden nur die tatsächlich sichtbaren Pixel beleuchtet Aufwand: #Objekte + #Lichtquellen anstatt #Lichtquellen #Objekte Niklas Henrich

42 Deferred Shading Objekte rendern Binde ein FBO mit mehreren Texturen (Color Attachments) Schreibe z.b. die folgenden Eigenschaften in die Texturen Texturen werden auch als G-buffer bezeichnet Tiefe Normale Farbe Phong Exponent Niklas Henrich

43 Deferred Shading Weltkoordinate? Falls genügend Platz vorhanden ist, kann die Weltkoordinate in einer eigenen Textur gespeichert werden Ansonsten kann die Position (sprich: Weltkoordinate) aus dem Tiefenwert sowie der Position des Pixels im Framebuffer und der Kamera errechnet werden Trade-off: Speicherverbrauch vs. Rechenlast Anmerkung Normalen: Falls die Normalen normalisiert sind, müssen nur zwei Werte gespeichert werden Der dritte kann aus diesen errechnet werden Das Vorzeichen des dritten Wertes muss bei einem anderen Wert mit abgespeichert werden Z.B. Tiefenwert (ist immer positiv) Niklas Henrich

44 Deferred Shading Beleuchtung Approximiere Lichtkegel durch konvexes Polygon Aktiviere Back-Face Culling Rendere konvexes Polygon Für jedes Pixel, das durch den Lichtkegel überdeckt wird, wird der Lichtquellen- Pixel Shader aktiviert Pixel Shader liest Daten aus G-Buffer aus (Position, Normale, Material etc.) und führt Lichtberechnungen für aktuelles Pixel durch Anmerkung: Wenn kein Back-Face Culling aktiviert ist, wird jedes Pixel doppelt beleuchtet. Der Pixel Shader würde einmal für die Vorderseite und einmal für die Rückseite des Polygons aktiviert. Niklas Henrich

45 Deferred Shading Für die roten Pixel wird der Beleuchtungs -Pixel Shader aktiviert Niklas Henrich

46 Deferred Shading Pixel Shader liest an seiner Position die Informationen aus dem G-Buffer aus und führt Beleuchtungsberechnung durch Position liest Daten Normale Material Niklas Henrich

47 Deferred Shading Probleme Speicherverbrauch des G-Buffers Hohe Bandbreitenausleistung (viele Texturzugriffe) Kein Antialiasing / Multisampling Wird nicht auf den Color Attachments durchgeführt Transparenzen Pro Pixel wird nur das vorderste Objekt gespeichert Niklas Henrich

48 Deferred Shading Demo Niklas Henrich

49 Links Vertex Arrays VBO Geometry Shader Transform Feedback FBO Niklas Henrich

(10) Deferred Shading

(10) Deferred Shading (10) Deferred Shading Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich, Gerrit Lochmann Wdh. 1: Framebufferobjects (FBOs) Statt in den Framebuffer direkt zu rendern, kann man Texturen attachen,

Mehr

GPU Programmierung 12. Vorlesung Photorealistische Computergrafik

GPU Programmierung 12. Vorlesung Photorealistische Computergrafik GPU Programmierung 12. Vorlesung Photorealistische Computergrafik Thorsten Grosch Standard OpenGL Pipeline verändern Bisher: Jeder glvertex( ) Punkt durchläuft die Standard OpenGL Pipeline Jetzt: Funktionalität

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

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013 Schatten bringen viel Realismus in eine Szene Schatten

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

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

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

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

OpenGL auf Mac OS X und ios

OpenGL auf Mac OS X und ios OpenGL auf Mac OS X und ios Torsten Kammer 28.4.2011 CocoaHeads Aachen Grundlagen API für hardwarebeschleunigte 3D-Grafik Kann auch für schnelles 2D verwendet werden Grundlage von Core Image, Core Animation,

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

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-18 Kapitel XIII Texturing Definition: Textur (Computergrafik) Geometrieunabhängige Oberflächeneigenschaft Typischerweise höher aufgelöst als

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Partikelsysteme, Multipass Rendering Kollisionen Rauch Feuer Vulkane Regen Tierschwärme # 2 Eigenschaften Partikelsysteme sind Gruppen von

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

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

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

(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

Computergrafik 1 Übung

Computergrafik 1 Übung Prof. Dr. Andreas Butz Dipl.-Medieninf. Hendrik Richter Dipl.-Medieninf. Raphael Wimmer Computergrafik 1 Übung 4 1 Was ist OpenGL? OpenGL = Open Graphics Library API für Echtzeit-3D-Grafik Hardwarebeschleunigt

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 die API OpenGL

Einführung in die API OpenGL Einführung in die API OpenGL LMU München - LFE Medieninformatik Folie 1 Überblick Was ist OpenGL? OpenGL und Windows 3D Grafik Grundlagen OpenGL benutzen Transformationen, Licht, Texture Mapping Ein kleines

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

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

Texture Mapping Beispiel. Universität Frankfurt

Texture Mapping Beispiel. Universität Frankfurt Texture Mapping Beispiel Texture Mapping Warum? - Detailreiche Oberfläche ohne zusätzliche Polygone Texturen I - 1D-Texturen - 2D-Texturen - 3D-Texturen Element der Textur: Texel Texturen II - Änderung

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

Übungsstunde 8 zu Computergrafik 1

Übungsstunde 8 zu Computergrafik 1 Institut für Computervisualistik Universität Koblenz 14. und 15. Januar 2013 Inhaltsverzeichnis 1 Wiederholung - Beleuchtung Gouraud-Shading Phong-Shading Flat-Shading Vergleich 2 - Idee in OpenGL Texturfilterung

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

UIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern

UIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern ios Rendering ios Architektur UIKit (Cocoa Touch) A composable, reusable, declarative, real-world inspired animation, and interaction system Framework für ios Apps Objective C Model View Controller Pattern

Mehr

Texture Mapping. Texturen

Texture Mapping. Texturen Grundlagen - Eine Textur ist ein Bild, das auf eine Oberfläche einer Geometrie aufgebracht ist - erlauben eine realistischere Darstellung von Oberflächen - können auf alle Primitive, nicht nur Polygone

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

Die Welt der Shader. Fortgeschrittene Techniken III

Die Welt der Shader. Fortgeschrittene Techniken III Die Welt der Shader Fortgeschrittene Techniken III Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Gliederung 1. Was ist ein Shader? 2. Verschiedene

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Dynamische Schattenberechnung Agenda Der Stencil-Buffer Der 1-bit Stencil-Buffer Der 8-bit Stencil-Buffer Volumetrische Echtzeitschatten

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

HLSL PostProcess Shaders

HLSL PostProcess Shaders HLSL Advanced 1 HLSL PostProcess Shaders Einführung PostProcess Effekte werden erst nach dem Rendern aller Objekte angewandt, nämlich auf das Render-Target (daher der Name). Das Spektrum der Möglichkeiten

Mehr

Kapitel 4: Schattenberechnung

Kapitel 4: Schattenberechnung Kapitel 4: Schattenberechnung 1 Überblick: Schattenberechnung Motivation Schattenvolumen Shadow Maps Projektive Schatten 2 Motivation Wesentlich für die Wahrnehmung einer 3D-Szene Eigentlich ein globaler

Mehr

2. Übung zu Computergraphik 2

2. Übung zu Computergraphik 2 2. Übung zu Computergraphik 2 Stefan Müller KOBLENZ LANDAU Aufgabe 1: Accumulation Buffer Tiefenunschärfe mit Accumulation Buffer simulieren Idee: Szene von versch. Kamerapositionen (from) aus betrachten

Mehr

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU (7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung

Mehr

3D Programmierpraktikum: Schattenberechnung in Echtzeit

3D Programmierpraktikum: Schattenberechnung in Echtzeit 3D Programmierpraktikum: Schattenberechnung in Echtzeit Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 20. Juli 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

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

(5) GPU Einführung. Vorlesung Computergraphik II Stefan Müller. Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich KOBLENZ LANDAU

(5) GPU Einführung. Vorlesung Computergraphik II Stefan Müller. Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich KOBLENZ LANDAU (5) GPU Einführung Vorlesung Computergraphik II Stefan Müller Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich Die Rendering-Pipeline Rasterisierung (2D) Zerlege den 2D-Polygonzug in Pixel Pro

Mehr

Diplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker

Diplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker Diplomarbeit 5HDO7LPH6SHFLDO (IIHFWV Neue Möglichkeiten durch programmierbare Shader Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker Betreut von: Paul Grimm, Ralf Dörner Beginn: 01.04.02 Abgabe: 30.09.02

Mehr

(9) Modernes OpenGL. Vorlesung Computergraphik III S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU

(9) Modernes OpenGL. Vorlesung Computergraphik III S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU (9) Modernes OpenGL Vorlesung Computergraphik III S. Müller OpenGL Shading Language (GLSL) Teil des OpenGL 2.0 Standards Syntax orientiert sich an C / C++ Funktionen Einfache Datentypen (float, int, bool)

Mehr

Programmierpraktikum 3D Computer Grafik

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

Mehr

Christina Nell. 3D-Computergrafik

Christina Nell. 3D-Computergrafik Christina Nell 3D-Computergrafik Was ist 3D-Computergrafik? 3D graphics is the art of cheating without getting caught. (unbekannte Quelle) Folie 2/52 Inhalt Beleuchtung Shading Texturierung Texturfilterung

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Prof. Andreas Butz, Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Dynamische Schattenberechnung Agenda Der Stencil-Puffer Der 1-bit Stencil-Puffer Der 8-bit Stencil-Puffer Volumetrische

Mehr

Proseminar: Virtuelle Präsenz. Vortrag: Steve Rechtenbach

Proseminar: Virtuelle Präsenz. Vortrag: Steve Rechtenbach Proseminar: Virtuelle Präsenz Vortrag: Steve Rechtenbach Themen: 2/22 Einführung Was ist OpenGL? / Entwicklung Fakten Kleines(!) Beispiel Hello OpenGL Shader Zusammenfassung OpenGL vs Direct3D Einführung:

Mehr

Proseminar Computergrafik: OpenGL. Marcel Heckel

Proseminar Computergrafik: OpenGL. Marcel Heckel Proseminar Computergrafik: OpenGL Marcel Heckel 23.5.26 . Inhalt 1. Allgemein Was ist OpenGL Geschichte 2. Etwas 3D-Mathematik Das Koordinatensystem Vektoren Matrizen 3. Grundlegendes zu OpenGL Arbeitsweise

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

7.1 Polygon Offset. Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit:

7.1 Polygon Offset. Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit: 7.1 Polygon Offset Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit: - Polygone sollen einmal als Fläche und einmal in Wireframe-Darstellung

Mehr

Lichtquellen und Beleuchtung

Lichtquellen und Beleuchtung void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 1 Lokales Beleuchtungsmodell in OpenGL für n Lichtquellen k s 2 Normalenvektoren - Modelview-Transformation

Mehr

Praktikum: Spieleengine im Eigenbau

Praktikum: Spieleengine im Eigenbau Seite 1/17 Praktikum Spieleengine im Eigenbau Alexander Weggerle, Tobias Bäuerle 19.10.09 http://www.saschawillems.de Praktikum: Spieleengine im Eigenbau Seite 2/17 Praktikum Spieleengine im Eigenbau Alexander

Mehr

MF Breadcrumbs. Sergej Schefer & Fabian Marx

MF Breadcrumbs. Sergej Schefer & Fabian Marx MF Breadcrumbs Sergej Schefer & Fabian Marx MF Breadcrumbs! Entwurf! Algorithmen! Screenshots / Live-Demo Entwurf! 2.5D Jump n Run! Spieler kann sich durch Level bewegen und Punkte aufsammeln! Freie Levelgestaltung

Mehr

Seminar Game Development Game Computer Graphics. Einleitung

Seminar Game Development Game Computer Graphics. Einleitung Einleitung Gliederung OpenGL Realismus Material Beleuchtung Schatten Echtzeit Daten verringern Grafik Hardware Beispiel CryEngine 2 Kristian Keßler OpenGL Was ist OpenGL? Grafik API plattform- und programmiersprachenunabhängig

Mehr

Visualisierung und Volumenrendering 2

Visualisierung und Volumenrendering 2 Institut für Computervisualistik Universität Koblenz 06.07.2012 Inhaltsverzeichnis 1 Literatur 2 Wiederholung 3 DVR Volumen Literatur Real-Time Volume Graphics Volumenrendering CG Shader Beispiele Volumen

Mehr

Jörn Loviscach Hochschule Bremen

Jörn Loviscach Hochschule Bremen Programmierbare Hardware-Shader Jörn Loviscach Hochschule Bremen Überblick Vertex- und Pixel-Shader Anwendungsbeispiele fx-dateien Anwendungsbeispiele Zusammenfassung Puffer Vertex- und Pixel-Shader Hardware-Renderpipeline

Mehr

- Für die beiden zu überblendenden Farben (source und destination) werden Blending-Faktoren besimmt (S r

- Für die beiden zu überblendenden Farben (source und destination) werden Blending-Faktoren besimmt (S r 3.2 Blending Anwendung - Kombination der Farbinformation eines neu zu zeichnenden Objekts (Source) mit der Farbinformation, die bereits im Framebuffer gespeichert ist (Destination) - Darstellung teilweise

Mehr

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese Geometrisches Modell bestehend aus Datenstrukturen zur Verknüpfung geometrischer Primitive, welche eine Gesamtszene beschreiben Bildsynthese := Modellabbildung Pixelbasiertes Modell zur Darstellung eines

Mehr

(7) Schatten. Vorlesung Computergrafik II. Dank an Niklas Henrich, Thorsten Grosch, Matthias Raspe U N I V E R S I T Ä T KOBLENZ LANDAU

(7) Schatten. Vorlesung Computergrafik II. Dank an Niklas Henrich, Thorsten Grosch, Matthias Raspe U N I V E R S I T Ä T KOBLENZ LANDAU (7) Schatten Vorlesung Computergrafik II Dank an Niklas Henrich, Thorsten Grosch, Matthias Raspe KOBLENZ LANDAU Geometrie zeichnen Immediate Mode (glbegin/glend) Vertex Arrays Vertex Buffer Objects (VBO)

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

Michael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER

Michael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER Michael Bender Martin Brill Computergrafik Ein anwendungsorientiertes Lehrbuch 2., überarbeitete Auflage HANSER Inhaltsverzeichnis Vorwort XI 1 Einleitung 1 1.1 Die Entwicklung der Computergrafik 1 1.2

Mehr

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis Computergrafik Michael Bender, Manfred Brill Ein anwendungsorientiertes Lehrbuch ISBN 3-446-40434-1 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40434-1 sowie

Mehr

Computergrafik 2008 Oliver Vornberger. Kapitel 19: Texturing

Computergrafik 2008 Oliver Vornberger. Kapitel 19: Texturing Computergrafik 2008 Oliver Vornberger Kapitel 19: Texturing 1 Strukturierte Fläche Beispiel: Steinmauer lege viele kleine rote Rechtecke auf ein großes weißes Rechteck: Nachteil: aufwändige Geometrie 2

Mehr

Aufgabe 2: Zweifacher de Casteljau

Aufgabe 2: Zweifacher de Casteljau Aufgabe 2: Zweifacher de Casteljau Evaluationen auf Bézier Patches können mit dem de Casteljau Algorithmus berechnet werden Prinzipiell einfach den normalen Algorithmus für Kurven mehrfach anwenden, denn

Mehr

2.10 Lichtquellen und Beleuchtung

2.10 Lichtquellen und Beleuchtung 2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2_4-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2_4-2 2.10

Mehr

Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone

Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone Punkte glvertex3f (50.0, 50.0, 0.0) glvertex2f (50.0, 50.0) glvertex4f (50.0, 50.0, 0.0,1.0) GLfloat vect[3] = {50.0, 50.0, 0.0} glvertex3fv

Mehr

Advanced Computer Graphics 4. Übung

Advanced Computer Graphics 4. Übung Advanced Computer Graphics 4. Übung M.Sc. Tristan Nauber Advanced Computer Graphics: Übung 4 1 Gliederung 1. OpenGL Shader Programme 2. Erzeugen, Kompilieren und Linken von OpenGL Shadern 3. Vertex Shader

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

Gliederung. Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen Wilfried Mascolus - OpenGL Teil II 2/20

Gliederung. Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen Wilfried Mascolus - OpenGL Teil II 2/20 OpenGL II Gliederung Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen 26.07.10 Wilfried Mascolus - OpenGL Teil II 2/20 Blending Entscheidung, was passiert, wenn sich zwei Objekte überlappen

Mehr

2.10 Lichtquellen und Beleuchtung

2.10 Lichtquellen und Beleuchtung 2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2-2 2.10 Lichtquellen

Mehr

Computergrafik SS 2008 Oliver Vornberger. Kapitel 21: OpenGl

Computergrafik SS 2008 Oliver Vornberger. Kapitel 21: OpenGl Computergrafik SS 2008 Oliver Vornberger Kapitel 21: OpenGl 1 OpenGl Programming Guide 2 OpenGl 200 Befehle in OpenGL Library (geometrische Primitive, Attribute) glcolor3f(1.0,0.0,0.0); glrotatef(30.0,0.0,0.0,1.0);

Mehr

Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de

Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de Überblick Echtzeit-Rendering Uwe Domaratius dou@hrz.tu-chemnitz.de Gliederung 1. Einleitung 2. geometriebasierende Verbesserungen 3. Level-of-Detail 4. Culling 5. Texturen 6. bildbasiertes Rendering Was

Mehr

(12) Wiederholung. Vorlesung Computergrafik T. Grosch

(12) Wiederholung. Vorlesung Computergrafik T. Grosch (12) Wiederholung Vorlesung Computergrafik T. Grosch Klausur 18.7. 14 16 Uhr, Hörsaal 5 (Physik) 2 Zeitstunden 8 Aufgaben Drei Aufgabentypen Übungsaufgaben Wissensfragen zur Vorlesung Transferfragen Unterschiedlicher

Mehr

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung 3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 8. Mai 26 LMU München Medieninformatik Boring/Hilliges

Mehr

Grundlegende Darstellungsfunktionen

Grundlegende Darstellungsfunktionen Grundlegende Darstellungsfunktionen Zeichenoperationen und Transformationen Die folgenden Folien beschreiben eine Reihe von grundlegenden Darstellungsfunktionen, die zur Modellierung einer Szene und zur

Mehr

Übung: Computergrafik 1

Übung: Computergrafik 1 Prof. Dr. Andreas Butz Prof. Dr. Ing. Axel Hoppe Dipl.-Medieninf. Dominikus Baur Dipl.-Medieninf. Sebastian Boring Übung: Computergrafik 1 Geometrische Primitive OpenGL Zeichenarten Kurven Primitive Übung

Mehr

Spieleprogrammierung mit DirectX und C++

Spieleprogrammierung mit DirectX und C++ Ulrich Kaiser, Philipp Lensing Spieleprogrammierung mit DirectX und C++ 2D-, 3D- und Netzwerkspiele, viele Spezialeffekte Galileo Press Einleitung 11 Danksagung 13 Vorwort zur zweiten Auflage 14 1 Vorbereitung

Mehr

2.10 Lichtquellen und Beleuchtung

2.10 Lichtquellen und Beleuchtung 2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2-2 2.10 Lichtquellen

Mehr

Computergraphik Grundlagen

Computergraphik Grundlagen Computergraphik Grundlagen XI. Rasterung Füllen von Polygonen Prof. Stefan Schlechtweg Hochschule nhalt Fachbereich Informatik Inhalt Lernziele 1. Zu lösendes Problem 2. Füllen von Pixelmengen 1. Rekursiver

Mehr

Kapitel 21: OpenGl 1

Kapitel 21: OpenGl 1 Kapitel 21: OpenGl 1 OpenGl Programming Guide 2 OpenGl 200 Befehle in OpenGL Library (geometrische Primitive, Attribute) glcolor3f(1.0,0.0,0.0); glrotatef(30.0,0.0,0.0,1.0); 50 Befehle in OpenGl Utility

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

Environment Mapping v 1.1

Environment Mapping v 1.1 DirectX Tutorial: Environment Mapping 1 Environment Mapping v 1.1 Einleitung Zuerst einmal sei gesagt, dass es verschiedene Arten von Environment Mapping gibt. Hier wird aber nur das Cubic Environment

Mehr

Softwareprojekt Spieleentwicklung

Softwareprojekt Spieleentwicklung Softwareprojekt Spieleentwicklung Prototyp I (2D) Prototyp II (3D) Softwareprojekt 12.04. 19.04. 26.04. 03.05. 31.05. Meilenstein I 28.06. Meilenstein II Prof. Holger Theisel, Tobias Günther, OvGU Magdeburg

Mehr

OpenGL und die Fixed-Function-Pipeline

OpenGL und die Fixed-Function-Pipeline OpenGL und die Fixed-Function-Pipeline Proseminar Game Design WS 07/08 Jan-Hendrik Behrmann Einführung In modernen Computerspielen hat sich inzwischen die Darstellung der Spielwelt in dreidimensionaler

Mehr

Geometrische Primitive und Hidden Surface Removal

Geometrische Primitive und Hidden Surface Removal C A R L V O N O S S I E T Z K Y Geometrische Primitive und Hidden Surface Removal Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Wiederholung Geometrische Primitive in OpenGL Mit

Mehr

(13) Hot Topics. Vorlesung Computergrafik T. Grosch

(13) Hot Topics. Vorlesung Computergrafik T. Grosch (13) Hot Topics Vorlesung Computergrafik T. Grosch Heute Vorstellung der besten Flugsimulatoren Hot Topics T. Grosch - - Warum Hot Topics? Typischerweise i Computergrafik 1 : Grundlagen, konstant Computergrafik

Mehr

Spiegelgasse 1 CH 4051 Basel. Vorführung der laufenden Programme im Tutorium Woche 3 (Abgabe ).

Spiegelgasse 1 CH 4051 Basel. Vorführung der laufenden Programme im Tutorium Woche 3 (Abgabe ). UNIVERSITÄT BASEL Prof. Dr. Thomas Vetter Departement Mathematik und Informatik Spiegelgasse 1 CH 4051 Basel Patrick Kahr (patrick.kahr@unibas.ch) Clemens Büchner (clemens.buechner@unibas.ch) Computer

Mehr

Aufgabe. - Beispiel "Fahrt durch Blutgefäße":

Aufgabe. - Beispiel Fahrt durch Blutgefäße: Aufgabe Modellierung der statischen Anteile Ihres Projekts - Definieren Sie die statischen Anteile der Szene Ihres Projekts - Erstellen Sie eine geeignete Klassen-Repräsentation - Beispiel "Fahrt durch

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-07-09 Noch Kapitel XVI Realtime Ray Tracing KD-Tree: Surface Area Heuristic Ziele der Aufteilung in Child Nodes: 1. Möglichst gleich viele Objekte

Mehr

OpenGL. (Open Graphic Library)

OpenGL. (Open Graphic Library) OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation

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

7.4 Tesselierung von Polygonen

7.4 Tesselierung von Polygonen Anwendungsgebiet - OpenGL kann direkt nur einfache konvexe Polygone anzeigen - Polygone sind einfach, wenn - sie selbstdurchdringungsfrei sind - sie keine doppelten Ecken enthalten - an einer Ecke genau

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

Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002

Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Java 3D Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Virtual World Koordinaten System Grundlagen zur Definition visueller Objekte Shape3D Unterklasse der Leaf-Klasse Eigenschaften des visuellen

Mehr

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION (until Geforce 7 Series) 1 ÜBERSICHT Grafikpipeline Verlagerung

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Szenegraphen, Texturen und Displaylisten. Agenda Beleuchtungsmodelle in OpenGL Bump-Maps zur Erzeugung von Reliefartigen Oberflächen Height-Maps

Mehr

Grundlagen der Spieleprogrammierung

Grundlagen der Spieleprogrammierung Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 3: Das Ideal - Photorealistisch Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal:

Mehr

C A R L V O N O S S I E T Z K Y. Texture-Mapping. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011

C A R L V O N O S S I E T Z K Y. Texture-Mapping. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011 C A R L V O N O S S I E T Z K Y Texture-Mapping Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Grundlagen Graphische Primitiven werden mit Bildern versehen Eingeführt von Dr. Edwin

Mehr

Übung: Computergrafik 1

Übung: Computergrafik 1 Prof. Dr. Andreas Butz Prof. Dr. Ing. Axel Hoppe Dipl.-Medieninf. Dominikus Baur Dipl.-Medieninf. Sebastian Boring Übung: Computergrafik 1 Projektionen und Transformationen Qt Kontextmenüs Koordinatensysteme

Mehr

Graphische Datenverarbeitung und Bildverarbeitung

Graphische Datenverarbeitung und Bildverarbeitung Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Verdeckung Graphische DV und BV, Regina Pohle, 20. Verdeckung Einordnung in die Inhalte der Vorlesung Einführung mathematische und

Mehr