(5) GPU Programmierung
|
|
- Calvin Kappel
- vor 6 Jahren
- Abrufe
Transkript
1 (5) GPU Programmierung Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich, Thorsten Grosch KOBLENZ LANDAU
2 Fantastische Effekte in Echtzeit... Real-Time Fur Over Arbitrary Surfaces, Lengyel et al., 2001 Interactive Screen-Space Accurate Photon Tracing on GPUs, Bürger et al., 2006 Interactive Image-Space Techniques for Approximating Caustics, Wyman, 2006 Studienarbeit Stefan Müller, Non-Photorealistic Rendering mit Hilfe der GPU, 2006 KOBLENZ LANDAU Niklas Henrich - 2 -
3 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) KOBLENZ LANDAU Niklas Henrich - 3 -
4 Die programmierbare Pipeline Vertex Pogram (Vertex Shader) Programm pro Eckpunkt Geometry Program (Geometry Shader) Programm pro Grafikprimitiv Fragment Program (Pixel Shader) Programm pro Pixel KOBLENZ LANDAU Niklas Henrich - 4 -
5 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 KOBLENZ LANDAU Niklas Henrich - 5 -
6 Normale Aufgaben Vertex Program Eckpunkttransformation Weltkoordinaten in Kamerakoordinaten Transformation in kanonisches Volumen Normalentransformation Transponierte Inverse Beleuchtung in Kamerakoordinaten... KOBLENZ LANDAU Niklas Henrich - 6 -
7 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] KOBLENZ LANDAU Niklas Henrich - 7 -
8 Vertex Program schematisch Texturspeicher Position (Welt) Farbe Normale Texturkoordinaten Benutzerdefinierte Attribute Vertex Program Position (kan.vol. w..+w) Farbe Texturkoordinaten Benutzerdefinierte Attribute OpenGL State (Lichtquellen, Materialien, Matrizen) Benutzerdefinierte (uniform) Daten KOBLENZ LANDAU Niklas Henrich - 8 -
9 Eigenschaften Fragment Program Fragment Program Vertex Processor Rasterizer Fragment Processor Arbeitet am Ende der Pipeline Wird für jedes zu zeichnende Fragment (Pixel) aufgerufen Arbeitet nur auf aktuellem Fragment (Pixel) Kein Lesen oder Schreiben auf andere Pixel im Framebuffer Wahlfreier Zugriff auf Texturspeicher KOBLENZ LANDAU Niklas Henrich - 9 -
10 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 KOBLENZ LANDAU Niklas Henrich
11 Fragment Program schematisch Texturspeicher Interpolierte Farbe Interpolierte Texturkoordinaten Interpolierte benutzerdefinierte Attribute Fragment Program Pixelfarbe (Tiefenwert) OpenGL State (Lichtquellen, Materialien, Matrizen) Benutzerdefinierte (uniform) Daten KOBLENZ LANDAU Niklas Henrich
12 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 add r8, c28, -v0 m3x3 r9, r8, c20 dp3 r11.x, r9, r9 rsq r11.y, r11.x mul ot4.xyz, r9, r11.y... ; Scalar for cube map adjustment ; OutPos = ObjSpacePos * Composite WVP-Matrix ;Passthrough texcoord 0 for bump map addressing ;View direction ;Transform view vector from object space to env space ;Magnitude^2 ;1/mag ;Normalize KOBLENZ LANDAU Niklas Henrich
13 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) Brook, Sh Bald: OpenCL KOBLENZ LANDAU Niklas Henrich
14 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 KOBLENZ LANDAU Niklas Henrich
15 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) u = v + w (Vektoraddition) u = cross(v,w) (Kreuzprodukt) f = dot(u,v) (Skalarprodukt) mat4 n, m, o; vec4 u, v, w; float f; Viele weitere mathematische Funktionen sin(x), cos(x), tan(x), KOBLENZ LANDAU Niklas Henrich
16 Swizzle / Masking Swizzle (Komponenten eines Vektors vertauschen) Rechte Seite der Zuweisung u = v.zxyw u u v x v z Masking (Nur in bestimmte Komponenten schreiben) Linke Seite der Zuweisung v.xy = v + n v v n x x x y x v y u v z v y y n y u v w z w v, v w unverändert Skalare Werte mehrfach zuweisen u.xy = dot(v.xyz,w.xyz) u x u u, u z w y v x w x v y w unverändert y v z w z KOBLENZ LANDAU Niklas Henrich
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 KOBLENZ LANDAU Niklas Henrich
18 Ein- und Ausgabeparameter Vertex Shader Eingabe Position (gl_vertex) Farbe (gl_color) Normale (gl_normal) Texturkoordinaten (gl_multitexcoordn) Ausgabe Position (gl_position) Farbe (gl_frontcolor) Texturkoordinaten (gl_texcoord[]) Fragment Shader Eingabe Farbe (gl_color) Texturkoordinaten (gl_texcoord[]) Ausgabe Pixelfarbe (gl_fragcolor) Tiefenwert (gl_fragdepth) Komplette Liste KOBLENZ LANDAU Niklas Henrich
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* Shader compilieren glcompileshader(vertexshader); KOBLENZ LANDAU Niklas Henrich
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); Shader Program Vertex Shader Geometry Shader Fragment Shader KOBLENZ LANDAU Niklas Henrich
21 Uniform Variablen Benutzerdefinierte Daten in Shader laden Innerhalb von Shadern nur Lesezugriff Wert konstant für Grafikprimitiv Applikation (OpenGL Programm) // Program muss aktiv sein gluseprogram(program); // Speicherstelle innerhalb // Shader-Program abfragen GLint loc; loc=glgetuniformlocation(program, "Time"); // Wert setzen gluniform1f(loc, 2.314); Shader uniform float Time; void main() { } KOBLENZ LANDAU Niklas Henrich
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 KOBLENZ LANDAU Niklas Henrich
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; } KOBLENZ LANDAU Niklas Henrich
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 KOBLENZ LANDAU Niklas Henrich
25 Gouraud Shading im Vertex Program Szenario: N Eckpunkt void main() { vec3 normal = normalize(gl_normal); // Falls nicht normiert vec3 lightvec = gl_lightsource[0].position.xyz // Vektor zur gl_vertex.xyz; // Lichtquelle lightvec = normalize(lightvec); float cosinus = dot(normal, lightvec); lightvec gl_frontcolor = gl_frontmaterial.diffuse * gl_lightsource[0].diffuse * cosinus; Lichtquelle // Normalisieren // Empfängercosinus // Farbe berechnen gl_position = ftransform(); // Transformation in kanonisches Volumen } KOBLENZ LANDAU Niklas Henrich
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? KOBLENZ LANDAU Niklas Henrich
27 Werteübergabe von Vertex Program an Fragment Program GLSL Normalen und Position in varying variables ablegen varying variables Benutzerdefinierte Variablen Können beliebige Werte enthalten (Geschwindigkeit, ) Lineare Interpolation zwischen den Eckpunkten KOBLENZ LANDAU Niklas Henrich
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; } KOBLENZ LANDAU Niklas Henrich
29 Phong Shading Fragment Program varying vec4 position; varying vec3 normal; void main() { vec3 normal = normalize(normal); vec3 lightvec = gl_lightsource[0].position.xyz - position.xyz; lightvec = normalize(lightvec); float cosinus = dot(normal, lightvec); } gl_fragcolor = gl_frontmaterial.diffuse * gl_lightsource[0].diffuse * cosinus; KOBLENZ LANDAU Niklas Henrich
30 Vergleich Gouraud Phong Shading KOBLENZ LANDAU Niklas Henrich
31 Was gibt s noch? GPGPU General Purpose Computation on Graphics Processing Unit Grafikkarte für andere Zwecke nutzen Vom Finanzwesen bis zur Strömungssimulation Sehr spannendes und aktives Feld KOBLENZ LANDAU Niklas Henrich
32 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! KOBLENZ LANDAU Niklas Henrich
33 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} nach C:\Programme\Microsoft Visual Studio 8\VC\PlatformSDK\Include\GL KOBLENZ LANDAU Niklas Henrich
34 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 KOBLENZ LANDAU Niklas Henrich
35 GLEW Libs - Visual Studio 2005 & Projekt Eigenschaften 2. Konfiguration auf Alle Konfigurationen stellen 3. Konfigurationseigenschaften Linker Eingabe Zusätzliche Abhängigkeiten: glew32.lib eintragen KOBLENZ LANDAU Niklas Henrich
36 Literatur OpenGL Shading Language (2nd Edition) Rost et al., Addison-Wesley, 2006 Quick Reference df Tutorials, z.b. KOBLENZ LANDAU Niklas Henrich
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
MehrEinfü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
MehrSoftwareprojekt 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
MehrGrundlagen 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
MehrJö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(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
MehrEine 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
MehrSeminar 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
MehrComputergrafik 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
MehrSpezialprozessoren 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
MehrProbelektion 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
MehrHeute. 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Ü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
MehrSeminar: 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
MehrWorkshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar
Workshop: Einführung in die 3D-Computergrafik Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar 1 Organisatorisches Tagesablauf: Vormittags: Theoretische Grundlagen Nachmittags: Bearbeitung
MehrComputergrafik. 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
MehrPraktikum: 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
MehrSeminar - 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(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
MehrAsteroids3D Seminar: Game Programming. Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann
Asteroids3D Seminar: Game Programming Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann Gliederung 2 1. Live-Demo und Spielidee 2. Softwarearchitektur und Szenengraph Übersicht
MehrProjektarbeit: 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...
MehrThema: Hardware-Shader
Seminar Grafikprogrammierung Thema: Hardware-Shader Christian Bauer 03.07.08 Überblick Entwicklung Die Shader im Detail Programmierung GPGPU Zusammenfassung & Ausblick 1/19 Entwicklung (1) Früher: Berechnung
MehrGrafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
MehrOpenGL. (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
MehrGPU Programmierung. Thorsten Grosch
Thorsten Grosch Willkommen zur ersten Vorlesung! g Heute Organisatorisches Vorstellung von Team und Vorlesung Historischer Rückblick zu GPUs 2 Das Team Vorlesung Jun.-Prof. Thorsten Grosch AG Computervisualistik
MehrOpenGL 2.0. ronny_r@gmx.net
Einführung in die Shader Programmierung unter OpenGL 2.0 Projektdaten Projektdaten Projektbezeichnung Projektbetrauter: Einführung in die Shader Programmierung unter OpenGL 2.0 Ronny Rösler ronny_r@gmx.net
MehrGPU Programmierung. Thorsten Grosch
Thorsten Grosch Willkommen zur ersten Vorlesung! g Heute Organisatorisches Vorstellung von Team und Vorlesung Historischer Rückblick zu GPUs 2 Das Team Vorlesung Jun.-Prof. Thorsten Grosch AG Computervisualistik
MehrProgrammierpraktikum 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
MehrMasterpraktikum Scientific Computing
Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Prof. Dr. Michael Bader Technische Universität München, Germany Outline Organisatorisches Entwicklung
MehrShader zur Bildbearbeitung
15. Oktober 2009 1 / 23 Übersicht 1 Motivation 2 Grundlagen 3 State of the Art 4 Konzeption 5 Implementierung 6 Benchmarks 7 Fazit 2 / 23 Motivation: GPU >> CPU Moores Law: Hardware verbessert sich rapide
MehrKapitel 5: Graphikhardware und Parallelisierung
Kapitel 5: Graphikhardware und Parallelisierung 1 Überblick Taxonomie für Graphikhardware Historie der Graphikhardware Architektur-Beispiele Programmierbare Hardware Taxonomie von Parallelisierungsansätzen
MehrGrakkarten - Programmierung
Grakkarten - Programmierung Version 1.3 20.02.2006 Marc Blunck 97129 Diese Ausarbeitung befasst sich mit der Programmierung von Grakprozessoren. meint General Purpose Computation On Graphics
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
MehrKurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
MehrEinführung in die Computergrafik
Einführung in die Computergrafik Proseminar Computergrafik Zuse Institut Berlin 22. November 2007 Organisatorisches Informationen rund um s Seminar. http://www.zib.de/hotz/teaching/currentlectures.htm
MehrPraktikum 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
MehrZwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework
Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit Direct 3D-Output für ein Rendering Framework von Benjamin Betting unter der Betreuung von Daniel Schiffner 1 Gliederung Kapitel I und II: Motivation,Einführung,Grundlagen
MehrTexture Based Direct Volume Rendering
Texture Based Direct Volume Rendering Vorlesung: "Advanced Topics in Computer Graphics" cbrak@upb.de 1 Agenda 1. Einleitung Volume Rendering 1.1. Volumendatensatz 1.2. Volumenintegral 1.3. Image order
MehrSeminar GPU-Programmierung/Parallelverarbeitung
Seite iv Literaturverzeichnis 1) Bengel, G.; et al.: Masterkurs Parallele und Verteilte Systeme. Vieweg + Teubner, Wiesbaden, 2008. 2) Breshears, C.: The Art of Concurrency - A Thread Monkey's Guide to
MehrSeminar: Grafikprogrammierung
Game Developer Converence 08 Seminar: Grafikprogrammierung Alexander Weggerle 17.04.08 Seite 2 Einführung Themenüberblick Organisatorisches Seminarablauf liches Seite 3 Einführung Seminar Motivation Vorbereitung
Mehr19.09.2014. 2D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen
2D-Texturen Texturarten Transformationen Generierung Thomas Jung Reflectance Mapping 3D-Texturen Modellierung von Details erfordert Zeit Darstellung ist aufwendig (langsam) Details belegen Speicherplatz
MehrEinfuehrung in OpenGL und Shader
Einfuehrung in OpenGL und Shader Michael Bayer 28. September 2005 Inhaltsverzeichnis 1 OpenGL 4 1.1 Einführung............................... 4 1.2 Architektur............................... 4 1.3 Pipeline
MehrComputer-Graphik I Transformationen & Viewing
lausthal Motivation omputer-raphik I Transformationen & Viewing Man möchte die virtuelle 3D Welt auf einem 2D Display darstellen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann
MehrGlobale Beleuchtung. Thorsten Grosch. Thorsten Grosch Seit September 2009 Juniorprofessor für CV in Magdeburg
Praktikum Globale Beleuchtung Thorsten Grosch Wer bin ich Thorsten Grosch Seit September 2009 Juniorprofessor für CV in Magdeburg g Davor Studium Informatik TU Darmstadt Fraunhofer IGD Lichtsimulation
Mehr4. Mensch-Maschine Schnittstellen
4. Mensch-Maschine Schnittstellen 4.1 Geräte zur Visualisierung Farbmodelle e TFT-Displays 4.2 Grafikkarten Standards für Grafikkarten Aufbau von Grafikkarten VGA 4.3 Grafik-Beschleuniger Grafik-Beschleunigung
MehrPhotorealistische Computergrafik. Thorsten Grosch
Photorealistische Computergrafik Thorsten Grosch Worum geht es? Globale Beleuchtung Simulation aller Lichtwege von der Lichtquelle bis zum Auge Indirektes Licht, Spiegelungen, weiche Schatten, Ziele: Photorealistische
MehrErste Schritte der Programmierung in C
Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
MehrC++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen
C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
MehrEine Einführung in die Architektur moderner Graphikprozessoren
Eine Einführung in die Architektur moderner Graphikprozessoren Seminarvortrag von Sven Schenk WS 2005/2006 Universität Mannheim, Lehrstuhl für Rechnerarchitektur Inhalt Historische Eckpunkte Einführung
MehrDirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006
DirectX und OpenGL Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006 2 Inhalt Einleitung Übersicht DirectX und Komponenten Übersicht OpenGL Sprachlicher Aufbau OpenGL Sprachlicher
MehrProseminar 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
MehrMicrocontroller Praktikum SS2010 Dipl. Ing. R. Reisch
Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Die wichtigsten Unterlagen/Tools Für das Praktikum Unterlagen/Kenntnisse/Tools wichtig: Datenblatt des AT80USB1287 µc Schaltplan des im Praktikum verwendeten
MehrOpenCL Implementierung von OpenCV Funktionen
Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen julian.mueller@e-technik.stud.uni-erlangen.de Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL
MehrImplementierung und Evaluierung von Video Feature Tracking auf moderner Grafik Hardware
Implementierung und Evaluierung von Video Feature Tracking auf moderner Diplomarbeit vorgelegt von Sebastian Heymann Betreut von Prof. Dr. Bernd Fröhlich Bauhaus Universität t Dr. Aljoscha Smolic Fraunhofer
MehrShadingalgorithmen zur Visualisierung nanostrukturierter Oberflächen
Universität Hamburg Fachbereich Informatik Arbeitsbereich Technische Aspekte Multimodaler Systeme Seminar Informatikanwendungen in Nanotechnologien Betreuer: Bernd Schütz Sommersemester 2014 Shadingalgorithmen
MehrProgrammieren mit DirectX
2D 3D Programmieren mit DirectX Teil 3: Malte Ried Fachhochschule Gießen-Friedberg 30. Oktober 2005 Inhalt 2D 3D 1 2D 2 3D 3 2D 3D Bis jetzt Windows-Fenster, das man schließen kann initialisiertes Direct3D
MehrGegenüberstellung herkömmlicher Shader- Hochsprachen und der Metasprache Sh bei der GPU Programmierung
Fachbereich 4: Informatik Gegenüberstellung herkömmlicher Shader- Hochsprachen und der Metasprache Sh bei der GPU Programmierung Studienarbeit im Studiengang Computervisualistik vorgelegt von Michelle
MehrOpenCL. OpenCL. Boris Totev, Cornelius Knap
OpenCL OpenCL 1 OpenCL Gliederung Entstehungsgeschichte von OpenCL Was, warum und überhaupt wieso OpenCL CUDA, OpenGL und OpenCL GPUs OpenCL Objekte Work-Units OpenCL Adressbereiche OpenCL API Codebeispiel
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrPROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl
PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen
MehrRendering Grundlagen Autodesk Maya. Grundlagen. Version 1.0-2009-04-08. 2009 Ingo Clemens brave rabbit www.braverabbit.de
Rendering Grundlagen Version 1.0-2009-04-08 Allgemeine Unterschiede bei Renderern Scanline Rendering Raytrace Rendering Renderlayer Einsatz von Renderlayern Overrides Material Overrides Layer Presets Batch
MehrPraktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization
Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Billboards Letztes Übungsblatt: Meshes & Instancing um dem Terrain zusätzliche Details (Vegtation) hinzuzufügen. Nachteil:
Mehrcomputer graphics & visualization
Entwicklung und Implementierung echtzeitfähiger Verfahren zur Darstellung von reflektierenden Objekten auf GPUs echtzeitfähiger Verfahren zur Darstellung von reflektierenden Objekten auf GPUs Motivation
Mehr+ C - Array (Vektoren, Felder)
+ C - Array (Vektoren, Felder) Eindimensionale Arrays Beim Programmieren steht man oft vor dem Problem, ähnliche, zusammengehörige Daten (vom gleichen Datentyp) zu speichern. Wenn man zum Beispiel ein
MehrTransformationen im 3D-Raum
Thomas Jung Repräsentation von 3D-Oberflächen Aufbau von Szenen Transformationen im 3D-Raum Projektionstranformationen Anwendung in OpenGL Geometrietransformationen bilden die Basis für die Computergrafik
MehrZugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II
Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II Matrixzugriff Wir wollen nun unsere Einführung in die Arbeit mit Vektoren und Matrizen in MATLAB
MehrFriedrich Hoermann 12.06.08 Hauptseminar Grafikprogrammierung. Grundlagen und Aufbau einer Grafikkarte
Friedrich Hoermann 12.06.08 Hauptseminar Grafikprogrammierung Grundlagen und Aufbau einer Grafikkarte Seite 2 Inhalt - Einleitung - Geschichte - Aufbau der Grafikkarte - Die Grafikpipeline - Ausblick Seite
MehrProgrammierung in C. Grundlagen. Stefan Kallerhoff
Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
MehrInformatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692
Informatik Repetitorium SS 2009 Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b
Mehr3 Kurzeinführung in Matlab
3 Kurzeinführung in Matlab Matlab ist ein sehr leistungsfähiges interaktives Programmpaket für numerische Berechnungen. Nutzen Sie dies parallel zu den Vorlesungen. Sie können damit persönlich erfahren,
MehrÜbungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrGPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg
Einführung CUDA Friedrich-Alexander-Universität Erlangen-Nürnberg PrakParRA, 18.11.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
MehrNon-Photorealistic Rendering
Übersicht 1. Motivation und Anwendungen 2. Techniken - Cel Shading - Konturlinien - Hatching Einführung Traditionelle Computergraphik Ziel: Fotorealismus Einführung Motivation Bewusste Vermeidung von
MehrPraxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.
MehrVergleich von Forward und Deferred Rendering
Vergleich von Forward und Deferred Rendering Kamil René König Bachelorarbeit Bachelor Informatik 12.08.2014 Betreuer: Prof. Dr. Detlef Krömker, Dr. Daniel Schiffner Übersicht Motivation Definitionen Forward
Mehr(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT
Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in
MehrC A R L V O N O S S I E T Z K Y. Wavefront OBJ Format. 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 Wavefront OBJ Format Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Motivation 3D-Modelle bestehen i. d. R. aus Tausenden von Dreiecken Händische
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrBei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife
303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen
MehrEchtzeit-Raytracing algebraischer Flächen auf der Graphics Processing Unit
Diplomarbeit Echtzeit-Raytracing algebraischer Flächen auf der Graphics Processing Unit Christian Stussak 12. Juli 2007 betreut durch Dr. rer. nat. habil. Peter Schenzel Martin-Luther-Universität Halle-Wittenberg
MehrNon-Photorealistic Rendering mit Hilfe der GPU. Studienarbeit
Fachbereich 4: Informatik Non-Photorealistic Rendering mit Hilfe der GPU Studienarbeit im Studiengang Computervisualistik vorgelegt von Stefan Müller Betreuer: Prof. Dr.-Ing. Stefan Müller (Institut für
MehrC programmieren. Jürgen Wolf
C programmieren Jürgen Wolf Vorwort 11 Kapitel 1: Schnelleinstieg 13 Was sollten Sie bereits können? 14 Was lernen Sie mit diesem Buch? 14 Was benötigen Sie noch? 14 Überblick zu den einzelnen Kapiteln
MehrOpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.
OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.de Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ
MehrC für Java-Programmierer
Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
MehrInformationsverarbeitung im Bauwesen
1/23 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 6
MehrComputer Graphics and Animation in Games
Computer Graphics and Animation in Games culling bloom advanced shading Some material based on Michael Wimmer, Michael Kalkusch, Peter Wonka, Francois Faure shadows 1 artificial intelligence? bump maps
MehrComputer Graphik (CS231) Installation der Software
UNIVERSITÄT BASEL Prof. Dr. Thomas Vetter Departement Mathematik und Informatik Bernoullistrasse 16 CH 4056 Basel Clemens Blumer Tobias Maier Fabian Brix http://informatik.unibas.ch/lehre/fs13/cs231/ Computer
MehrFH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz
FH München, FB 03 FA WS 06/07 Ingenieurinformatik Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz Zulassung geprüft vom Aufgabensteller: Teil I Aufg. 2 Aufg. 3 Aufg. 4 Aufg. 5 Summe Note Aufgabensteller:
MehrGPGPU-Programming. Constantin Timm Informatik 12 TU Dortmund 2012/04/09. technische universität dortmund. fakultät für informatik informatik 12
12 GPGPU-Programming Constantin Timm Informatik 12 TU Dortmund 2012/04/09 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt. Motivation
MehrC A R L V O N O S S I E T Z K Y. Licht & Material. 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 Licht & Material Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Motivation Licht & Material Geometrisch gut aussehende Modelle allein sind nicht
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung
MehrInhaltsverzeichnis. V Vorwort 17. V.1 An wen richtet sich dieses Buch? 18. V.2 Ansprüche an den Computer 18. V.4 Bildergalerie 19.
V Vorwort 17 V.1 An wen richtet sich dieses Buch? 18 V.2 Ansprüche an den Computer 18 V.3 Website 19 V.4 Bildergalerie 19 V.5 Über den Autor 20 1 Einführung 21 1.1 Installation 21 1.2 Projekttypen 22 1.3
MehrInstallation und Benutzung AD.NAV.ZipTools
Installation und Benutzung AD.NAV.ZipTools Version 1.0.0.0 ALTENBRAND Datentechnik GmbH Am Gelicht 5 35279 Neustadt (Hessen) Tel: 06692/202 290 Fax: 06692/204 741 email: support@altenbrand.de Die Komponente
Mehr