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

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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

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

Grundlagen der Parallelisierung

Grundlagen der Parallelisierung Grundlagen der Parallelisierung Philipp Kegel, Sergei Gorlatch AG Parallele und Verteilte Systeme Institut für Informatik Westfälische Wilhelms-Universität Münster 3. Juli 2009 Inhaltsverzeichnis 1 Einführung

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

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

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

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

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

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

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

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

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

C# Programm: Raytracer (3D Renderer)

C# Programm: Raytracer (3D Renderer) C# Programm: Raytracer (3D Renderer) Hiermit verbrachten wir die letzte Einheit in C# des Informatikunterrichtes. Dieser Raytracer ist ein Programm, das nur mit wenigen Informationen über einen Raum, der

Mehr

3D rendering. Introduction and interesting algorithms. PHP Usergroup Dortmund, Dortmund, 2006-12-14. Kore Nordmann

3D rendering. Introduction and interesting algorithms. PHP Usergroup Dortmund, Dortmund, 2006-12-14. Kore Nordmann <kore@php.net> 3D rendering Introduction and interesting algorithms PHP Usergroup Dortmund, Dortmund, 2006-12-14 Kore Nordmann Speaker Kore Nordmann Studies computer science at the University Dortmund

Mehr

Bilddateien. Für die Speicherung von Bilddaten existieren zwei grundsätzlich unterschiedliche Verfahren. Bilder können als

Bilddateien. Für die Speicherung von Bilddaten existieren zwei grundsätzlich unterschiedliche Verfahren. Bilder können als Computerdateien Alle Dateien auf dem Computer, egal ob nun Zeichen (Text), Bilder, Töne, Filme etc abgespeichert wurden, enthalten nur eine Folge von Binärdaten, also Nullen und Einsen. Damit die eigentliche

Mehr

- 3D Modelling & Renderer -

