Seminar: Programmierung von Grafikkarten (SS 2006)

Größe: px
Ab Seite anzeigen:

Download "Seminar: Programmierung von Grafikkarten (SS 2006)"

Transkript

1 Seminar: Programmierung von Grafikkarten (SS 2006) Shader Christian Niemand Johannes Spohr Universität Kassel, FB 16 Research Group Programming Languages / Methodologies Seminarleiterin: Prof. Dr. Claudia Leopold Seminarbetreuer: Dipl.-Inform. Björn Knafla

2 INHALT 1 EINFÜHRUNG SHADERPROGRAMME PARAMETERDEFINITION PROGRAMMIERSPRACHEN VERTEX SHADER ANWENDUNGSGEBIETE EINSCHRÄNKUNGEN BEISPIELE Morphing Skinning PIXEL SHADER ANWENDUNGSGEBIETE EINSCHRÄNKUNGEN BEISPIELE Per Pixel Lighting Bump Mapping Post-Processing ZUSAMMENFASSUNG ANHANG QUELLENVERZEICHNIS ABBILDUNGSVERZEICHNIS...11 Seite 2 von 11

3 1 Einführung Der Einzug der hardwarebeschleunigten Grafikdarstellung in den PC- Konsumentenbereich ermöglicht anspruchsvolle 3D-Anwendungen und Spiele in Echtzeit auf preisgünstigen Systemen. Ihre Programmierung erfolgt mithilfe von hardwarenahen 3D APIs für die die Grafikkartenhersteller Treiber bereitstellen. Zwei solcher APIs haben sich herstellerübergreifend durchgesetzt: das plattformunabhängige OpenGL und Microsofts Windowsschnittstelle Direct3D. Die Interfaces beider Bibliotheken spiegeln die Pipelines gängiger Grafiksysteme wieder. Der Programmierer kann Grafikprimitive auf den Computerbildschirm bringen, indem er diese am Ausgangspunkt der Pipeline einspielt und durch diverse zusätzliche Datenstrukturen oder Schalter ihre Darstellungsweise beeinflusst. Der Kern der Grafikkarte, die GPU (Graphics Processing Unit), übernimmt dabei die Transformation der 3D-Punkte (Vertices; singulär: Vertex) auf den 2D-Bildschirm des Benutzers, die Berechnung von Farbe und Sichtbarkeit und die anschließende Umwandlung in Pixel (rechteckige Bildelemente im Frame Buffer, dem Zielspeicher für das fertige Bild [GLSL, Kapitel 1.4]), die Rasterisierung. Dieser Prozess des Renderns war lange Zeit nur über die State Machine (die Menge aller Zustände) der Grafik-API beeinflussbar. Ein Teil eines solchen Zustands (auch Render State) kann ein Ein/Aus-Bit sein (z.b. ob Blending aktiviert ist oder nicht), aber auch eine Fließkommazahl oder ein Vektor (z.b. Farbe der zu zeichnenden Primitive). Die Verarbeitung der Oberflächeneigenschaften wie z.b. Farbe, Form oder Reflektivität und das Berechnen von Lichteinflüssen mit dem Resultat einer möglichst realitätsnahen Abbildung entsprechender Objekte wird als Shading bezeichnet. Ein sog. Shader beschreibt die Darstellung eines benutzerdefinierten Materials. Shader sind keine eigenständigen Programme sondern können nur innerhalb einer Grafikpipeline ausgeführt, also auf Primitive angewendet werden. Texture Memory (Geometry) Vertex Processor Primitive Assembly Clip Project Viewport Cull (Geometry) Fragment Processor Per- Fragment Operations Frame Buffer Operations Rasterize App. Memory (Pixel) (Pixel) Pixel (Un)Pack Transfer Frame Buffer Abbildung 1: Programmable Pipeline Fest verdrahtete Grafikpipelines (Fixed Function Pipelines) ermöglichen es dem Benutzer lediglich, die Shader der GPU durch Setzen von Zuständen zu Seite 3 von 11

4 konfigurieren, während programmierbare GPUs es erlauben, Shader selbst zu entwickeln und diese in die Pipeline einzufügen (Programmable Pipelines). Diese sog. Shader-Programme ersetzen in aktuellen GPU-Architekturen (Stand Mitte 2006) jeweils nur einen Teil der Pipeline (siehe Abbildung 1). Der für die Verarbeitung von Vertices zuständige Vertex Processor wird durch spezielle Vertex Shader programmiert. Im Fragment Processor werden die entstandenen Pixel berechnet; ein Vorgang der durch Pixel Shader programmierbar ist. In dieser Architektur ist der Rest der Pipeline immer noch fest, also nicht programmierbar, und wird weiterhin durch Render States gesteuert. [GLSL, Kapitel 1] 1.1 Shaderprogramme Programme, die einen auf der GPU ausführbaren Shader implementieren, werden als Shader-Programme bezeichnet. Im Unterschied zu regulären, auf der CPU ausgeführten Programmen sind sie in ihrem Umfang, den Ein- /Ausgabemöglichkeiten und der Fallunterscheidung (Branching) in If- Abfragen und Schleifen stark eingeschränkt. Ihr Einsatz in programmierbaren GPUs wird im Folgenden anhand von Vertex- und Pixel-Shadern beschrieben. Dabei wird der Einfachheit halber nur auf die Darstellung von Dreiecken eingegangen. Zwar sind in den APIs auch Punkte und Linien als Grundprimitive vorgesehen, in der Praxis wird deren Abbildung aber durch degenerierte Dreiecke mit zwei bzw. drei identischen Eckpunkten erzeugt. 1.2 Parameterdefinition Zusätzlich zu den konfigurierbaren, fest vorgegebenen Render States der Grafik-API, und damit der GPU, werden in der Shader-Programmierung Parameter verwendet, die an die Shader-Programme übergeben werden. Allein das Programm entscheidet über ihre Verwendung, wovon Definitionsweise und Datentyp abhängig sind. Gebräuchliche Typen sind vor allem 32bit Fließkommazahlen (Typ float), die einzeln oder in Feldern von bis zu 16 Elementen übergeben werden können. Meistens werden folgende Kardinalitäten benutzt: 1 (Skalar) 3 (3D-Vektor) 4 (4D-Vektor oder Quaternion) 9 (3x3 Matrix) 12 (4x3 Matrix) 16 (4x4 Matrix) Ebenso vorgesehen sind ganze Zahlen (Typ int), ihre Verwendung ist jedoch eher selten. Sie werden implizit für die Indizierung von Texturen (Bildern, mit denen Dreiecke überzogen werden) benutzt. Parameter werden sowohl im Shader-Programm selbst als auch in der Anwendung definiert, die die Daten erzeugt. Dies ist für die Kommunikation zwischen Software auf CPU- und GPU-Seite unabdingbar, führt aber zu gewissen Abhängigkeiten, die es oft erschweren, Shader ohne Änderungen in andere Anwendungen zu übernehmen. Auf die Vertex- bzw. Pixel-Shader-spezifischen Parameterarten wird in den jeweiligen Kapiteln 2 und 3 näher eingegangen. Seite 4 von 11

