GPU Programmierung 12. Vorlesung Photorealistische Computergrafik

Größe: px
Ab Seite anzeigen:

Download "GPU Programmierung 12. Vorlesung Photorealistische Computergrafik"

Transkript

1 GPU Programmierung 12. Vorlesung Photorealistische Computergrafik Thorsten Grosch

2 Standard OpenGL Pipeline verändern Bisher: Jeder glvertex( ) Punkt durchläuft die Standard OpenGL Pipeline Jetzt: Funktionalität verschiedener Stufen der Pipeline kann verändert werden Veränderungen sind möglich auf Ebene von (Eck-)Punkten (Vertex-Program) Grafikprimitiven (Geometry-Program) Pixeln (Fragment-Program) Thorsten Grosch - 2 -

3 Die programmierbare Pipeline Vertex Program (Vertex Shader) Programm pro Eckpunkt Geometry Program (Geometry Shader) Programm pro Grafikprimitiv Fragment Program (Pixel Shader) Programm pro Pixel Thorsten Grosch - 3 -

4 Eigenschaften Vertex Program Arbeitet nur auf einem Eckpunkt Keine Information über Topologie (andere Eckpunkte) Keine Punkte erzeugen oder löschen Wahlfreier Zugriff auf Texturspeicher Auslesen des abgespeicherten Wertes an einer beliebigen Position innerhalb einer Textur (Textur = 2D Array mit Daten) Thorsten Grosch - 4 -

5 Normale Normale Aufgaben Vertex Program Eckpunkttransformation Weltkoordinaten in Kamerakoordinaten (Modelview) Transformation in kanonisches Volumen (Projection) Normalentransformation Transponierte Inverse Beleuchtung in Kamerakoordinaten Automatische Generierung von Texturkoordinaten... Thorsten Grosch - 5 -

6 Was gehört nicht ins Vertex Program Clipping am kanonischen Volumen (-w +w) Perspektivische Division (x/w, y/w, z/w) (Color Clamping an [0,1]) Thorsten Grosch - 6 -

7 Vertex Program schematisch Texturspeicher Position (Welt) Position (kan.vol. w..+w) Farbe Normale Vertex Farbe Texturkoordinaten Program Texturkoordinaten Benutzerdefinierte Benutzerdefinierte Attribute t Attribute OpenGL State (Lichtquellen, Materialien, Matrizen) Benutzerdefinierte (uniform) Daten Thorsten Grosch - 7 -

8 Eigenschaften Fragment Program Fragment Program Vertex Rasterizer Fragment Processor Processor Arbeitet am Ende der Pipeline Wird für jedes zu zeichnende e Fragment (Pixel) aufgerufen Arbeitet nur auf aktuellem Fragment (Pixel) Kein Lesen oder Schreiben auf andere Pixel im Framebuffer Eingabe: Interpolierte Werte aus Eckpunkten Wahlfreier Zugriff auf Texturspeicher Thorsten Grosch - 8 -

9 Fragment Program Normale Aufgaben Fragment Program Farbe des Pixels festlegen Texturzugriff Effekte (z.b. Nebel) Was ein Fragment-Program nicht leistet Depth-Test Stencil-Test Alpha-Blending Wird nach den Fragment- Programmen durchgeführt Thorsten Grosch - 9 -

10 Fragment Program schematisch Texturspeicher Interpolierte Farbe Interpolierte Texturkoordinaten Interpolierte benutzerdefinierte Attribute Fragment Program Pixelfarbe (Tiefenwert) OpenGL State (Lichtquellen, Materialien, Matrizen) Benutzerdefinierte (uniform) Daten Thorsten Grosch