- 3D Modelling & Renderer - Referat zum Thema: Darstellung virtueller Welten - 3D Modelling & Renderer - Gruppe 3: Schilberg, Pfost, Möhle, Mertens Jan Möhle CAD-Programme 1 Begriff Rendern Darstellung virtueller Welten Rendern (von

Mehr

Einfuehrung in OpenGL und Shader

Einfuehrung 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

Mehr

Echtzeit-Raytracing algebraischer Flächen auf der Graphics Processing Unit

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

Mehr

mayasketche.book Seite 58 Dienstag, 18. September 2001 4:27 16 KNUBBELMÄNNCHEN

mayasketche.book Seite 58 Dienstag, 18. September 2001 4:27 16 KNUBBELMÄNNCHEN 1 mayasketche.book Seite 58 Dienstag, 18. September 2001 4:27 16 KNUBBELMÄNNCHEN Wie baue ich eine Figur, die nicht glatt ist wie der typische 3D-Character? Thematik: Modeling, Rendering Verwendete Techniken

Mehr

Visualisierung und Volumenrendering I

Visualisierung und Volumenrendering I Institut für Computervisualistik Universität Koblenz 05.07.2012 Inhaltsverzeichnis 1 Motivation 2 Volumendaten 3 Pipeline 4 Transferfunktionen 5 Gradienten 6 Volumenvisualisierung 7 IVR 8 DVR Wissenschaftliche

Mehr

White Paper. Embedded Treiberframework. Einführung

White Paper. Embedded Treiberframework. Einführung Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Plan für heute. Vorlesungstermine. CG1 & CG2 Vorlesungsthemen. Anwendungsgebiete. Warum Computer Grafik? Computergrafik 1&2 SS 2010

Plan für heute. Vorlesungstermine. CG1 & CG2 Vorlesungsthemen. Anwendungsgebiete. Warum Computer Grafik? Computergrafik 1&2 SS 2010 Plan für heute Computergrafik 1&2 SS 2010 http://www.icg.tu-graz.ac.at/courses/cgcv Organisation der Vorlesung Anwendungen der Computergrafik Konzepte der Computergrafik Display Technologies Prof. Institut

Mehr

Seminar GPU-Programmierung/Parallelverarbeitung

Seminar 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

Mehr

Photon Mapping. Proseminar How to make a P I X A R movie. Inhaltsverzeichnis. Andreas Schmidt 2011

Photon Mapping. Proseminar How to make a P I X A R movie. Inhaltsverzeichnis. Andreas Schmidt 2011 Photon Mapping Proseminar How to make a P I X A R movie Andreas Schmidt 2011 Inhaltsverzeichnis Zusammenfassung...2 Motivation...2 Photon Tracing Pass...3 Aussenden der Photonen...3 Russisches Roulette...3

Mehr

Image Based Lighting High Dynamics Range Rendering in Maya und Mental Ray

Image Based Lighting High Dynamics Range Rendering in Maya und Mental Ray Image Based Lighting High Dynamics Range Rendering in Maya und Mental Ray Image Based Lighting Einleitung Image Based Lighting (IBL) ist ein Beleuchtungs- Verfahren, bei dem keine Standard-Lichtquellen

Mehr

Visualisierung II 2. Volumenvisualisierung

Visualisierung II 2. Volumenvisualisierung Visualisierung II 2. Volumenvisualisierung Vorlesung: Mi, 9:15 10:45, INF 368 532 Prof. Dr. Heike Jänicke http://www.iwr.uni-heidelberg.de/groups/covis/ Inhaltsverzeichnis 1. Daten in Biologie und Medizin

Mehr

MATLAB-Automatisierung von Dymola- Simulationen und Ergebnisauswertung Holger Dittus. Modelica User Group BaWü, Stuttgart, 13.06.

MATLAB-Automatisierung von Dymola- Simulationen und Ergebnisauswertung Holger Dittus. Modelica User Group BaWü, Stuttgart, 13.06. www.dlr.de Folie 1 MATLAB-Automatisierung von Dymola- Simulationen und Ergebnisauswertung Holger Dittus Modelica User Group BaWü, Stuttgart, 13.06.2013 www.dlr.de Folie 2 Inhalt Motivation Dymola.mos-Skripte

Mehr

Grakkarten - Programmierung

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

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013

Mehr

Erwin Grüner 15.12.2005

Erwin Grüner 15.12.2005 FB Psychologie Uni Marburg 15.12.2005 Themenübersicht Mit Hilfe der Funktionen runif(), rnorm() usw. kann man (Pseudo-) erzeugen. Darüber hinaus gibt es in R noch zwei weitere interessante Zufallsfunktionen:

Mehr

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Multicore Herausforderungen an das Software-Engineering Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Inhalt _ Motivation _ Herausforderung 1: Hardware _ Herausforderung 2: Software-Partitionierung

Mehr

Modellierung von Reflexionseigenschaften verschiedener Stoffe für interaktives Echtzeit-Rendering

Modellierung von Reflexionseigenschaften verschiedener Stoffe für interaktives Echtzeit-Rendering HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR INFORMATIK VISUAL COMPUTING Diplomarbeit Modellierung von Reflexionseigenschaften verschiedener Stoffe für interaktives Echtzeit-Rendering Bojko Heinrich 4.

Mehr

Multimedia/Graphics Libraries & Systems

Multimedia/Graphics Libraries & Systems Multimedia/Graphics Libraries & Systems Einführung und Themenvorstellung Prof. Dr. Jürgen Döllner Juri Engel, Tassilo Glander, Martin Beck, Stefan Buschmann, Matthias Trapp Ziele des Seminars 2 Analyse,

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Stereoskopisches 3D Gaming

Stereoskopisches 3D Gaming PRIME Symposium 17.02.2011 BERLIN Stereoskopisches 3D Gaming Jonas Schild Lehrstuhl für Medieninformatik und Entertainment Computing Universität Duisburg Essen Lehrstuhl Medieninformatik Entertainment

Mehr

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3 Ludwig-Maximilians-Universität München Institut für Informatik Lehrstuhl für Mobile und Verteilte Systeme Prof. Dr. Claudia Linnhoff-Popien Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Die Windows Workflow Foundation in Microsoft.NET 3.0

Die Windows Workflow Foundation in Microsoft.NET 3.0 Die Windows Workflow Foundation in Microsoft.NET 3.0 Klaus Rohe (klrohe@microsoft.com) Developer Platform & Strategy Group Microsoft Deutschland GmbH Agenda Was ist Windows Workflow Foundation? Microsoft

Mehr

Tooldemo: Soot. Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Von Kim Maurice Nuspl

Tooldemo: Soot. Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Von Kim Maurice Nuspl Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Tooldemo: Soot (http://www.sable.mcgill.ca/soot/) Von Kim Maurice Nuspl Gliederung: Was ist Soot? Eclipse Plugin Grundlagen

Mehr

Autodesk AutoCAD 2013. 3D-Konstruktion. Martin Harbauer. 1. Ausgabe, August 2012 AUC20133D

Autodesk AutoCAD 2013. 3D-Konstruktion. Martin Harbauer. 1. Ausgabe, August 2012 AUC20133D Autodesk AutoCAD 2013 Martin Harbauer 3D-Konstruktion 1. Ausgabe, August 2012 AUC20133D Rendern 14 14.5 Material Eine der wichtigsten und umfangreichsten Variationsmöglichkeiten beim Rendern liegt in der

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

Mehr

Dokumentation zum Projekt Mail-Adapter in SAP PI. 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696

Dokumentation zum Projekt Mail-Adapter in SAP PI. 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696 Dokumentation zum Projekt Mail-Adapter in SAP PI 17.01.2011 Sinkwitz, Sven 519707 Theel, Thomas 519696 Inhalt 1. Einleitung... 2 2. Vorgehen... 3 1. Datentyp für die Mail einrichten... 3 2. Message Typen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

2 Der Schnelleinstieg *

2 Der Schnelleinstieg * 7 2 Der Schnelleinstieg * Eine Programmiersprache können Sie auf verschiedene Art und Weise lernen. Sie können sich zuerst mit den Konzepten befassen und anschließend mit der Praxis oder umgekehrt. Damit

Mehr

COMPUTERGRAFIK 2014 UNIVERSITÄT OSNABRÜCK. Niels Meyering

COMPUTERGRAFIK 2014 UNIVERSITÄT OSNABRÜCK. Niels Meyering COMPUTERGRAFIK 2014 UNIVERSITÄT OSNABRÜCK Niels Meyering 0 WAS IST BLENDER? 3D-Grafik-Software Open Source (GPL-lizenziert) FEATURES Modellierung Animation Rendering (zwei eingebaute Renderer) Compositing

Mehr

L 371/128 DE Amtsblatt der Europäischen Union 30.12.2014

L 371/128 DE Amtsblatt der Europäischen Union 30.12.2014 L 371/128 DE Amtsblatt der Europäischen Union 30.12.2014 KATEGORIE 4 RECHNER Anmerkung 1: Rechner, verwandte Geräte und Software für Telekommunikations- oder Local Area Network - Funktionen sind auch nach

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

Mehr

Gestaltung von App-Oberflächen (UI) mit Core Animation

Gestaltung von App-Oberflächen (UI) mit Core Animation Gestaltung von App-Oberflächen (UI) mit Core Animation iwelt AG 2013, 21. März 2013 Agenda Vorstellung der iwelt AG Animierte Benutzeroberflächen Warum? Kenntnisse und Werkzeuge Core Animation ein Überblick

Mehr

Effiziente Java Programmierung

Effiziente Java Programmierung Effiziente Java Programmierung Seminar Implementierung moderner virtueller Maschinen am Beispiel von Java SS 2009 von Reinhard Klaus Losse 20. Mai 2009 Gliederung Definition Effizienz Werkzeuge zum Messen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Spezifikationen und Voraussetzung

Spezifikationen und Voraussetzung Projekt IGH DataExpert Paynet Adapter Spezifikationen Voraussetzungen Datum : 21.07.08 Version : 1.0.0.2 21.07.2008 Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung... 3 2 Architektur... 3 2.1 Grundsätze

Mehr

1 Proseminar: Konzepte von Betriebssystem-Komponenten. Thema: Server OS AS/400 Referend: Sand Rainer. Server OS - AS/400

1 Proseminar: Konzepte von Betriebssystem-Komponenten. Thema: Server OS AS/400 Referend: Sand Rainer. Server OS - AS/400 1 Proseminar: Konzepte von Betriebssystem-Komponenten Server OS - AS/400 Gliederung Was ist eine AS/400? Wie ist OS/400 aufgebaut? Was kann eine AS/400? Bsp.: Logische Partitionierung 2 Proseminar: Konzepte

Mehr

Punktbasiertes Rendering mit modernen Grafikkarten

Punktbasiertes Rendering mit modernen Grafikkarten Punktbasiertes Rendering mit modernen Grafikkarten Diplomarbeit im Fach Informatik vorgelegt von Carsten Dachsbacher geb. am 1. Dezember 1976 in Neuendettelsau angefertigt am Institut für Informatik Lehrstuhl

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

Mehr

Einführung in PROLOG. Christian Stocker

Einführung in PROLOG. Christian Stocker Einführung in PROLOG Christian Stocker Inhalt Was ist PROLOG? Der PROLOG- Interpreter Welcher Interpreter? SWI-Prolog Syntax Einführung Fakten, Regeln, Anfragen Operatoren Rekursion Listen Cut Funktionsweise

Mehr

Spezifikationen und Voraussetzung

Spezifikationen und Voraussetzung Projekt IGH DataExpert Yellowbill Adapter Spezifikationen Voraussetzungen Datum : 22.08.2013 Version : 1.0.0.2 22.08.2013 Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung...3 2 Architektur...3 2.1 Grundsätze

Mehr

Version 0.3. Installation von MinGW und Eclipse CDT

Version 0.3. Installation von MinGW und Eclipse CDT Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.

Mehr

3D Rendering unter Verwendung von Shadern

3D Rendering unter Verwendung von Shadern Gymnasium Ottobrunn Kollegstufenjahrgang 2006/2008 FACHARBEIT aus dem SEMINARFACH INFORMATIK Im Schuljahr 2006/2007 3D Rendering unter Verwendung von Shadern Vorgelegt von Simon Reiger Haidgraben 85 85521

Mehr

Kurzeinführung LABTALK

Kurzeinführung LABTALK Kurzeinführung LABTALK Mit der Interpreter-Sprache LabTalk, die von ORIGIN zur Verfügung gestellt wird, können bequem Datenmanipulationen sowie Zugriffe direkt auf das Programm (Veränderungen der Oberfläche,

Mehr

Messdaten auswerten und visualisieren 5 Tipps, die passende Darstellungstechnik für ein Messsystem zu finden

Messdaten auswerten und visualisieren 5 Tipps, die passende Darstellungstechnik für ein Messsystem zu finden Messdaten auswerten und visualisieren 5 Tipps, die passende Darstellungstechnik für ein Messsystem zu finden 27.05.13 Autor / Redakteur: Nach Unterlagen von National Instruments / Hendrik Härter Messdaten

Mehr

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 UNIVERSITÄT LEIPZIG Enterprise Computing Einführung in das Betriebssystem z/os Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 Verarbeitungsgrundlagen Teil 2 Virtual Storage el0100 copyright

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen WEITER BLICKEN. MEHR ERKENNEN. BESSER ENTSCHEIDEN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN VERSION 1.0 OPTIMIERUNG VON ABFRAGEN IN MS SQL

Mehr

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Programmierung. Programme, Compiler, virtuelle Maschinen, Java Programmierung Programme, Compiler, virtuelle Maschinen, Java Programme Ein Programm ist eine Folge von Anweisungen, die einem Computer sagen, was er tun soll tuwas.c for(int i=0; i=0; i

Mehr

Aktuelle Trends und Herausforderungen in der Finite-Elemente-Simulation

Aktuelle Trends und Herausforderungen in der Finite-Elemente-Simulation Aktuelle Trends und Herausforderungen in der Finite-Elemente-Simulation Kai Diethelm GNS Gesellschaft für numerische Simulation mbh Braunschweig engineering software development Folie 1 Überblick Vorstellung

Mehr

Programmiersprachen und Programmierkonzepte

Programmiersprachen und Programmierkonzepte Programmiersprachen und Programmierkonzepte Inhalt Programmiersprachen- Entwicklung Programmiersprachen und Programmierparadigmen Die Geschichte der Programmiersprachen Anfänge vor 200 Jahren Programmierbare

Mehr

Computer Vision: 3D-Geometrie. D. Schlesinger () Computer Vision: 3D-Geometrie 1 / 17

Computer Vision: 3D-Geometrie. D. Schlesinger () Computer Vision: 3D-Geometrie 1 / 17 Computer Vision: 3D-Geometrie D. Schlesinger () Computer Vision: 3D-Geometrie 1 / 17 Lochkamera Modell C Projektionszentrum, Optische Achse, Bildebene, P Hauptpunkt (optische Achse kreuzt die Bildebene),

Mehr

Hintergrundkulisse bezeichnet den Teil synthetisierter Darstellungen virtueller 3D Szenen, der vom Betrachter aus als umschließende Umgebung aller

Hintergrundkulisse bezeichnet den Teil synthetisierter Darstellungen virtueller 3D Szenen, der vom Betrachter aus als umschließende Umgebung aller Hintergrundkulisse bezeichnet den Teil synthetisierter Darstellungen virtueller 3D Szenen, der vom Betrachter aus als umschließende Umgebung aller Szenenobjekte wahrgenommen wird. Abwägen zwischen: empfundener

Mehr

Färben, texturieren und rendern in Solid Edge

Färben, texturieren und rendern in Solid Edge Färben, texturieren und rendern in Solid Edge Man kann den Objekten in Solid Edge Farben geben, transparent oder opak und Texturen. Das sind Bilder die auf die Oberflächen aufgelegt werden. Dabei bekommt

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Computergrafik Bilder, Grafiken, Zeichnungen etc., die mithilfe von Computern hergestellt oder bearbeitet werden, bezeichnet man allgemein als Computergrafiken. Früher wurde streng zwischen Computergrafik

Mehr

Netzwerk Technologien in LabVIEW

Netzwerk Technologien in LabVIEW Netzwerk Technologien in LabVIEW von Dirk Wieprecht NI Germany Hier sind wir: Agenda Agenda Bedeutung des Ethernet für die Messtechnik Ethernet-basierende Technologien in LabVIEW Low Level- TCP/IP Objekt

Mehr