5 1.3 Programmiersprachen Anfangs wurden API-spezifische Assemblersprachen verwendet, um Shader- Programme zu schreiben. Diese haben den Vorteil, dass sie direkt auf die internen Instruktionen der GPU übersetzt werden können, erschweren allerdings den Einstieg in die Shader-Programmierung. Der typische Befehlssatz umfasst mehrere Operationen der linearen Algebra, die in der Grafikprogrammierung häufig Verwendung finden, unter anderem das Skalarprodukt. Die meisten Befehle sind parallel ausgelegt, operieren also auf mehreren Werten gleichzeitig (SIMD, Single Instruction Multiple Data) um die Performance zu steigern. Mittlerweile stehen mehrere Hochsprachen für die Entwicklung von Shader- Programmen zur Auswahl, die sich alle relativ ähnlich sind. Sie basieren auf der Sprache C und werden von einem in die Grafik-API integrierten Compiler in die jeweilige Assemblersprache übersetzt und dann wiederum an den Shader-Assembler weitergereicht. Es handelt sich dabei um: GLSL (OpenGL Shading Language, sprich dschi-el-släng ): OpenGLspezifischer C-Dialekt [GLSL] Cg (C for Graphics): Vom Grafikkartenhersteller NVidia entwickelter C- Dialekt, der als Frontend sowohl für OpenGL als auch Direct3D einsetzbar ist und auch nicht auf Hardware von NVidia beschränkt ist [Cg] HLSL (High Level Shading Language): Microsofts Implementierung von Cg, die in Direct3D enthalten ist [HLSL] 2 Vertex Shader Vertex-Shader-Programme werden auf jeden Vertex eines darzustellenden Dreiecks angewendet, d.h. sie arbeiten lediglich mit der Oberflächenstruktur eines Objekts. Vertex Shader sind prinzipiell auch durch normale Software emulierbar. Es gibt unterschiedliche Versionen der Shader, man spricht auch von Shader-Modellen. Die zur Zeit aktuelle Version ist das Shader-Modell 3.0. Bei höheren Versionen des Shader-Modells wird auch bei Vertex Shadern eine geeignete Grafikkarte benötigt. Emulierte Vertex Shader sind verständlicherweise langsamer als solche, die von der Hardware unterstützt werden. Die meisten Grafikkarten besitzen dazu mehrere Einheiten, welche die Vertices parallel bearbeiten können. Eingabeparameter eines Vertex Shaders können auf verschiedene Weise definiert werden [GLSL, Kapitel 7]: Uniform: Parameter sind für jede Anwendung eines Vertex Shaders auf einen Vertex innerhalb derselben Primitivenliste konstant Vertex-Attribut: Parameter die für jeden Vertex, der den Shader durchläuft, unterschiedlich sein können. Zusätzlich zu den Koordinaten des Vertex können bspw. Normalvektor, Texturkoordinaten etc. angegeben werden. Die Informationen, die einen Vertex beschreiben, können je nach Verwendungszweck unterschiedlich sein. Die Kombination bestimmter Informationen eines Vertex nennt man das Vertex-Format. Textur: (Ab Shader-Modell 3.0) Sonderfall eines Parameters, auf den im Vertex Shader über einen Sampler (Textureinheit der Grafikkarte, die Farbwerte aus Texturdaten ermittelt) zugegriffen werden kann Seite 5 von 11

6 Des Weiteren stellen Sprachen zur Shader-Programmierung sowohl eingebaute Variablen als auch eingebaute Funktionen zur Verfügung. In GLSL beginnen diese mit dem Präfix gl_. Über die eingebauten Variablen kann so schnell und einfach direkt mit OpenGL kommuniziert werden, um beispielsweise an die aktuelle Model-View- oder Projektionsmatrix zu gelangen [Gd3DG]. Die eingebauten Funktionen eignen sich, um etwa trigonometrische Funktionen wie z.b. sin, cos usw., geometrische Funktionen wie dot, length, distance usw. oder allgemein mathematische Funktionen wie z.b. sqrt, pow, min, max, usw. innerhalb eines Shader-Programms zu berechnen. 2.1 Anwendungsgebiete In den meisten Fällen sind die Vertex Shader eine Vorstufe der Pixel Shader (siehe Kapitel 3). Sie werden relativ selten alleine eingesetzt. Der Vertex Shader wird in GLSL vom sog. Vertex Processor umgesetzt. Er führt folgende Aufgaben aus: - Vertex Transformation - Normalen Transformation und Normalisierung - Texturkoordinaten Generierung - Texturkoordinaten Transformation - Beleuchtung (Berechnung der sichtbaren Farbe des Vertex abhängig von der Materialfarbe (bspw. grünes Plastik) und der beleuchtenden Lichtquelle [Cg, Kapitel 5]) Des Weiteren sind neue Vertex Shader (3.0) in der Lage, Informationen aus Texturen auszulesen. Dadurch sind sie in der Lage Effekte wie Displacement Mapping (Änderung der Vertex-Position entsprechend der in einer Textur abgespeicherten Höheninformation) durchzuführen. 2.2 Einschränkungen Vertex Shader können keine Vertices erzeugen, nur manipulieren. 2.3 Beispiele In den folgenden Beispielen werden Anwendungen betrachtet, in denen der jeweilige Vertex Shader eine sehr spezielle Aufgabe übernimmt. Im Normalfall ist der Vertex Shader dafür zuständig, die Vertices relativ zum Betrachter zu transformieren und zu beleuchten. In folgenden Beispielen nimmt er aktiv Einfluss auf die Objektstruktur der Objekte Morphing Beim Morphing wird, wie in Abbildung 2 gezeigt wird, die Form eines Objekts in eine andere überführt. Man formt also beispielsweise einen Würfel in eine Kugel um. Diesen Effekt kennt man evtl. aus dem Windows Bildschirmschoner Flower Box. Seite 6 von 11