11 GPU programmieren - Damals Programmierung in Maschinensprache Programme werden sehr schnell unübersichtlich... vs.1.0 def c94, 0.18f, 0.18f, 0.18f, 0.18f m4x4 opos, v0, c16 mov ot0.xy, v7 ; Scalar for cube map adjustment ; OutPos = ObjSpacePos * Composite WVP-Matrix ;Passthrough texcoord 0 for bump map addressing add r8, c28, -v0 ;View direction m3x3 r9, r8, c20 ;Transform view vector from object space to env space dp3 r11.x, r9, r9 ;Magnitude^2 rsq r11.y, r11.x ;1/mag mul ot4.xyz, r9, r11.y ;Normalize... Thorsten Grosch

12 GPU programmieren - Heute Programmierung in einer Hochsprache Compiler zur Übersetzung in Maschinensprache Erste Shading-Languages RenderMan (Pixar 1988) Stanford Real-Time Shading Language (2001) Aktuell Cg (NVIDIA, OpenGL und DirectX) HLSL (Microsoft, DirectX) OpenGL Shading Language (GLSL) Weitere (GPGPU) Cuda (NVIDIA), CTM (ATI) Brook, Sh Thorsten Grosch

13 OpenGL Shading Language (GLSL) Teil des OpenGL 2.0 Standards Syntax orientiert sich an C / C++ Funktionen Einfache Datentypen (float, int, bool) Strukturen Arrays Bedingungen Schleifen Aber: Keine Zeiger Beliebige Länge der Shader-Programme Thorsten Grosch

14 Sprachmerkmale von GLSL Vektoren und Matrizen vec4 (Vektor bestehend aus 4 float-werten), mat4 (4x4 float-matrix), Operationen auf Vektoren und Matrizen (SIMD) o = m * n (Matrixmultiplikation) mat4 n, m, o; u = v + w (Vektoraddition) vec4 u, v, w; u = cross(v,w) (Kreuzprodukt) float f; f = dot(u,v) (Skalarprodukt) u = mod(v, w) (komp.weises Modulo % für float Vektoren) Viele weitere mathematische h Funktionen sin(x), cos(x), tan(x), p g p p g _quickref.pdf Thorsten Grosch

15 Swizzle / Masking Swizzle (Komponenten eines Vektors vertauschen) Rechte Seite der Zuweisung u = v.zxyw u = v u = v x z y x u = v z y u = v Masking (Nur in bestimmte Komponenten schreiben) Linke Seite der Zuweisung v.xy = v + n v v + n = v = v + n v, v x x y y y z w Skalare Werte mehrfach zuweisen x u.xy = dot(v.xyz,w.xyz) u = u = v w + v w + v w x y x x y y z z u, u z u w unverändert w w unverändert Thorsten Grosch

16 Typkonvertierung Typkonvertierung Anders als in C int i; float f = float(i); // Fehler bei f = i Konvertierung muß meist von Hand gemacht werden Beispiel vec4 v = vec4(1.0, 2.0, 3.0, 1.0); vec3 v2 = v.xyz; // Fehler bei v2 = v Thorsten Grosch

17 Ein- und Ausgabe bei Shader Programmen Zugriff auf Eigenschaften des aktuellen Eckpunktes bzw. Fragments über vordefinierte Variablen Ausgabe der Shader-Programme über vordefinierte Ausgabe-Variablen Ausgabe bei Vertex-Programmen Werte werden linear interpoliert Farbe, Texturkoordinaten, Zugriff in Fragment Shader auf interpolierte Werte Zusätzlich eigene Ausgabe-Variablen varying variables später mehr dazu Thorsten Grosch

18 Ein- und Ausgabeparameter Vertex Shader Eingabe Ausgabe Position (gl_vertex) (g_ Position (gl_position) Farbe (gl_color) Farbe (gl_frontcolor) Normale (gl_normal) Texturkoordinaten (gl_texcoord[]) Texturkoordinaten (gl_multitexcoordn) Fragment Shader Eingabe Ausgabe Farbe (gl_color) Texturkoordinaten (gl_texcoord[]) Pixelfarbe (gl_fragcolor) Tiefenwert (gl_fragdepth) Komplette Liste Thorsten Grosch

19 GLSL Programmierung Shader Objekt erzeugen vertexshader = glcreateshader(gl_vertex_shader); Source-Code bereitstellen Quelltext aus Textdatei einlesen und übergeben glshadersource(vertexshader, 1, &sourceptr, NULL); sourceptr vom Typ char*( string ) Shader compilieren glcompileshader(vertexshader); Thorsten Grosch

20 GLSL Programmierung Shader Program Objekt erzeugen program = glcreateprogram(); Shader Program mit Shadern bestücken glattachshader(program,vertexshader); Program linken gllinkprogram(program); Program benutzen gluseprogram(program); Zurück zur OpenGL Fixed-Function Pipeline gluseprogram(0); Fehlerabfrage: siehe Beispielprogramme Shader Program Vertex Shader Geometry Shader Fragment Shader Thorsten Grosch

21 Uniform Variablen Benutzerdefinierte Daten in Shader laden Innerhalb von Shadern nur Lesezugriff Wert konstant für Grafikprimitiv Parameter mit seltener Änderung, z.b. Timer Applikation (OpenGL Programm) // Program muss aktiv sein Shader gluseprogram(shader); uniform float Time; // Speicherstelle innerhalb void main() // Shader-Program abfragen { GLuint loc; loc=glgetuniformlocation(shader, "Time"); } // Wert setzen gluniform1f(loc, 2.314); Wenn der String nicht gefunden wird, dann wird loc = -1 zurückgegeben Thorsten Grosch

22 Zugriff auf OpenGL-State Zugriff über vordefinierte Uniform-Variablen Werden automatisch gesetzt Beispiele gl_modelviewmatrix gl_modelviewprojectionmatrix gl_projectionmatrix gl_modelviewmatrixinversetranspose gl_lightsource[0..n] gl_frontmaterial Thorsten Grosch

23 Minimales GLSL-Programm Vertex-Shader void main() { gl_position = gl_modelviewprojectionmatrix * gl_vertex; gl_frontcolor = gl_color; } Fragment-Shader void main() { gl_fragcolor = gl_color; } Thorsten Grosch

24 Einfache Beleuchtung mit GLSL Beleuchtung passiert im Standard OpenGL Vertex Program Bei eigenem Vertex Program muss Beleuchtung selbst programmiert werden Normale Beleuchtung mit OpenGL Transformation in Kamerakoordinaten Transformation der Normalen mit transponierter Inverse Beleuchtung pro Eckpunkt in Kamerakoordinaten Vereinfachte Variante 1 Licht Beleuchtung in Weltkoordinaten Nur diffuse Beleuchtung Thorsten Grosch

25 Gouraud Shading im Vertex Program Szenario: N Eckpunkt lightvec Lichtquelle void odmain() { vec3 normal = normalize(gl_normal); // Falls nicht normiert vec3 lightvec = gl_lightsource[0].position.xyz // Vektor zur gl_vertex.xyz; // Lichtquelle lightvec = normalize(lightvec); // Normalisieren float cosinus = dot(normal, lightvec); // Empfängercosinus gl_frontcolor = gl_frontmaterial.diffuse * // Farbe berechnen gl_lightsource[0].diffuse * cosinus; gl_position = ftransform(); // Transformation in kanonisches Volumen } ftransform(): Fixed-Function-Pipeline-Transform Entspricht gl_modelviewprojectionmatrix * gl_vertex, aber evtl. andere Rundungsgenauigkeit Thorsten Grosch

26 Phong Shading Beleuchtung pro Pixel im Fragment Program Normalen müssen interpoliert werden Problem mit OpenGL Normalen werden nach der ModelView-Transformation weggeworfen Position des Eckpunktes wird nach dem Clipping weggeworfen Normalen und Position müssen an Fragment Program weitergegeben werden Nur wie? Thorsten Grosch

27 Werteübergabe von Vertex Program an Fragment Program GLSL Cg Normalen und Position in varying variables ablegen varying variables Benutzerdefinierte Variablen Können beliebige Werte enthalten (Geschwindigkeit, ) Lineare Interpolation zwischen den Eckpunkten varying variables existieren dort nicht Normale und Position in Texturkoordinaten ablegen Texturkoordinaten t werden analog zu den varying variables zwischen den Eckpunkten interpoliert Thorsten Grosch

28 Phong Shading Vertex Program varying vec4 position; varying vec3 normal; void main() { position = gl_vertex; normal = gl_normal; gl_position = gl_modelviewprojectionmatrix * gl_vertex; } Thorsten Grosch

29 Phong Shading Fragment Program varying vec4 position; varying vec3 normal; void main() { vec3 normal = normalize(normal); vec3 lightvec = gl_lightsource[0].position.xyz iti - position.xyz; lightvec = normalize(lightvec); float cosinus = dot(normal, lightvec); } gl_fragcolor = gl_frontmaterial.diffuse * gl_lightsource[0].diffuse * cosinus; Thorsten Grosch

30 Vergleich Gouraud Phong Shading Thorsten Grosch

31 Texturen Im Rahmen der GPU-ProgrammierungProgrammierung 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 i an Shader übergeben Thorsten Grosch

32 Zugriff auf Texturen Texturzugriff in (Fragment) Shader an Position gl_texcoord[0].st uniform sampler2d simpletexture; void main() { vec3 value = texture2d(simpletexture, gl_texcoord[0].st).xyz; } Thorsten Grosch

33 Zugriff auf Texturen Alternativ: Texturzugriff über Integer Pixel Koordinaten (funktioniert nur bei neueren Grafikkarten) gl_fragcoord.xy ist die Pixelposition des aktuellen Fragments Typischer Zugriff bei Deep Framebuffer uniform sampler2d simpletexture; void main() { ivec2 pixelcoords = ivec2(gl _ FragCoord.xy); vec3 value = texelfetch2d(simpletexture, pixelcoords,0); } Thorsten Grosch

34 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); TEXTURE TEXTURE gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_LINEAR); LINEAR); Textur binden und an Shader übergeben (Applikation) glbindtexture(gl_texture_2d, texture); GLint location = glgetuniformlocation(shaderprogram, "simpletexture"); gluniform1i(location, 0); Sieht komisch aus Übergibt aktuell gebundene Textur Thorsten Grosch