7 Abbildung 2: Umformung eines Körpers in einen anderen (Morphing) [P2] Skinning Dieser in Abbildung 3 dargestellte Effekt wird im Bereich der Charakteranimation eingesetzt. Wie bei einem Menschen befinden sich bei einem Modell Knochen (sog. Bones) unterhalb der Haut (im Falle des 3D Objekts unterhalb des Meshes, d.h. der durch die Vertices beschriebenen Oberflächenstruktur). Werden nun diese Bones bewegt, so beeinflussen sie das darüber liegende Mesh (Objektstruktur). Wird beispielsweise der Armknochen bewegt, muss der Vertex Shader dafür sorgen, dass sich lediglich die Vertices des Arms mitbewegen und nicht die des Fußes. Um zwischen den einzelnen Bones einen fließenden Übergang zu erlangen, werden die Einflüsse der Bones auf die entsprechenden Vertices gewichtet. So können auf einen Vertex mehrere Bones Einfluss nehmen. Abbildung 3: Bonestruktur mit umschließendem Mesh [P3] 3 Pixel Shader Die Aufgabe eines Pixel-Shader-Programms ist es, anhand seiner Eingaben (Parameter und Texturdaten) über die Farbe eines Pixels im Frame Buffer zu entscheiden. In diesem Zusammenhang wird ein Pixel auch als Fragment bezeichnet, was neben der Farbe zusätzliche Werte wie Tiefe oder Bildschirmkoordinaten beinhaltet. Man spricht daher auch vom Fragment Shader. Beim Rasterisieren von Grafikprimitiven werden die Ausgaben des Vertex Shaders genutzt, um eine 2D-Repräsentation der Ausgangsdaten auf dem Bildschirm zu erzeugen. Dieser Vorgang beinhaltet die Projektion der transformierten Vertex-Koordinaten in den sog. Screen Space (das Seite 7 von 11

8 Bildschirm-Koordinatensystem) durch die Anwendung der Projektionsmatrix. Anschließend wird auf jeden Pixel, der innerhalb der Fläche eines auf diese Weise projizierten Dreiecks liegt, der Pixel Shader angewendet. Eingabeparameter eines Pixel Shaders können auf verschiedene Weise definiert werden [GLSL, Kapitel 7]: Uniform: Parameter sind für jede Anwendung eines Pixel Shaders innerhalb einer Primitivenliste konstant Varying: Parameter die an den Pixel Shader übergeben werden, nachdem sie vom Vertex Shader generiert und über die Fläche des Dreiecks hinweg interpoliert wurden (Abb. 4) Textur: Sonderfall eines Parameters, auf den im Pixel Shader über einen Sampler zugegriffen werden kann (ab Shader-Modell 3.0 auch im Vertex Shader) 3.1 Anwendungsgebiete Pixel Shader können die Performance steigern, indem großflächige Dreiecke mit komplexen Oberflächenstrukturen versehen werden, die das Vorhandensein hochaufgelöster Geometrie vortäuschen. Im Gegensatz zur einfachen Texturierung können dabei zusätzlich Lichtberechnungen für jeden Pixel durchgeführt werden (Per Pixel Lighting). In der herkömmlichen Pipeline wird lediglich für jeden Vertex eine lokale Beleuchtung durchgeführt, mit anschließender linearer Interpolation der ermittelten Farbe über die Dreiecksfläche. Dies verhindert die Darstellung von Maxima der Lichtreflexion innerhalb des Dreiecks und erzeugt stellenweise sichtbare Kanten an den Rändern. Durch die Verlagerung der Beleuchtung in den Pixel Shader wird dieses Problem vermieden, was die optische Qualität verbessert. [Cg, Kapitel 5.3] Ein weiter Anwendungsfall ist die Generierung sog. prozeduraler Texturen, wobei statt statischer Bilder direkt im Shader erzeugte Oberflächenmuster verwendet werden. [GLSL, Kapitel 11] 3.2 Einschränkungen Der Pixel Shader hat nicht die Möglichkeit, aus dem Frame Buffer zu lesen. Er kann also weder die Farbe des aktuellen noch anderer Pixel im Puffer lesen. Diese Einschränkung ist durch die parallele Auslegung der Pixelpipelines begründet. Einzig die Alpha-Komponente des zu schreibenden Pixels kann auf einen Wert unterhalb 1.0 gesetzt werden, so dass der vorige Pixel durchscheint, falls das sog. Alpha Blending aktiviert ist. Um einen Pixel Shader auf ein gerendertes Bild anzuwenden, muss dieses in eine Textur hineingezeichnet werden, aus der der Shader wiederum lesen kann. 3.3 Beispiele Es folgen einige Beispielanwendungen für Pixel Shader, die einen besseren Eindruck von deren Arbeitsweise vermitteln sollen Per Pixel Lighting Abbildung 4: Interpolation von Farbe über Dreiecksfläche [P1] Jeden Pixel einzeln zu beleuchten ermöglicht eine realistische Darstellung von Beleuchtungsmodellen wie Phong Shading [Phong75], Blinn Shading Seite 8 von 11