35 Mehrere Texturen übergeben glgentextures (1, &positiontextureid); glbindtexture (GL_TEXTURE_2D, positiontextureid); gltexparameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); gltexparameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glgentextures (1, &normaltextureid); glbindtexture (GL_TEXTURE_2D, normaltextureid); gltexparameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); gltexparameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glactivetexture(gl_texture0); glbindtexture (GL_TEXTURE_2D, positiontextureid); glactivetexture(gl_texture1); TEXTURE1); glbindtexture (GL_TEXTURE_2D, normaltextureid); Aktuelle Textureinheit festlegen Thorsten Grosch

36 Mehrere Texturen übergeben GLint p_location = glgetuniformlocation(shaderprogram, positiontexture"); gluniform1i(p_location, 0); GLint n_location = glgetuniformlocation(shaderprogram, normaltexture"); gluniform1i(n_location, 1); Die Nummer i entspricht hier der Textur, die mit glactivetexture(gl_texture<i>) gesetzt wurde Thorsten Grosch

37 Multi-Pass Rendering Viele Algorithmen benötigen Zugriff auf die Nachbarn eines Pixels Filter in der Bildverarbeitung Post-Processing 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 Thorsten Grosch

38 Multi-Pass Rendering Szene normal rendern Framebuffer auslesen und in Textur kopieren 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 Thorsten Grosch

39 Bsp. Multi-Pass Auf Original addieren (Bild aus GPU Gems) Glühende Teile in Textur rendern Horizontaler Filter auf Textur anwenden Vertikaler Filter auf Textur anwenden Ein Filter benötigt Informationen über Nachbarpixel Bild muß als Textur vorliegen, da kein Zugriff auf Nachbarpixel im Framebuffer möglich Glow Effect, siehe Übung Thorsten Grosch

40 Frame Buffer Objects Direktes Rendern in Textur Bild wird nicht angezeigt Kein Kopiervorgang nötig für Framebuffer Textur Die Alternative glcopyteximage2d( ) kopiert den Framebufferinhalt in eine Textur Bedingungen Mind. 1 Color Textur muß gesetzt sein Größe für alle Texturen muß definiert und gleich sein Thorsten Grosch

41 FrameBufferObjects // FBO generieren glgenframebuffersext (1, &myfb); // als aktuellen FBO setzen glbindframebufferext (GL_ FRAMEBUFFER_ EXT, myfb); // Textur zuweisen glframebuffertexture2dext (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, _ colortextureid, 0); glframebuffertexture2dext (GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, depthtextureid, 0);. glbindframebufferext (GL_FRAMEBUFFER_EXT, myfb); // FBO aktivieren // alles hier wird in die Textur gezeichnet (und ist nicht direkt sichtbar!) glbindframebufferext (GL_ FRAMEBUFFER_ EXT, 0); // FBO deaktivieren Thorsten Grosch

42 Beispiele für GPU Programmierung:Normal Mapping Unebenheiten auf Oberflächen durch Veränderungen der Normalen simulieren Oberflächendetails müssen nicht durch zusätzliche Geometrie dargestellt werden Normalen zur Beleuchtung pro Pixel aus Textur (Normal Map) auslesen Thorsten Grosch

43 Normal Mapping - Koordinatensystem Alle an der Beleuchtung beteiligten Vektoren Normale aus Textur (n r ) Vektor zur Lichtquelle (l r ) r Vektor zum Augpunkt (e) müssen im gleichen Koordinatensystem vorliegen In welchem Koordinatensystem soll n r liegen? Welt- oder Objektkoordinaten Bei Objektbewegungen müssen alle Normalen der Normal Map mit verschoben werden Normalen müssten zur Beleuchtung pro Pixel in Kamerakoordinaten umgerechnet werden Normal Map wäre nicht wiederverwendbar schlechte Wahl Niklas Henrich

44 Tangent Space Tangente (x-richtung) Binormale (y-richtung) Normale (z-richtung) Lokales Koordinatensystem pro Polygon Gleiches Koordinatensystem, in dem n r definiert ist Normal Map kann wiederverwendet werden Grober Ablauf Vertex Shader transformiert l r und e r in Tangent Space Vertex Shader übergibt transfomierte Vektoren an Fragment Shader (lineare Interpolation) Pixel Shader liest Normale n r aus Textur aus und führt Lichtberechnung mit interpolierten l r und e r durch Thorsten Grosch

45 Cube Mapping Eine Form des Environment Mappings Umgebung wird durch 6 Texturen beschrieben Kamera mit 90 Öffnungswinkel sieht nach vorne, hinten, oben, unten, links und rechts Texturen aus Media-Ordner der DirectX SDK March 2008 Microsoft Corp. Thorsten Grosch

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

47 Environment Mapping - Ergebnisse r = reflect(i, n) ersetzt durch r = refract(i, n, 1.1) Thorsten Grosch

48 Multiple Render Targets (MRTs) Render Target Speicher, in den die Ausgabe des Fragment Shaders geschrieben wird (ähnlich dem Frame Buffer) Verschiedene Render Targets können gleichzeitig g als Ausgabe des Fragment Shaders gebunden werden Geometrie muß nur einmal durch die Pipeline Ermöglichen die Ausgabe verschiedener Informationen in einem Schritt Fragment Program Normale Render Target 1 Render Target 2 Render Target 3 Thorsten Grosch Deep Fram ebuffe r