9 [Blinn77] oder Bump Mapping [Blinn78]. Der folgende Pixel-Shader-Code implementiert ein vereinfachtes Phong-Modell. // Uniform-Parameter aus Anwendung uniform vec4 ambient; uniform vec4 diffuse; uniform vec4 specular; // Varying-Parameter die im Vertex Shader berechnet wurden varying vec3 normal; varying vec3 lightvector; varying vec3 viewvector; // main-funktion: Einstiegspunkt des Shader-Codes void main(void) { // Berechnung des Reflektionsvektors anhand der Normalen vec3 reflect = normalize(2.0 * dot(normal, lightvector) * normal - lightvector); } // Diffuse Beleuchtungskomponente (Helligkeit) vec4 diffusecolor = diffuse * max(0.0, dot(normal, lightvector)); // Spekulaere Beleuchtungskomponente (Lichtreflektion) vec4 specularcolor = specular * pow(max(0.0, dot(reflect, viewvector)), 10.0); // Ausgabe: Resultat wird in vorgegebene Variable geschrieben gl_fragcolor = ambient + diffusecolor + specularcolor; Der zugehörige Vertex Shader muss die 3 Varying-Parameter normal (Normalenvektor), lightvector (Vektor vom Vertex zur Lichtquelle) und viewvector (Vektor vom Vertex zum Betrachtungspunkt) im World Space berechnen. Die Uniforms ambient, diffuse und specular sind die Koeffizienten des Beleuchtungsmodells [Phong75] und müssen von der Anwendung spezifiziert werden. Die Farbe des resultierenden Pixels wird in der letzten Zeile in die Variable gl_fragcolor geschrieben, die in GLSL fest eingebaut ist [GLSL, Kapitel 4.2.4] Bump Mapping Bump Mapping (Abbildung 5) entspricht dem oben beschriebenen Per Pixel Lighting, mit dem Unterschied, dass nicht Vertex- Normalen vom Vertex Shader über die Dreiecksfläche interpoliert werden, sondern Normalen für jeden Pixel aus einer speziell vorbereiteten Textur (der sog. Bump Map oder Normal Map) gelesen werden. Dieser Vektor muss anschließend in den World Space transformiert werden, dem absoluten Koordinatensystem, in dem Objekte sowie Lichtquellen und Abbildung 5: Bump-Mapping [P4] Betrachterposition relativ zu einem globalen Ursprung positioniert sind. Dies geschieht über eine im Vertex Shader berechnete Rotationsmatrix, die entsprechend interpoliert an den Pixel Shader weitergereicht wird. Dazu müssen für jeden Vertex die sog. Tangenten- und Binormal-Vektoren im Object Space (dem lokalen Koordinatensystem des Objekts) vorberechnet und als Vertex-Attribute gespeichert werden. [GLSL, Kapitel 11.4] Seite 9 von 11

10 3.3.3 Post-Processing Nachbearbeitung von Bildern kennt man aus Bildverarbeitungsprogrammen oder dem Videoschnitt. Im Pixel Shader können viele dort gebräuchliche Effekte in Echtzeit nachträglich auf das gerenderte Bild angewendet werden. Voraussetzung dafür ist, dass der zu manipulierende Bildbereich zuvor in eine Textur gerendert wurde, da der Inhalt des Framebuffers für den Shader nicht zur Verfügung steht. Der gewünschte Effekt entsteht, indem ein bildschirmfüllendes Rechteck aus zwei Dreiecken mit dieser Textur und dem entsprechenden Pixel Shader gezeichnet wird. Dabei wird entweder in das existierende Bild hineingemischt oder die Textur selbst wird wiederum als Ziel verwendet (Feedback). Besonders populäre Post-Processing-Effekte: Motion Blur: Bewegliche Objekte werden in eine Textur gerendert und diese während eines späteren Frames über das existierende Bild gezeichnet, so dass diese Objekte leicht versetzt miteinander verschmelzen und unscharf wirken. Dies simuliert die Trägheit des Auges bzw. einer Kameralinse, die schnelle Bewegungen als Schlieren abbilden. Glow: Hell leuchtende Objekte werden in eine Textur gerendert. Diese wird mittels Pixel Shader durch einen Gauß-Filter aufgeweicht und auf das existierende Bild aufaddiert. Die Objekte scheinen zu strahlen und erhalten eine Art weiche Aura. 4 Zusammenfassung In der Fixed Function Pipeline sind alle Einheiten statisch und der Programmierer kann lediglich über die verwendete Grafik-API das Aussehen von 3D Modellen bestimmen. Um ihm mehr Freiheit und Flexibilität zu geben, hat man programmierbare Einheiten in die Pipeline eingeführt, die Vertexund Pixel- bzw. Fragment-Shader. Hierbei handelt es sich um kleine Programme, die direkt auf der Grafikkarte ablaufen. Der Vertex Shader wird auf jeden Vertex einer eingehenden Oberflächenstruktur (Mesh) angewendet. Jeder Vertex wird durch ein Vertex- Format beschrieben. Zusätzliche Informationen können dem Shader über Attribute (Information kann für jeden Vertex unterschiedlich sein) und Uniforms (für alle Vertices bzw. Pixel gleich) übergeben werden. Da der Vertex Shader neben der Beleuchtung der Vertices auch für die Transformation verantwortlich ist, können mit ihm Effekte wie bspw. Morphing und Skinning durchgeführt werden. Der Pixel Shader beleuchtet jeden Pixel einzeln und mischt die Beleuchtung mit den Texturfarben. Dazu verwendet er interpolierte Daten, die vom Vertex Shader vorberechnet wurden, sog. Varying-Variablen. Dadurch, dass der Pixel Shader jeden Pixel einzeln beleuchtet, kann er dem Betrachter durch sog. Normal Maps differenzierte Oberflächenstrukturen vorgaukeln obwohl das Objekt keine derartige Geometrie besitzt. Durch den Einsatz programmierbarer Shader ist es möglich, das Potential moderner Grafikkarten besser auszunutzen, was sowohl die Performance als auch die optische Qualität betrifft. Seite 10 von 11