49 Multiple Render Targets // MRT FBO for position/normal/color glgenframebuffersext (1, &mrtfb); glbindframebufferext (GL_FRAMEBUFFER_EXT, mrtfb); glframebuffertexture2dext (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, viewerpositiontextureid, 0); glframebuffertexture2dext (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_TEXTURE_2D, viewernormaltextureid, 0); glframebuffertexture2dext (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT2_EXT, GL_TEXTURE_2D, viewercolortextureid, 0); glframebuffertexture2dext (GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_2D, depthtextureid, 0); GLenum buffers[3] = {GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_COLOR_ATTACHMENT2_EXT}; gldrawbuffers(3, buffers); glbindframebufferext (GL_FRAMEBUFFER_EXT, 0); Reihenfolge der Buffer Thorsten Grosch

50 Multiple Render Targets // MRT Vertex Shader // MRT Fragment Shader varying vec4 position; varying vec4 position; varying vec3 normal; varying vec3 normal; varying vec4 color; varying vec4 color; void main() { position = gl_vertex; normal = gl_normal; color = gl_color; } gl_position = ftransform(); void main() { gl_fragdata[0] = position; gl_fragdata[1] = vec4(normal, 0.0); gl_fragdata[2] = color; } Thorsten Grosch

51 Literatur OpenGL Shading Language (2nd Edition) Rost et al., Addison-Wesley, 2006 Quick Reference df Tutorials, z.b. Was man sonst noch mit der GPU anstellen kann (General Purpose GPU) Lineare Algebra, Voxelisierung, Physik Simulation, Partikel, Thorsten Grosch

52 GLSL Funktionalität nutzbar machen GLSL ab OpenGL 2.0 verfügbar GLSL auch als OpenGL Extension verfügbar Damit es auch auf älteren Karten (hoffentlich) läuft Extension mit Hilfe von GLEW (OpenGL Extension Wrangler) nutzbar machen Einfach, bequem und plattformunabhängig Ablauf 1. GLEW includen (vor GLUT!) 2. GLUT initialisieren und Fenster anlegen 3. GLEW initialisieren 4. OpenGL 2.0 Support abfragen 5. Siehe ShaderFramework in der Übung! Thorsten Grosch

53 GLEW installieren - Visual Studio GLEW von laden 2. Binaries Version für Windows wählen 3. GLEW entpacken 4. Datei GLEW\bin\glew32.dll nach C:\Windows\System32 kopieren 5. Datei GLEW\lib\glew32.lib nach C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\Lib 6. Dateien GLEW\include\GL\{glew.h wglew.h} g nach C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\Include\GL Thorsten Grosch

54 GLEW installieren - Visual Studio GLEW von laden 2. Binaries Version für Windows wählen 3. GLEW entpacken 4. Datei GLEW\bin\glew32.dll nach C:\Windows\System32 kopieren 5. Datei GLEW\lib\glew32.lib nach C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib kopieren 6. Dateien GLEW\include\GL\{glew.h wglew.h} nach C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\GL kopieren Thorsten Grosch

55 GLEW Libs - Visual Studio 2005 & Projekt Eigenschaften 2. Konfiguration auf Alle Konfigurationen stellen 3. Konfigurationseigenschaften Linker Eingabe Zusätzliche Abhängigkeiten: glew32.lib eintragen Debugger für GLSL: glsldevil, Uni Stuttgart Thorsten Grosch