11 5 Anhang 5.1 Quellenverzeichnis [GLSL] Rost, Randi J.: OpenGL Shading Language, Addison Wesley 2004 [Cg] Fernando, Randima; Kilgard, Mark J.: The Cg Tutorial, Addison Wesley 2003 [HLSL] Direct3D 9 Reference, HLSL Shaders: library/default.asp?url=/library/en-us/directx9_c/hlsl_shaders.asp [Phong75] Phong, Bui Tuong: Illumination for Computer Generated Pictures, Communications of the ACM, Vol. 18, Nr. 6, S , Juni 1975 [Blinn77] Blinn, James: Models of Light Reflection for Computer Synthesized Pictures, SIGGRAPH '77 Proceedings, S , Juli 1977 [Blinn78] Blinn, James: Simulation of Wrinkled Surfaces, SIGGRAPH '78 Proceedings, S , August 1978 [Gd3DG] Boßdorf, Dominik; Schulze, Christian; Sebastiao, Marco: Grundlagen der 3D Grafik, Seminar "Programmierung von Grafikkarten", Research Group Programming Languages / Methodologies, Uni Kassel, 8. Mai Abbildungsverzeichnis [P1] [P2] [P3] [P4] Gerendert mit ATI RenderMonkey Seite 11 von 11

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

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

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

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

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

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

OpenGL. (Open Graphic Library)

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

Mehr

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

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

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

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

Eine Einführung in die Architektur moderner Graphikprozessoren

Eine 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

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

Grafikkarten-Architektur

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

Mehr

Einführung in die Computergrafik

Einfü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

Mehr

Workshop: 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 Workshop: Einführung in die 3D-Computergrafik Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar 1 Organisatorisches Tagesablauf: Vormittags: Theoretische Grundlagen Nachmittags: Bearbeitung

Mehr

OpenGL als API für Augmented und Virtual Reality

OpenGL als API für Augmented und Virtual Reality OpenGL als API für Augmented und Virtual Reality Tobias Lang langt@cip.ifi.lmu.de Hausarbeit im Hauptseminar Augmented und Virtual Reality Inhaltsverzeichnis 1. Einleitung... 3 2. Was ist OpenGL... 3 3.

Mehr

Raytracing. Schlussbericht. Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997

Raytracing. Schlussbericht. Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997 Raytracing Schlussbericht Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997 bei Betreuer Marco Manzi, Institut für Informatik und angewandte Mathematik Inhalt Fragestellung...

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

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete

Kapitel 0. Einführung. 0.1 Was ist Computergrafik? 0.2 Anwendungsgebiete Kapitel 0 Einführung 0.1 Was ist Computergrafik? Software, die einen Computer dazu bringt, eine grafische Ausgabe (oder kurz gesagt: Bilder) zu produzieren. Bilder können sein: Fotos, Schaltpläne, Veranschaulichung

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

Texture Based Direct Volume Rendering

Texture 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

Mehr

Non-Photorealistic Rendering

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

Mehr

Rendering Grundlagen Autodesk Maya. Grundlagen. Version 1.0-2009-04-08. 2009 Ingo Clemens brave rabbit www.braverabbit.de

Rendering 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

Mehr

computer graphics & visualization

computer 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

4. Kapitel 3D Engine Geometry

4. Kapitel 3D Engine Geometry 15.11.2007 Mathematics for 3D Game Programming & Computer Graphics 4. Kapitel 3D Engine Geometry Anne Adams & Katharina Schmitt Universität Trier Fachbereich IV Proseminar Numerik Wintersemester 2007/08

Mehr

Computer-Graphik I Transformationen & Viewing

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

Mehr

Christina Nell 3D-Computergrafik Seminararbeit im Hauptseminar Grafikprogrammierung. Universität Ulm Sommersemester 2008

Christina Nell 3D-Computergrafik Seminararbeit im Hauptseminar Grafikprogrammierung. Universität Ulm Sommersemester 2008 Christina Nell 3D-Computergrafik Seminararbeit im Hauptseminar Grafikprogrammierung Universität Ulm Sommersemester 2008 1 Inhalt 1 Einleitung 3 2 Beleuchtung 2.1 Grundlagen 2.2 Beleuchtung 2.3 Shading

Mehr

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

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

Mehr

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

19.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

Mehr

Rendering: Lighting & Shading

Rendering: Lighting & Shading Hauptseminar How to make a Pixar Movie WS 2010 / 2011 Rendering: Lighting & Shading von Manuel Schmidt Gliederung: 1 Einführung 1.1 Rendering 1.2 Reflektionsmodelle 1.2.1. Diffuse Reflektion 1.2.2. Spieglende

Mehr

Kapitel 5: Graphikhardware und Parallelisierung

Kapitel 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

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

"rendern" = ein abstraktes geometrisches Modell sichtbar machen

rendern = ein abstraktes geometrisches Modell sichtbar machen 3. Grundlagen des Rendering "rendern" = ein abstraktes geometrisches Modell sichtbar machen Mehrere Schritte: Sichtbarkeitsberechnung Beleuchtungsrechnung Projektion Clipping (Abschneiden am Bildrand)

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

Lokale Beleuchtungsmodelle

Lokale Beleuchtungsmodelle Lokale Beleuchtungsmodelle Oliver Deussen Lokale Modelle 1 Farbschattierung der Oberflächen abhängig von: Position, Orientierung und Charakteristik der Oberfläche Lichtquelle Vorgehensweise: 1. Modell

Mehr

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

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

Mehr

DirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006

DirectX 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

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

8 3D-Grafik mit VPython

8 3D-Grafik mit VPython 8 3D-Grafik mit VPython In diesem Kapitel wird das Python-Erweiterungsmodul Visual-Python bzw. VPython vorgestellt. Mit VPython können interaktive und animierte 3D-Szenen erzeugt werden. Dreidimensionale

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr Aufgabe 8.1: Zeigerverdopplung Ermitteln Sie an folgendem Beispiel den Rang für jedes Listenelement sequentiell und mit dem in der Vorlesung vorgestellten parallelen

Mehr

Computer Graphik. Mitschrift von www.kuertz.name

Computer Graphik. Mitschrift von www.kuertz.name Computer Graphik Mitschrift von www.kuertz.name Hinweis: Dies ist kein offizielles Script, sondern nur eine private Mitschrift. Die Mitschriften sind teweilse unvollständig, falsch oder inaktuell, da sie

Mehr

Gameprogramming WS2013/14 Futurella von Pavel Belskiy und Felix Niemeyer Betreuer: Stefan Buschmann

Gameprogramming WS2013/14 Futurella von Pavel Belskiy und Felix Niemeyer Betreuer: Stefan Buschmann Gameprogramming WS2013/14 Futurella von Pavel Belskiy und Felix Niemeyer Betreuer: Stefan Buschmann Futurella Spielprinzip & Demo - Raumschiffe - Asteroiden - Zielplaneten - LAN Multiplayer Wettrennen

Mehr

Programmieren mit DirectX

Programmieren 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

Mehr

Stream Processing und High-Level GPGPU Sprachen

Stream Processing und High-Level GPGPU Sprachen Seminar: Programmierung von Grafikkarten Stream Processing und High-Level GPGPU Sprachen Jens Breitbart brietbar@student.uni-kassel.de Abstract Die Leistung aktueller Prozessoren erhöht sich sehr viel

Mehr

Hardware Tessellation in DirectX11 zur Berechnung von Levels of Detail in Echtzeitanwendungen

Hardware Tessellation in DirectX11 zur Berechnung von Levels of Detail in Echtzeitanwendungen MASTER THESIS zur Erlangung des akademischen Grades Master of Science in Engineering im Studiengang 585 Hardware Tessellation in DirectX11 zur Berechnung von Levels of Detail in Echtzeitanwendungen Ausgeführt

Mehr

GPU Programmierung. Thorsten Grosch

GPU 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

Mehr

Der Einsatz von HDRIs in LightWave 7

Der Einsatz von HDRIs in LightWave 7 Seite 1 DOSCH DESIGN TUTORIAL Der Einsatz von HDRIs in LightWave 7 Eine Schritt-für-Schritt-Anleitung LightWave kann ab der Version 6.5 HDRIs (High Dynamic Range Images) als Beleuchtung und Hintergrund

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Universität Osnabrück Fachbereich Mathematik / Informatik. 5. Vorlesung ( )

Universität Osnabrück Fachbereich Mathematik / Informatik. 5. Vorlesung ( ) Universität Osnabrück Fachbereich Mathematik / Informatik 5. Vorlesung (06.05.2013) Prof. Dr. rer. nat. Oliver Vornberger Nico Marniok, B. Sc. Erik Wittkorn, B. Sc. Game Application Layer Rückblick Game

Mehr

Computer Graphik (CS231) - Installation der Software

Computer Graphik (CS231) - Installation der Software UNIVERSITÄT BASEL Prof. Dr. Thomas Vetter Departement Mathematik und Informatik Spiegelgasse 1 CH 4051 Basel Tobias Maier (tobias.maier@unibas.ch) Jasenko Zivanov (jasenko.zivanov@unibas.ch) Marc Schmidlin

Mehr

Spieleprogrammierung mit DirectX

Spieleprogrammierung mit DirectX jetzt lerne ich Spieleprogrammierung mit DirectX Der einfache Einstieg in die C++-Programmierung CHRISTIAN ROUSSELLE Inhaltsverzeichnis jetzt lerne ich 1 Einführung 17 2 Grundlagen 19 2.1 Plattformen 19

Mehr

Computergrafik - Projekt