(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

(6) Fortgeschrittene GPU- Programmierung

(6) Fortgeschrittene GPU- Programmierung (6) Fortgeschrittene GPU- Programmierung Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich Beleuchtung Vertex void main() { N Eckpunkt Lichtquelle lightvec vec4 vertex = gl_modelviewmatrix

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

(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

(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

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

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

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

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

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

Medizinische Visualisierung

Medizinische Visualisierung Medizinische Visualisierung Vorlesung 6 05.12.2012, Universität Koblenz-Landau Dr. Matthias Raspe SOVAmed GmbH Agenda Grundlagen GPU-Programmierung Evolution Moderne OpenGL-Programmierung Shaderprogrammierung

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-18 Kapitel XIII Texturing Definition: Textur (Computergrafik) Geometrieunabhängige Oberflächeneigenschaft Typischerweise höher aufgelöst als

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

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

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

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

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

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

Ü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

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

Ü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

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

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

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

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

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

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

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

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

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

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 Partikelsysteme, Multipass Rendering Kollisionen Rauch Feuer Vulkane Regen Tierschwärme # 2 Eigenschaften Partikelsysteme sind Gruppen von

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

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

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

(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

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

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

7/5/07. Beispiel: Hello_GLSL. Setzen von "uniform"-variablen. Inspektion der Parameter eines GLSL-Programms. Attribut-Variablen: Uniform-Variablen:

7/5/07. Beispiel: Hello_GLSL. Setzen von uniform-variablen. Inspektion der Parameter eines GLSL-Programms. Attribut-Variablen: Uniform-Variablen: Beispiel: Hello_LSL Inspektion der Parameter eines LSL-Programms Attribut-Variablen: glprogramiv() : liefert die Anzahl aktiver attribute -Parameter gletactiveattrib() : liefert Info über ein bestimmtes

Mehr

Beispiel: Hello_GLSL 7/5/07. Inspektion der Parameter eines GLSL-Programms. Attribut-Variablen: Uniform-Variablen:

Beispiel: Hello_GLSL 7/5/07. Inspektion der Parameter eines GLSL-Programms. Attribut-Variablen: Uniform-Variablen: Beispiel: Hello_LSL lighthouse_tutorial/hello_glsl*. Zachmann omputer-raphik 2 - SS 07 Shader 49 Inspektion der Parameter eines LSL-Programms Attribut-Variablen: glprogramiv() : liefert die Anzahl aktiver

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Grundlagen der Spieleprogrammierung

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

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

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

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

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

Prozedurale Texturen >>Was nicht passt wird passend gemacht...<<

Prozedurale Texturen >>Was nicht passt wird passend gemacht...<< Prozedurale Texturen >>Was nicht passt wird passend gemacht...

Mehr

Computergrafik 1 Beleuchtung

Computergrafik 1 Beleuchtung Computergrafik 1 Beleuchtung Kai Köchy Sommersemester 2010 Beuth Hochschule für Technik Berlin Überblick Lokale Beleuchtungsmodelle Ambiente Beleuchtung Diffuse Beleuchtung (Lambert) Spiegelnde Beleuchtung

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

Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe

Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe Grafikprozessoren Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe 2D: Berechnung der Bildes aus einfachen Grafikprimitiven 3D: Bildaufbau aus räumlicher Beschreibung

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

D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen

D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen 2D-Texturen Texturarten Abbildung Transformationen Generierung Thomas Jung Reflectance Mapping 3D-Texturen Modellierung von Details erfordert Zeit Darstellung ist aufwendig (langsam) Details belegen Speicherplatz

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

OpenGL ES 2.0. OpenGL ist eine Bibliothek zur Ansteuerung von Grafikhardware

OpenGL ES 2.0. OpenGL ist eine Bibliothek zur Ansteuerung von Grafikhardware Begriffsbestimmung Was ist OpenGL (Open Graphics Library) OpenGL ist eine Bibliothek zur Ansteuerung von Grafikhardware Plattform- und Programmiersprachenunabhängig Darstellung komplexer 2D- und 3D-Szenen

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

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

Beleuchtung. in Computerspielen

Beleuchtung. in Computerspielen Beleuchtung in Computerspielen Motivation Überblick Licht und Schattierung Lichtquellen Lokale Beleuchtungsmodelle Schattierungsverfahren Oberflächensimulation Beispiele der CryEngine Ausblick Zusammenfassung

Mehr

Jens Konerow. Managed DirectX und C#

Jens Konerow. Managed DirectX und C# Jens Konerow Managed DirectX und C# Jens Konerow Managed DirectX und C# Einstieg und professioneller Einsatz Jens Konerow: Managed DirectX und C# Einstieg und professioneller Einsatz ISBN-10: 3-935082-17-4

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

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

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

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

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

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 212-5-7 Noch Kapitel III: Transformationen 2D Rotation um freies Rotationszentrum y α P(p x, p y ) Ziel: Rotiere Punkte r i um Winkel α um P und erhalte

Mehr

Echtzeit Videoverarbeitung

Echtzeit Videoverarbeitung Erzeugung von 3D Darstellungen Herbert Thoma Seite 1 Gliederung 3D Transformationen Sichtbarkeit von 3D Objekten Beleuchtung Texturen Beispiele: SGI Infinite Reality 2, PC 3D Hardware Seite 2 3D Transformationen

Mehr

Seminar - Paralleles Rechnen auf Grafikkarten

Seminar - Paralleles Rechnen auf Grafikkarten Seminar - Paralleles Rechnen auf Grafikkarten Seminarvortrag: Übersicht über die Programmierung von Grafikkarten Marcus Schaber 05.05.2009 Betreuer: J. Kunkel, O. Mordvinova 05.05.2009 Marcus Schaber 1/33

Mehr

Heute. Motivation. Verfügbarkeit. Programmierbare Hardware-Shader. Technische Entwicklung von Grafikhardware. Grafikpipeline (DirectX9)

Heute. Motivation. Verfügbarkeit. Programmierbare Hardware-Shader. Technische Entwicklung von Grafikhardware. Grafikpipeline (DirectX9) t.jung@fhtw-berlin.de Heute Programmierbare Hardware-Shader Thomas Jung Architektur moderner Grafikkarten Rendering von Polygonlisten mit DirectX9 Vertex- und Pixel(Fragment) shader Motivation Spiele kommen

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

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, 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

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

Grundlagen der OO- Programmierung in C#

Grundlagen der OO- Programmierung in C# Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3

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

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme? Liebe Leserin, lieber Leser 10 Kapitel i: Schnelleinstieg 13 Kapitel 2: Was sind Programme? 17 Was ist ein Programm? 18 Sprechen Sie Computer? 18 Von der Idee zum Programm 19 Von Windows, Fenstern und

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

3D-Modellierungsprogramme

3D-Modellierungsprogramme 06.06.06 Bastian Schildbach 3D-Modellierungsprogramme mit Gliederung 1. Grundlagen Texture Mapping, Texturkoordinaten, Vertices, Texturaddressierung 2. Mapping-Techniken Bump, Displacement, Normal, Two-Part,

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

Details und Vergleich von GPU-Shader-Systemen. wichtige Details und Vergleich der Shaderhochsprachen GLSL, Cg und Sh

Details und Vergleich von GPU-Shader-Systemen. wichtige Details und Vergleich der Shaderhochsprachen GLSL, Cg und Sh Details und Vergleich von GPU-Shader-Systemen wichtige Details und Vergleich der Shaderhochsprachen GLSL, Cg und Sh Historisches Cook and Perlin gelten als die Pioniere, wenn es um Shader Berechnungen

Mehr

Projektarbeit: GPU Programmierung

Projektarbeit: GPU Programmierung Projektarbeit: Martin Christen, martin.christen@stud.fhbb.ch Tobias Egartner, t.egartner@bluewin.ch Pietro Zanoni, zanonip@gmx.ch Betreuer: M. Hudritsch Seite 1/65 Inhaltsverzeichnis 1. Ziele dieser Projektarbeit...

Mehr

Seminar: Programmierung von Grafikkarten (SS 2006)

Seminar: Programmierung von Grafikkarten (SS 2006) Seminar: Programmierung von Grafikkarten (SS 2006) Shader Christian Niemand (nemojr@gmx.de) Johannes Spohr (jspohr@student.uni-kassel.de) Universität Kassel, FB 16 Research Group Programming Languages

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