Computergrafik - Projekt Computergrafik - Projekt SS 2012 M.Sc. Peter Salz Einführung Erweiterung der CG-Übungen Nicht nur akademische Beispiele Kerntechnologien der Computergrafik vertiefen C++ (Programmiersprache) OpenGL (Grafik-Framework,

Mehr

4. Mensch-Maschine Schnittstellen

4. 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

Mehr

RTT DeltaGen Suite. Materialeinstellungen für OpenGL, RTT RealTrace & Global illumination. Copyright 2010 by Realtime Technology AG

RTT DeltaGen Suite. Materialeinstellungen für OpenGL, RTT RealTrace & Global illumination. Copyright 2010 by Realtime Technology AG RTT DeltaGen Suite Materialeinstellungen für OpenGL, RTT RealTrace & Global illumination Copyright 2010 by Realtime Technology AG Look Editor Der Look Editor zeigt die Eigenschaften des Looks des selektierten

Mehr

Linear Workflow. Linear Workflow. Version 1.0-2011-10-11

Linear Workflow. Linear Workflow. Version 1.0-2011-10-11 Version 1.0-2011-10-11 Verfahren, Bilder unter Rücksichtnahme ihres Farbprofils und der des Ausgabegeräts zu berechnen (3D), bzw. zu bearbeiten (Compositing), um eine mathematisch und physikalisch korrekte

Mehr

Inhaltsverzeichnis. V Vorwort 17. V.1 An wen richtet sich dieses Buch? 18. V.2 Ansprüche an den Computer 18. V.4 Bildergalerie 19.

Inhaltsverzeichnis. 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

Mehr

Perzentile mit Hadoop ermitteln

Perzentile mit Hadoop ermitteln Perzentile mit Hadoop ermitteln Ausgangspunkt Ziel dieses Projektes war, einen Hadoop Job zu entwickeln, der mit Hilfe gegebener Parameter Simulationen durchführt und aus den Ergebnissen die Perzentile

Mehr

Implementierung und Evaluierung von Video Feature Tracking auf moderner Grafik Hardware

Implementierung 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

Mehr

Graphische Datenverarbeitung und Bildverarbeitung

Graphische Datenverarbeitung und Bildverarbeitung Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Clippen in 2D und 3D Graphische DV und BV, Regina Pohle, 19. Clippen in 2D und 3D 1 Einordnung in die Inhalte der Vorlesung Einführung

Mehr

Shader für Geometrische Grundprimitive. Beispielszene mit vielen Kegeln unterschiedlicher Größe und Farbe

Shader für Geometrische Grundprimitive. Beispielszene mit vielen Kegeln unterschiedlicher Größe und Farbe Shader für Geometrische Grundprimitive Beispielszene mit vielen Kegeln unterschiedlicher Größe und Farbe 0. Gliederung Gliederung: 1. Motivation 2. Verwandte Arbeiten 3. Überblick über das Vorgehen 3.1

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

3D-Computergrafik und animation. Shading und globale Beleuchtungsverfahren, Animationstechniken

3D-Computergrafik und animation. Shading und globale Beleuchtungsverfahren, Animationstechniken 3D-Computergrafik und animation Shading und globale Beleuchtungsverfahren, Animationstechniken 1 Von 2D nach 3D Weiter: Modell für eine Sichtbeschreibung 2 Kameramodell Reale Kamera als Orientierung und

Mehr

OpenGL 2.0. ronny_r@gmx.net

OpenGL 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

Mehr

Digitale Bildverarbeitung Einheit 12 3D-Rekonstruktion

Digitale Bildverarbeitung Einheit 12 3D-Rekonstruktion Digitale Bildverarbeitung Einheit 12 3D-Rekonstruktion Lehrauftrag SS 2008 Fachbereich M+I der FH-Offenburg Dr. Bernard Haasdonk Albert-Ludwigs-Universität Freiburg Ziele der Einheit Einen Eindruck davon

Mehr

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Übersicht In den ersten Wochen: Einführung in objektorientierte Programmierung mit C++ Anschließend: Einführung in die programmierbare

Mehr

Bachelorarbeit. Prozedurale Texturen in einem interaktiven Open-Source 3D-Modeller

Bachelorarbeit. Prozedurale Texturen in einem interaktiven Open-Source 3D-Modeller Georg-August-Universität Göttingen Zentrum für Informatik ISSN 1612-6793 Nummer ZFI-BSC-2010-04 Bachelorarbeit im Studiengang "Angewandte Informatik" Prozedurale Texturen in einem interaktiven Open-Source

Mehr

Volumen Visualisierung

Volumen Visualisierung Volumen Visualisierung Seminar Interaktive Visualisierung (WS 06/07) Fabian Spiegel und Christian Meß Fabian Spiegel und Christian Meß 1 Übersicht Anwendungsbeispiele Volumendaten Entstehung Repräsentation

Mehr

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung Computergrafik 2010 Oliver Vornberger Kapitel 18: Beleuchtung 1 Ausgangslage am Ende der Viewing Pipeline liegt vor: P A Materialeigenschaften P B P C 2 Beleuchtungmodelle lokal: Objekt, Lichtquellen,

Mehr

OpenGL vs. Direct3D Ein 3D-API Vergleich

OpenGL vs. Direct3D Ein 3D-API Vergleich OpenGL vs. Direct3D Ein 3D-API Vergleich 3D-APIs (Application Programming Interface)sind Software-Schnittstellen, um über einen Standard auf die Hardware des Rechners zugreifen zu koennen. Direct3D von

Mehr

Teil III. Grundlagen der Computergrafik

Teil III. Grundlagen der Computergrafik Teil III Grundlagen der Computergrafik Überblick 1 2 Geometrische Modellierung 3 Bildsynthese 4 Grafikprogrammierung Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 3 1 Begriff:

Mehr

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1 Ein kleiner Einblick in die Welt der Supercomputer Christian Krohn 07.12.2010 1 Vorschub: FLOPS Entwicklung der Supercomputer Funktionsweisen von Supercomputern Zukunftsvisionen 2 Ein Top10 Supercomputer

Mehr

Erste Schritte mit HG 2

Erste Schritte mit HG 2 Erste Schritte mit HG 2 Malte Ried FH-Gießen Version: 1.0 21. November 2003 Inhaltsverzeichnis 1 Einführung 2 2 Allgemeines 2 2.1 Koordinaten...................................... 2 2.2 Farben.........................................

Mehr

Licom AlphaCAM 2012 R1

Licom AlphaCAM 2012 R1 Licom AlphaCAM 2012 R1 What is New Seite 1 von 17 Borchersstr. 20 Sehr geehrte AlphaCAM Anwender, anliegend finden Sie die Update-Information zu unserer AlphaCAM Haupt-Release für das Jahr 2012, der Version

Mehr

Computergraphik I. Scan Conversion: Lines & Co. Einordnung in die Pipeline. G. Zachmann Clausthal University, Germany zach@tu-clausthal.

Computergraphik I. Scan Conversion: Lines & Co. Einordnung in die Pipeline. G. Zachmann Clausthal University, Germany zach@tu-clausthal. 11/4/10 lausthal omputergraphik I Scan onversion of Lines. Zachmann lausthal University, ermany zach@tu-clausthal.de Einordnung in die Pipeline Rasterisierung der Objekte in Pixel Ecken-Werte interpolieren

Mehr

Animation ist das Erzeugen von Filmen mit Hilfe der Computergrafik. Objekte bewegen sich hierbei oder Beleuchtung, Augpunkt, Form,... ändern sich.

Animation ist das Erzeugen von Filmen mit Hilfe der Computergrafik. Objekte bewegen sich hierbei oder Beleuchtung, Augpunkt, Form,... ändern sich. Kapitel 1 Animation (Belebung) Animation ist das Erzeugen von Filmen mit Hilfe der Computergrafik. Objekte bewegen sich hierbei oder Beleuchtung, Augpunkt, Form,... ändern sich. Anwendungen findet die

Mehr

Modellierung von 3D Wolken auf Basis von 2D Bewölkungsdaten und Rendering mittels Rastergrafik

Modellierung von 3D Wolken auf Basis von 2D Bewölkungsdaten und Rendering mittels Rastergrafik 2011 Modellierung von 3D Wolken auf Basis von 2D Bewölkungsdaten und Rendering mittels Rastergrafik Bachelor-Arbeit von Sascha Kolodzey Fachbereich Informatik - Universität Osnabrück 18.02.2011 Gutachter:

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen V14 1 / 30 Informationsverarbeitung im Bauwesen Markus Uhlmann Institut für Hydromechanik WS 2009/2010 Bemerkung: Verweise auf zusätzliche Information zum Download erscheinen in dieser Farbe V14 2 / 30

Mehr

Photorealistische Echtzeit-Visualisierung geovirtueller Umgebungen

Photorealistische Echtzeit-Visualisierung geovirtueller Umgebungen Photorealistische Echtzeit-Visualisierung geovirtueller Umgebungen Anselm Kegel Hasso-Plattner-Institut Fachgebiet Computergrafische Systeme Prof. Dr. Jürgen Döllner Universität Potsdam www.hpi.uni-potsdam.de/3d

Mehr

Computer Graphik I Intro

Computer Graphik I Intro Computer Graphik I Intro 1 Ziele Modellierung 2 Ziele Bildgenerierung 3 Anwendungen Ausgabe 4 Kontakt Marc Alexa TU Berlin Computer Graphik marc.alexa@tu- berlin.de Raum EN 717 hep://www.cg.tu- berlin.de

Mehr

Terrain-Rendering mit Geometry Clipmaps

Terrain-Rendering mit Geometry Clipmaps Vorarbeiten & Grundlagen Basiskomponenten Der Clipmap-Algorithmus Terrain-Rendering mit Seminar Computergrak 2010 Vorarbeiten & Grundlagen Basiskomponenten Der Clipmap-Algorithmus Worum geht's? Algorithmus

Mehr

Prüfungsprotokoll Computergrafik 1 und 2 (1692 & 1693) Prüfer: M. Felten von: Lindig Florian. Dauer: 30 min jeweils. Note: 1.

Prüfungsprotokoll Computergrafik 1 und 2 (1692 & 1693) Prüfer: M. Felten von: Lindig Florian. Dauer: 30 min jeweils. Note: 1. Prüfungsprotokoll Computergrafik 1 und 2 (1692 & 1693) Prüfer: M. Felten von: Lindig Florian Dauer: 30 min jeweils Note: 1.0 jeweils Alles in allem eine lockere Atmosphäre, man bekommt genug Papier und

Mehr

Real-Time High-Dynamic Range Texture Mapping

Real-Time High-Dynamic Range Texture Mapping Real-Time High-Dynamic Range Texture Mapping Jonathen Cohen, Chris Tchou, Tim Hawkins and Paul Debevec Präsentiert von Daniel Wickeroth Einführung Worum geht s? Darstellung realistischer Szenen Innen -

Mehr

Hochschule Bremen. Rechnerstrukturen Labor WS 04/05 I7I. Thema: Grafikkarten. Laborbericht. Datum 18.01.2005

Hochschule Bremen. Rechnerstrukturen Labor WS 04/05 I7I. Thema: Grafikkarten. Laborbericht. Datum 18.01.2005 Hochschule Bremen Rechnerstrukturen Labor I7I Thema: Grafikkarten Laborbericht Datum 18.01.2005 Carsten Eckert(83912) (72497) Fazit Für unseren Praxisteil zum Vortrag Grafikkarten haben wir uns entschieden,

Mehr

Postprocessing. Algorithmen für Computerspiele. Alexander Martin 19. Juli 2010

Postprocessing. Algorithmen für Computerspiele. Alexander Martin 19. Juli 2010 Postprocessing Algorithmen für Computerspiele Alexander Martin 19. Juli 2010 Inhaltsverzeichnis 1. Einführung Definition Postprocessing Überblick Postprocessing generierte Bildeffekte Einordnung in den

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Spline-artige Kurven auf Subdivision Surfaces. Jörn Loviscach Hochschule Bremen, Germany

Spline-artige Kurven auf Subdivision Surfaces. Jörn Loviscach Hochschule Bremen, Germany Spline-artige Kurven auf Subdivision Surfaces Jörn Loviscach Hochschule Bremen, Germany Überblick Spline-artige Kurven auf Spline-Flächen Kurven auf SDS: Problem, Anwendung Verwandte Arbeiten Spline-artige

Mehr

Gegenüberstellung herkömmlicher Shader- Hochsprachen und der Metasprache Sh bei der GPU Programmierung

Gegenü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

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Universität Augsburg. 20. April 2012. B. Möller (U. Augsburg) Computergraphik SS12 20. April 2012 1 / 6

Universität Augsburg. 20. April 2012. B. Möller (U. Augsburg) Computergraphik SS12 20. April 2012 1 / 6 Kapitel 1 Einführung B. Möller Universität Augsburg 20. April 2012 B. Möller (U. Augsburg) Computergraphik SS12 20. April 2012 1 / 6 Begriffsdefinition Computergrafik: realistische Darstellung realer oder

Mehr

Das SR4 bietet eine Reihe von Verbesserung und behebt kleinere bekannte Probleme aus den Bereichen:

Das SR4 bietet eine Reihe von Verbesserung und behebt kleinere bekannte Probleme aus den Bereichen: Smith Micro Software, Inc. und das Poser-Team freuen sich mitteilen zu dürfen, dass das Poser Pro 2014 Service Release 4 (SR4) ab sofort für Mac OS X und Windows verfügbar ist. Das SR4 wird ihre Poser-Vollversion

Mehr

Terrain Rendering mit Hardware Tessellation unter DirectX 11

Terrain Rendering mit Hardware Tessellation unter DirectX 11 MASTER THESIS zur Erlangung des akademischen Grades Master of Science in Engineering im Studiengang Game Engineering und Simulation Terrain Rendering mit Hardware Tessellation unter DirectX 11 Ausgeführt

Mehr

GPU Programmierung. Thorsten Grosch

GPU 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

Mehr

Grundlagen der Spieleprogrammierung

Grundlagen der Spieleprogrammierung Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 4: Die Realität DirectX und OpenGL (Übersicht) Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen

Mehr

Non-Photorealistic Rendering mit Hilfe der GPU. Studienarbeit

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

Mehr

Entwicklung von Environment-Shadern in Cg und CgFX unter Berücksichtigung des Workflows zur Erstellung virtueller Szenenbilder im WDR Köln

Entwicklung von Environment-Shadern in Cg und CgFX unter Berücksichtigung des Workflows zur Erstellung virtueller Szenenbilder im WDR Köln Entwicklung von Environment-Shadern in Cg und CgFX unter Berücksichtigung des Workflows zur Erstellung virtueller Szenenbilder im WDR Köln Bachelorarbeit im Institut für Medien- und Phototechnik an der

Mehr

Shadingalgorithmen zur Visualisierung nanostrukturierter Oberflächen

Shadingalgorithmen 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

Mehr

Graphische Datenverarbeitung und Bildverarbeitung

Graphische Datenverarbeitung und Bildverarbeitung Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Shading-Verfahren Graphische DV und BV, Regina Pohle, 22. Shading-Verfahren Einordnung in die Inhalte der Vorlesung Einführung mathematische

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Numerisches Programmieren

Numerisches Programmieren Technische Universität München WS /3 Institut für Informatik Prof Dr Hans-Joachim Bungartz Dipl-Inf Christoph Riesinger Dipl-Inf Dipl-Math Jürgen Bräckle Numerisches Programmieren Programmieraufgabe: Polnominterpolation,

Mehr