(9) Modernes OpenGL. Vorlesung Computergraphik III S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU
|
|
- Gotthilf Fuchs
- vor 7 Jahren
- Abrufe
Transkript
1 (9) Modernes OpenGL Vorlesung Computergraphik III S. Müller
2 OpenGL Shading Language (GLSL) Teil des OpenGL 2.0 Standards Syntax orientiert sich an C / C++ Funktionen Einfache Datentypen (float, int, bool) Strukturen Arrays Bedingungen Schleifen Aber: Keine Zeiger Beliebige Länge der Shader-Programme S. Müller - 2 -
3 NVIDIA Im Laufe der Zeit wurde die dedizierte Hardware (2D/3D) zu Gunsten einer unified shader Architektur aufgegeben Den Kern bilden dabei Streaming-Prozessoren (SM) Diese Anforderungen kamen u.a. auch aus dem GPGPU-Bereich (General Purpose GPU) und HPC-Bereich (high performance computing) S. Müller - 3 -
4 Beispiel: Kepler SMX: 192 single precision CUDA cores, 64 double precision units, 32 special function units (SFU), and 32 load/store units (LD/ST). UNIVERSITÄT Quelle: Nvidia S. Müller - 4 -
5 OpenGL 3.3 OpenGL 3.0 (2008) OpenGL Shading Language 1.30 Entfernen von Altlasten (glbegin / glend, Fixed-Function-Pipeline, T&L etc.) erstmals weitestgehender Verzicht auf explizite Abwärtskompatibilität OpenGL 3.1 (2009) weiteres Entfernen von Altlasten (z. B. Fixed-Function-Optionen, Direct-Mode und Color-Index- Mode), diese sind nur noch über die optionale compatibility extension verfügbar OpenGL Shading Language 1.40 OpenGL 3.2 (2009) OpenGL Shading Language 1.50 Geometry-Shader werden bei Programmierung von Grafikpipelines jetzt auch direkt im OpenGL-Kern unterstützt OpenGL 3.3 (2010) OpenGL Shading Language 3.30 S. Müller - 5 -
6 GLFW und GLEW S. Müller - 6 -
7 GLFW GLUT wird leider weiterhin nicht mehr unterstützt (Alternative freeglut) Wir verwenden daher ab jetzt glfw, der genauso einfach ist S. Müller - 7 -
8 GLFW Fensterkommandos void glfwsetwindowtitle( const char *title ) void glfwsetwindowsize( int width, int height ) void glfwsetwindowpos( int x, int y ) Keyboard Pull: int glfwgetkey( int key ) liefert 1 wenn Taste key gedrückt, sonst 0 Callback: void glfwsetkeycallback( GLFWkeyfun cbfun ) wie bei GLUT Maus Pull: void glfwgetmousepos( int *x, int *y )liefert Mausposition CB: void glfwsetmouseposcallback( GLFWmouseposfun cbfun )wie bei GLUT Pull: int glfwgetmousebutton( int button )liefert Status der Mausknöpfe CB: void glfwsetmousebuttoncallback( GLFWmousebuttonfun fun )wie bei GLUT Sonstiges Mausrad, glfwgettime, glfwsleep, Texture Loading, Multi-thraeding S. Müller - 8 -
9 Simples Programm #include <glew.h> #include <GL/glfw.h>... int main(int argc, char** argv) { glfwinit(); glfwopenwindow(800,600,8,8,8,0,24,0,glfw_window); Extension Wrangler } glewinit(); glclearcolor(0, 0, 0, 1); while(glfw_opened) { glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT);... glfwswapbuffers(); } glfwterminate(); Pull-Modus S. Müller - 9 -
10 Die guten alten Zeiten 1 void init() { glclearcolor(1,1,1,1); glmatrixmode(gl_projection); glloadidentity(); gluperspective( ); glmatrixmode(gl_modelview); } void terrain() { glbegin(gl_polygon); glvertex3f(x, y, z); glnormal3f( ); ; glend(); } void display() { glloadidentity(); glulookat( ); glrotate( ) glclear( _BIT GL_DEPTH ); glcolor3f(1.0,1.0,1.0); draw_terrain(); glutswapbuffers(); } S. Müller
11 Die guten alten Zeiten 2 Material GLfloat mat_emission[] = { }; GLfloat mat_ambient[] = { }; GLfloat mat_diffuse[] = { }; GLfloat mat_specular[] = { }; glmaterialfv(gl_front, ); glmaterialfv(,gl_ambient, ); glmaterialfv(,mat_diffuse); Licht GLfloat ambient[] = { }; GLfloat diffuse[] = { }; GLfloat specular[] = { }; gllightfv(gl_light0, GL_POSITION, ); gllightfv(gl_light0, GL_AMBIENT, ); gllightfv(gl_light0, GL_DIFFUSE, ); gllightmodelfv(gl_light_model_ambient, lmodel_ambient); gllightmodelfv(gl_light_model_local_viewer, local_view); gllightmodeli(gl_light_model_two_side, GL_FALSE); glenable(gl_lighting); glenable(gl_light0); S. Müller
12 Vertex Attribute Kein glbegin glend mehr void terrain() { glbegin(gl_polygon); glvertex3f(x, y, z); glvertex3f( ); ; glend(); } S. Müller
13 Vertex Attributes Da GL_Begin GL_End (immediate mode) zu unperformant sind, werden für die Daten Objekte angelegt, wie wir sie von den Texturen kennen. Die Vertices bestehen aus Attributen (Position, Normale, Farbe etc.) mit 1-4 Werten pro Eintrag Diese werden jeweils in Arrays (ARRAY_BUFFER) abgelegt, auch Buffer-Objekte genannt. Entsprechend hat sich für die Liste der Positionen eines Objekts auch der Name Vertex-Buffer-Objekt etabliert S. Müller
14 Attribute: nicht indizierte Liste GLuint VBO; size stride Glfloat Vertices[] = { -0.4, -0.4, -0.4, 0.4, 0.4, 0.4 }; glgenbuffers(1, &VBO); glbindbuffer(gl_array_buffer, VBO); glbufferdata(gl_array_buffer, sizeof(vertices), Vertices, GL_STATIC_DRAW); glvertexattribpointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(0); //Renderschleife gldrawarrays(gl_triangle_strip, 0, 3); void terrain() { glbegin(gl_polygon); glvertex3f(x, y, z); glvertex3f( ); ; glend(); } S. Müller
15 Indizierte Liste GLuint VBO; GLuint IBO; GLfloat Vertices[] = { -0.4, -0.4, -0.4, 0.4, 0.4, 0.4 }; GLuint Indices[] = {0, 1, 2}; glgenbuffers(1, &VBO); glbindbuffer(gl_array_buffer, VBO); glbufferdata(gl_array_buffer, sizeof(vertices), Vertices, GL_STATIC_DRAW); glvertexattribpointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(0); glgenbuffers(1, &IBO); glbindbuffer(gl_element_array_buffer, IBO); glbufferdata(gl_element_array_buffer,sizeof(indices),indices,gl_static_draw); //Renderschleife gldrawelements(gl_triangles, 3, GL_UNSIGNED_INT, 0); S. Müller
16 Mehrere Attribute GLuint BufferObjectHandles[2]; GLfloat Vertices[] = { -0.4, -0.4, -0.4, 0.4, 0.4, 0.4 }; GLfloat Colours[] = { 1, 0, 0, 0, 1, 0, 0, 0, 1}; glgenbuffers(2, BufferObjectHandles); glbindbuffer(gl_array_buffer, BufferObjectHandles[0]); glbufferdata(gl_array_buffer, sizeof(vertices), Vertices, GL_STATIC_DRAW); glvertexattribpointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(0); glbindbuffer(gl_array_buffer, BufferObjectHandles[1]); glbufferdata(gl_array_buffer, sizeof(colours), Colours, GL_STATIC_DRAW); glvertexattribpointer(1, 3, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(1); //Renderschleife gldrawarrays(gl_triangle_strip, 0, 3); S. Müller
17 Transformationen Keine OpenGL Matrizen mehr void display() { glmatrixmode(gl_projection); glloadidentity(); gluperspective( ); } glmatrixmode(gl_modelview); glloadidentity(); glulookat( ); glrotate( ) S. Müller
18 glm (OpenGL Mathematics) Da es keine OpenGL Matrix Kommandos mehr gibt, brauchen wir eine Mathe-Lib Als Mathe-Lib nehmen wir glm (OpenGL Mathematics), die sich an GLSL orientiert. Dies ist eine include-lib, d.h. dass man je nach Verwendung von Kommandos auch die entsprechen.h Datei includen muss. Bsp. Generell: glm.hpp gtc/matrix_transform.hpp Matrixtransformationen gtc/matrix_inverse.hpp Matrixinvertierung glm/gtc/type_ptr.hpp Sinnvoll, um glm-vektoren und - Matrizen als GLSL-Parameter zu übergeben vec3 avector(3); mat4 somematrix(1.0); gluniform3fv(, value_ptr(avector)); gluniformmatrix4fv(, value_ptr(somematrix)); S. Müller
19 glm #include <glm/glm.hpp> // alles notwendige #include <glm/gtc/matrix_transform.hpp> using namespace glm; mat4(1.0f); //LoadIdentity Multiplikation von rechts mat4 modelmat = rotate(mat4(1.0f), degrees(angle), vec3(1.0f,1.0f,0.0f)); mat4 scalemat = scale(mat4(1.0f), vec3(2.0f,1.0f,1.0f)); mat4 transmat = translate(mat4(1.0f), vec3(2.0f,1.0f,1.0f)); mat4 = rotate(transmat, degrees(angle), vec3(2.0f,1.0f,1.0f)); = T R mat4 frustum(float left, float right, float bottom, float top, float znear, float zfar); mat4 ortho(float left, float right, float bottom, float top, float znear, float zfar); mat4 lookat( vec3 eye, vec3 center, vec3 up); mat4 perspective( float fovy, float aspect, float znear, float zfar); S. Müller
20 Übergabe der Vertex-Attribute an Shader Keine Fixed Function Pipeline mehr (Ohne Shader kein Rendering) S. Müller
21 Einfache Variante (Variante 1) Im Vertex-Shader werden die Stream-Daten auf eine in - Variable abgebildet. Durch die Reihenfolge in der Shaderprogrammierung ergibt sich eine default-location (Index). Auf der OpenGL-Seite muss man den jeweiligen Buffer nur der jeweilige Location zuweisen. Diese entspricht auch dem Index zum Einschalten des Attributes Wir kennen die Location im Shader location 0 1 #version 330 //Vertex-Shader in vec2 position; in vec4 colour; out vec4 OutColour; void main(){ gl_position = position; OutColour = colour; glbindbuffer(gl_array_buffer, vertexbufferhandle); glvertexattribpointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(0); } S. Müller
22 Variante 2: Eigenes Layout Wir setzen die Location im Shader #version 330 //Vertex-Shader layout (location = 4) in vec2 position; layout (location = 7) in vec4 colour; out vec4 OutColour; void main(){ } gl_position = position; OutColour = colour; OpenGL glbindbuffer(gl_array_buffer, vertexbufferhandle); glvertexattribpointer(4, 2, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(4); glbindbuffer(gl_array_buffer, colourbufferhandle); glvertexattribpointer(7, 3, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(7); S. Müller
23 Wir suchen die Variable im Shader und definieren eine Location Variante 3: Auf OpenGL-Seite #version 330 //Vertex-Shader in vec4 position; in vec4 colour; out vec4 OutColour; OpenGL glbindattriblocation( programhandle, 5, "position"); glbindattriblocation( programhandle, 9, "colour"); gllinkprogram(programhandle); Wichtig: vor dem Linken! glbindbuffer(gl_array_buffer, vertexbufferhandle); glvertexattribpointer(5, 2, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(5); glbindbuffer(gl_array_buffer, colourbufferhandle); glvertexattribpointer(9, 3, GL_FLOAT, GL_FALSE, 0, 0); glenablevertexattribarray(9); S. Müller
24 Variablen im/an den Shader S. Müller
25 Built-In Variablen Es gibt eine Reihe von vordefinierten input- und output- Variablen. Vertex-Shader in int gl_vertexid; out vec4 gl_position; Fragment-Shader in vec4 gl_fragcoord; in int gl_sampleid; out vec4 gl_fragcolor Genaue Aufstellung: #version 330 //Vertex in vec4 position; void main(){ gl_position = position; } #version 330 //Fragment void main(){ gl_fragcolor = vec4(1,1,0,1); } S. Müller
26 Uniform Variablen Neben den Stream-Werten (pro Vertex bzw. pro Fragment) kann man dem Shader noch uniforme (konstante) Variablen zuweisen #version 330 //Vertex-Shader in vec4 position; uniform vec4 colour; out vec4 OutColour; void main(){ gl_position = position; OutColour = colour; } GLuint unifcolourhandle = glgetuniformlocation( progrhandle, "colour"); GLfloat blue[] = { 0, 0, 1, 1}; gluniform4fv( unifcolourhandle, 1, blue); S. Müller
27 OpenGL Pipeline (Vertex-Shader) #version 330 //Vertex in vec4 positionattribute; in vec4 normalattribute; uniform mat4 uniformmodel; uniform mat4 uniformview; uniform mat4 uniformnormal; uniform mat4 uniformprojection; void main(){ vec4 modelviewposition = uniformview * uniformmodel * positionattribute; vec3 passnormal = normalize((uniformnormal * normalattribute).xyz); gl_position = uniformprojection * modelviewposition; } S. Müller
28 OpenGL Pipeline (Appl.) Gluint ModelHandle = glgetuniformlocation(programhandle, "uniformmodel"); Gluint ViewHandle = glgetuniformlocation(programhandle, "uniformview"); Gluint NormalHandle = glgetuniformlocation(programhandle, "uniformnormal"); Gluint ProjHandle = glgetuniformlocation(programhandle, "uniformprojection"); mat4 modelmatrix = rotate(mat4(1.0f), degrees(angle), vec3(1.0f,1.0f,0.0f)); gluniformmatrix4fv( ModelHandle, 1, GL_FALSE, value_ptr(modelmatrix)); mat4 viewmatrix = lookat(vec3(0.0f,2.0f,3.0f), vec3(0.0f,0.0f,0.0f), vec3(0.0f,1.0f,0.0f)); gluniformmatrix4fv(viewhandle, 1, GL_FALSE, value_ptr(viewmatrix)); mat4 projectionmatrix = perspective(60.0f, 4.0f / 3.0f, 0.1f, 100.f); gluniformmatrix4fv(projhandle, 1, GL_FALSE, value_ptr(projectionmatrix)); mat4 normalmatrix = transpose(inverse(viewmatrix * modelmatrix)); gluniformmatrix4fv(normalhandle, 1, GL_FALSE, value_ptr(normalmatrix)); } S. Müller
29 Framebuffer Objekte S. Müller
30 Framebufferobjects (FBOs) Statt in den Framebuffer direkt zu rendern, kann man Texturen attachen, in die gerendert werden soll (render to texture) Ein Framebuffer-Objekt kann mehrere Rendering-Ziele beinhalten - GL_COLOR_ATTACHMENT0 - GL_COLOR_ATTACHMENTn - GL_DEPTH_ATTACHMENT - GL_STENCIL_ATTACHMENT - Default Framebuffer wird vom Windows-Manager eingerichtet (Color, Depth und Stencil). S. Müller
31 FBOs Wie beim Vertex-Shader können auch dem FragmentShader Objekte zugeordnet werden Statt in den Framebuffer direkt zu rendern, kann man Texturen attachen, in die gerendert werden soll (render to texture) Ein Framebuffer-Objekt kann mehrere Rendering-Ziele beinhalten - GL_COLOR_ATTACHMENT0 - GL_COLOR_ATTACHMENTn - GL_DEPTH_ATTACHMENT - GL_STENCIL_ATTACHMENT - Default Framebuffer wird vom Windows-Manager eingerichtet (Color, Depth und Stencil). S. Müller
32 FBOs FBO generieren und binden glgenframebuffers( ) glbindframebuffer( ) Texturobj anlegen + binden glgentextures( ); glbindtexture( ); Textur anlegen und Parameter setzen glteximage2d( ); gltexparameteri( ); //Min/Mag-Filter wrap_s, wrap_t Textur an FBO attachen glframebuffertexture2d( ); Parameter legen fest, als was attached wird GL_COLOR_ATTACHMENT0 GL_COLOR_ATTACHMENTn GL_DEPTH_ATTACHMENT GL_STENCIL_ATTACHMENT Wichtig: Legt man eigenes FBO an, gehen die Defaults verloren. Also ohne eigenes Depth- Attachement gibt es keinen Sichtbarkeitstest. S. Müller
33 Beispiel: Shadowmap //creation of the framebuffer object GLuint framebufferhandle = 0; glgenframebuffers(1, &framebufferhandle); glbindframebuffer(gl_framebuffer, framebufferhandle); //creation of the depth texture GLuint depthtexturehandle; glgentextures(1, &depthtexturehandle); glbindtexture(gl_texture_2d, depthtexturehandle); glteximage2d(gl_texture_2d, 0,GL_DEPTH_COMPONENT16, 1024, 1024, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0); gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_NEAREST); gltexparameteri(gl_texture_2d, GL_TEXTURE_MIN_FILTER, GL_NEAREST); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); //bind the depth texture to the framebuffer glframebuffertexture2d( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthtexturehandle, 0); gldrawbuffer(gl_none); // No color buffer is drawn to. S. Müller
34 ShadowMap Hauptschleife while //bind framebuffer and draw on it glbindframebuffer(gl_framebuffer, framebufferhandle); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); glviewport(0,0,1024,1024); gluseprogram(depthwriteprogramhandle); //use shader set 1 gldrawarrays( ); //draw scene from light source //unbind the framebuffer object, render into the window instead glbindframebuffer(gl_framebuffer, 0); glviewport(0,0,800,600); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); gluseprogram(shadowingprogramhandle); //use shader set 2 //bind the depth texture glbindtexture(gl_texture_2d, depthtexturehandle); gldrawarrays( ); //draw scene from camera glfwswapbuffers(); } S. Müller
35 Shader Set 1 (Tiefenmap generieren) Vertex Shader in vec3 pos; uniform mat4 Light_MVP; void main(){ } gl_position = Light_MVP * pos; Fragment Shader out float fragmentdepth; void main(){ } fragmentdepth = gl_fragcoord.z; Built-In Variable S. Müller
36 Shader Set Vertex Shader in vec3 pos; uniform mat4 MVP; uniform mat4 Light_MVP; out vec4 pos_lks; void main(){ } gl_position = MVP * pos; pos_lks = * Light_MVP * pos; Fragment Shader in vec4 pos_lks; uniform sampler2d tex; void main(){ } vec3 p = pos_lks.xyz / pos_lks.w; float depth = texture( tex, vec2(p.s,p.t)).x; if (depth < (p.z )) else //Schatten //Kein Schatten S. Müller
37 Computer Shader Eine kleine Einführung Jochen Hunz Folien angelehnt an: Mark Kilgard, Nvidia Corporation, OpenGL 4.3 and Beyond SIGGRAPH Asia 2012 Mike Bailey, Oregon State University S. Müller
38 OpenGL 4.3 Compute Shader Grid-oriented Single Program, Multiple Data (SPMD) execution model Ermöglicht beliebige Berechnungen auf GPU Raytracing Partikel Physik Fluide Filterung... Allgemein parallelisierbare Algorithmen Unabhängig von bekannten Shadern dispatchbar Kann Buffer, Texture Images, schreiben
39 Single Program, Multiple Data (SPMD) execution model Threads in Groups in Dispatches Jeder Thread hat eigene InvocationID gl_globalinvocationid = gl_workgroupid * gl_workgroupsize + gl_localinvocationid GlobalInvocationID sagt Thread wer bin ich? Super für z.b. Array / Buffer Indizierung Invocation (thread) work group dispatch
40 Einfaches Partikel-System: Compute Shader #version 430 layout(std140,binding=0) buffer Pos { vec4 Positions []; } layout(std140,binding=1) buffer Vel { vec4 Velocities[]; } Eingabe-Buffer const float dt = ; const vec3 gravity = vec3(0.0, -9.8, 0.0); Zeit und Schwerkraft layout( local_size_x = 64, local_size_y = 1, local_size_z = 1 ) in; void main() { uint gid = gl_globalinvocationid.x; vec3 p = Positions[gid].xyz; vec3 v = Velocities[gid].xyz; vec3 pp = p + v * dt * dt * dt * gravity; vec3 vp = v + gravity * dt; CheckAndHandleCollisions(); Positions[gid].xyz = pp; Velocities[gid].xyz = vp; } 64 Threads pro Gruppe work group p' = p + v * t + 0.5G * t² v' = v + G * t Beschreibe die Eingabe- Buffer mit neuen Werten
41 Einfaches Partikel-System: Anwendung 1) Buffer für Positions und Velocities initialisieren und füllen glgenbuffers, glbufferdata, glmapbufferrange 2) Buffer an layout binden glbindbufferbase(gl_shader_storage_buffer, 0, positionbuffer); glbindbufferbase(gl_shader_storage_buffer, 1, velocitybuffer); 3) Compute Shader schreiben, laden, attachen, linken GLuint compute_shader = glcreateshader(gl_compute_shader); glcreateprogram/glattachshader/gllinkprogram Nicht mit Render- 4) Programm benutzen Shadern kombinieren gluseprogram(compute_shader); 5) Dispatchen an beliebiger Stelle gldispatchcompute(anzahlpartikel/64,1,1); Beispiel 1024 Partikel: Dispatche 1024 / 64 = 16 Workgroups Jede Workgroup hat 64 Threads (siehe Folie vorher) Insgesamt also 16 * 64 = 1024 Threads => 1 Thread/Partikel 6) Partikel zeichnen gluseprogram(render_shader); glenablevertexattribarray, glbindbuffer, glvertexattribpointer gldrawarrays gldisablevertexattribarray dispatch Gleiche Buffer, z.b. positionbuffer
42
43
(5) GPU Einführung. Vorlesung Computergraphik II Stefan Müller. Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich KOBLENZ LANDAU
(5) GPU Einführung Vorlesung Computergraphik II Stefan Müller Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich Die Rendering-Pipeline Rasterisierung (2D) Zerlege den 2D-Polygonzug in Pixel Pro
MehrEinführung in GLSL - OpenGL Shading Language. Athanasios Karamalis
Einführung in GLSL - OpenGL Shading Language Athanasios Karamalis Allgemein zur Shader-Programmierung Vor 2001 konnte nur die sogenannte Fixed Functionality der Graphik API und Graphikkarte verwendet werden
MehrComputergrafik II. OpenGL Einführung
Computergrafik II OpenGL Einführung OpenGL Rein prozedurales Interface Keine direkten Klassen/Objekte Verwaltung von OpenGL-Strukturen mittels Identifier Explizites funktionales Erzeugen/Löschen von Objekten
MehrPraktikum Computergrafik
Praktikum Computergrafik Steven Schlegel Abteilung für Bild- und Signalverarbeitung Betreuer: Steven Schlegel (schlegel@informatik.uni-leipzig.de) Einführung in OpenGL und GLSL OpenGL OpenGL (Open Graphics
MehrUIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern
ios Rendering ios Architektur UIKit (Cocoa Touch) A composable, reusable, declarative, real-world inspired animation, and interaction system Framework für ios Apps Objective C Model View Controller Pattern
MehrI - Phone 3D 3D Spieleentwicklung für's I-Phone
I - Phone 3D 3D Spielentwicklung für das I-Phone Gliederung Allgemein Open GL ES Arbeitsschritte / 3D Grafik Ein Spiel entsteht Ein Beispiel Vorgehensweise Allgemein Erzeugen von Modellen Komplexe Modelle
MehrGeneral Purpose Computation on GPUs
General Purpose Computation on GPUs Matthias Schneider, Robert Grimm Universität Erlangen-Nürnberg {matthias.schneider, robert.grimm}@informatik.stud.uni-erlangen.de M. Schneider, R. Grimm 1 Übersicht
MehrSoftwareprojekt Spieleentwicklung
Softwareprojekt Spieleentwicklung Prototyp I (2D) Prototyp II (3D) Softwareprojekt 12.04. 19.04. 26.04. 03.05. 31.05. Meilenstein I 28.06. Meilenstein II Prof. Holger Theisel, Tobias Günther, OvGU Magdeburg
MehrGL ShadingLanguage(GLSL)
Was ist GLSL C/Java ähnliche Hochsprache zur Erstellung von GPU-basierter Software (Shader) An die Open Graphics Library (OpenGL) gebunden Darstellung komplexer 2D- und 3D-Szenen auf Basis von Echtzeitberechnungen
MehrEinführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg
GPU-Versuch andreas.schaefer@cs.fau.de Friedrich-Alexander-Universität Erlangen-Nürnberg Praktikum Parallele Rechnerarchitekturen SS2014 Outline 1 Einführung 2 Outlook 1 Einführung 2 Eine kurze Geschichte
MehrProseminar Computergrafik: OpenGL. Marcel Heckel
Proseminar Computergrafik: OpenGL Marcel Heckel 23.5.26 . Inhalt 1. Allgemein Was ist OpenGL Geschichte 2. Etwas 3D-Mathematik Das Koordinatensystem Vektoren Matrizen 3. Grundlegendes zu OpenGL Arbeitsweise
MehrGrafikprogrammierung (Echtzeitrendering)
(Echtzeitrendering) erfordert Unterstützung für beide Aufgaben der Computergrafik Geometrische Modellierung Datenstrukturen für geometrische Modelle Schnittstellen für deren Kombination Bildsynthese Rendering
MehrEinführung in OpenGL. Einführung in OpenGL
OpenGL: Einführung/Standard - OpenGL (Open Graphics Library) ist ein Standard für 3D Rendering und 3D Hardware-Beschleunigung - OpenGL läuft unter Windows, MacOS, Linux, Unix, - Website: http://opengl.org
MehrDirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006
DirectX und OpenGL Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006 2 Inhalt Einleitung Übersicht DirectX und Komponenten Übersicht OpenGL Sprachlicher Aufbau OpenGL Sprachlicher
MehrGrundlagen der Spieleprogrammierung
Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 9: Engines, Cg und anderes Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal: Photorealistisch
MehrÜbungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrComputergrafik Universität Osnabrück, Henning Wenke, 2012-05-08
Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-08 Noch Kapitel IV: OpenGL Zielsetzungen Hardwarenah aber unabhängig Verschiedene Anwendungsbereiche Wissenschaft, Visualisierung & Entwicklung
MehrProbelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering
Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013 Schatten bringen viel Realismus in eine Szene Schatten
MehrRST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck
RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme
MehrGrafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
MehrOpenGL for Java OpenGL for Java Prof. Dr. V. Stahl
OpenGL for Java Ziele Bewegte Simulationen grafisch darstellen können (effizient, realistisch, dreidimensional) Grundfunktionen von OpenGL beherrschen Mathematische Voraussetzungen für Computer Grafik
MehrEinführung in OpenGL. Thomas Kalbe 30.10.2007. Technische Universität Darmstadt. thomas.kalbe@gris.informatik.tu-darmstadt.de
Einführung in OpenGL Thomas Kalbe Technische Universität Darmstadt thomas.kalbe@gris.informatik.tu-darmstadt.de 30.10.2007 3D Graphic APIs 2 / 42 API: Application Programming Interface low-level graphic
Mehr1.1 Verwendung von GLUT
1.1 Verwendung von GLUT Grundlegende Funktionsweise - Öffnen eines Fensters - Registrieren von Callback-Routinen - Start einer Hauptroutine, die erst beim Schließen des Fensters verlassen wird - Beim Auftreten
MehrProgrammierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de
> Programmierbeispiele und Implementierung Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de 2 > Übersicht > Matrix Vektor Multiplikation > Mandelbrotmenge / Apfelmännchen berechnen > Kantendetektion
MehrÜbungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrÜbung: Computergrafik 1
Prof. Dr. Andreas Butz Prof. Dr. Ing. Axel Hoppe Dipl.-Medieninf. Dominikus Baur Dipl.-Medieninf. Sebastian Boring Übung: Computergrafik 1 Geometrische Primitive OpenGL Zeichenarten Kurven Primitive Übung
MehrProseminar: Virtuelle Präsenz. Vortrag: Steve Rechtenbach
Proseminar: Virtuelle Präsenz Vortrag: Steve Rechtenbach Themen: 2/22 Einführung Was ist OpenGL? / Entwicklung Fakten Kleines(!) Beispiel Hello OpenGL Shader Zusammenfassung OpenGL vs Direct3D Einführung:
MehrSS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION
SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION (until Geforce 7 Series) 1 ÜBERSICHT Grafikpipeline Verlagerung
MehrSeminar Game Development Game Computer Graphics. Einleitung
Einleitung Gliederung OpenGL Realismus Material Beleuchtung Schatten Echtzeit Daten verringern Grafik Hardware Beispiel CryEngine 2 Kristian Keßler OpenGL Was ist OpenGL? Grafik API plattform- und programmiersprachenunabhängig
MehrOpenCL. OpenCL. Boris Totev, Cornelius Knap
OpenCL OpenCL 1 OpenCL Gliederung Entstehungsgeschichte von OpenCL Was, warum und überhaupt wieso OpenCL CUDA, OpenGL und OpenCL GPUs OpenCL Objekte Work-Units OpenCL Adressbereiche OpenCL API Codebeispiel
MehrPraxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.
MehrMasterpraktikum Scientific Computing
Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Prof. Dr. Michael Bader Technische Universität München, Germany Outline Organisatorisches Entwicklung
MehrEinfuehrung in OpenGL und Shader
Einfuehrung in OpenGL und Shader Michael Bayer 28. September 2005 Inhaltsverzeichnis 1 OpenGL 4 1.1 Einführung............................... 4 1.2 Architektur............................... 4 1.3 Pipeline
MehrOpenCL Implementierung von OpenCV Funktionen
Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen julian.mueller@e-technik.stud.uni-erlangen.de Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL
MehrGrafikprogrammierung mit OpenGL I
Grafikprogrammierung mit OpenGL I Proseminar Computergrafik Sommersemester 2 TU Dresden Johannes Völker Matrikelnummer: 3478976 s224854@mail.inf.tu-dresden.de Dozent: Wilfried Mascolus Lehrstuhl für Computergraphik
MehrDer Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, 27.03.2014, Ingo Josopait
Der Goopax Compiler GPU-Programmierung in C++ AMD R9 290X: 5.6 TFLOPS (SP MulAdd) Programmierung ~10000 Threads Entwicklungsumgebungen Entwicklungsumgebungen CUDA, OpenCL Compiler: kernel GPU Maschinencode
MehrSimulation von Feuer mittels eines Partikelsystems
Simulation von Feuer mittels eines Partikelsystems Studienarbeit Im Studiengang Computervisualistik Vorgelegt von Carsten Meffert 56077 Koblenz- Arzheim Am Teebaum 4 cmeffert@uni-koblenz.de Betreuer: Prof.
MehrUntersuchung und Vorstellung moderner Grafikchiparchitekturen
Fakultät Informatik, Institut für Technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Untersuchung und Vorstellung moderner Grafikchiparchitekturen Hauptseminar Technische
MehrWertebereich und Genauigkeit der Zahlendarstellung
Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrPraktikum: Spieleengine im Eigenbau
Seite 1/17 Praktikum Spieleengine im Eigenbau Alexander Weggerle, Tobias Bäuerle 19.10.09 http://www.saschawillems.de Praktikum: Spieleengine im Eigenbau Seite 2/17 Praktikum Spieleengine im Eigenbau Alexander
MehrTexture Mapping. Texturen
Grundlagen - Eine Textur ist ein Bild, das auf eine Oberfläche einer Geometrie aufgebracht ist - erlauben eine realistischere Darstellung von Oberflächen - können auf alle Primitive, nicht nur Polygone
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
MehrEine Einführung Computergrafik SS14 Timo Bourdon
Eine Einführung Computergrafik SS14 Timo Bourdon Organisatorisches Übung am Freitag den 11. Juli entfällt! Zum OpenGL-Übungsblatt OpenGL 3.0 oder höher notwendig (Shading Language 1.50 oder höher) CIP
Mehr3D Programmierpraktikum: Einführung in C++ - Teil 1
3D Programmierpraktikum: Einführung in C++ - Teil 1 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 27. April 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
MehrDas ausführbare Programm Bsp1.cfg, Bsp1.dof, Bsp1.dpr, Bsp1.res Projektdateien für Delphi 7 Prak.pas
Fakultät Informatik, Professur Computergraphik und Visualisierung 1 1 EINFÜHRUNG Zu diesem Praktikum wird ein vorbereitetes Delphi-Projekt zur Verfügung gestellt. Es ist so aufgebaut, dass man wichtige
MehrJava 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002
Java 3D Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Virtual World Koordinaten System Grundlagen zur Definition visueller Objekte Shape3D Unterklasse der Leaf-Klasse Eigenschaften des visuellen
MehrComputergraphik Grundlagen
Prof. Stefan Schlechtweg-Dorendorf Hochschule Anhalt (FH) Köthen Fachbereich Informatik Wintersemester 2010/2011 1 / 27 Teil II CG-Programmierung und OpenGL 2 / 27 Inhalt 1. Computergraphik-Programmierung
MehrOpenGL. (Open Graphic Library)
OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation
MehrKurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
MehrComputergrafik 1 Übung, Wintersemester 2011. Eclipse Hands-On. C++ Projektsetup mit OpenGL und GLUT unter Eclipse für Windows 22.10.
Computergrafik 1 Übung, Wintersemester 2011 Eclipse Hands-On C++ Projektsetup mit OpenGL und GLUT unter Eclipse für Windows 22.10.12 1 Eclipse - Die IDE 1. Entwicklungsumgebung (IDE) herunterladen / installieren
MehrVersion Referenzhandbuch. DiscretePhoton H.264 encoder. DiscretePhoton.
Version 1.1.5 Referenzhandbuch DiscretePhoton H.264 encoder DiscretePhoton www.discretephoton.com Referenzhandbuch Über DiscretePhoton H.264-Encoder DiscretePhoton H.264 encoder Window version ist geliefert
MehrSeminar: Grafikprogrammierung
Game Developer Converence 08 Seminar: Grafikprogrammierung Alexander Weggerle 17.04.08 Seite 2 Einführung Themenüberblick Organisatorisches Seminarablauf liches Seite 3 Einführung Seminar Motivation Vorbereitung
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
MehrErste Schritte der Programmierung in C
Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)
MehrThema: Hardware-Shader
Seminar Grafikprogrammierung Thema: Hardware-Shader Christian Bauer 03.07.08 Überblick Entwicklung Die Shader im Detail Programmierung GPGPU Zusammenfassung & Ausblick 1/19 Entwicklung (1) Früher: Berechnung
MehrAsteroids3D Seminar: Game Programming. Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann
Asteroids3D Seminar: Game Programming Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann Gliederung 2 1. Live-Demo und Spielidee 2. Softwarearchitektur und Szenengraph Übersicht
MehrErste Schritte in OpenGL
Erste Schritte in OpenGL Modelierung Aus Punkten werden geometrische Körper Komplexe Objeckte werden aus meheren einfachen Objeckten erstellt Dazu müssen Vertexes (Punkte) im virtuellen Raum angefordnet
MehrDAP2 Praktikum Blatt 1
Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1
MehrGUI Programmierung mit GTK
LinuxFocus article number 295 http://linuxfocus.org GUI Programmierung mit GTK by Özcan Güngör About the author: Ich benutze Linux seit 1997. Freiheit, Flexibilität, Open
MehrPROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl
PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen
MehrDiplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker
Diplomarbeit 5HDO7LPH6SHFLDO (IIHFWV Neue Möglichkeiten durch programmierbare Shader Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker Betreut von: Paul Grimm, Ralf Dörner Beginn: 01.04.02 Abgabe: 30.09.02
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
MehrNetwork premium POP UP Display
Premium Pop Up System seamless graphic precision very compact and versatile pop-up system quick to set up at any location comes in a number of different shapes; straight, curved, wave-shaped, stair formations,
MehrAlgorithmen zur Datenanalyse in C++
Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in
MehrArrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
MehrYilmaz, Tolga MatNr: Mesaud, Elias MatNr:
Yilmaz, Tolga MatNr: 157317 Mesaud, Elias MatNr: 151386 1. Aufbau und Funktionsweise einer Grafikkarte 2. CPU vs. GPU 3. Software 4. Beispielprogramme Kompilierung und Vorführung 5. Wo wird Cuda heutzutage
MehrEin- und Ausgabe mit Dateien
Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main 2 Vorbemerkungen
Mehr3D Programmierpraktikum: Schattenberechnung in Echtzeit
3D Programmierpraktikum: Schattenberechnung in Echtzeit Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 20. Juli 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
MehrGrundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme
Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes
MehrEin- und Ausgabe mit Dateien
Ein- und Ausgabe mit Dateien Edouard Lamboray Informatik I für D-ITET (2004) Ein- und Ausgabekonzepte in C und C++ fstream header Streamobjekt Files schreiben und lesen Argumente von main Vorbemerkungen
MehrFunktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion
Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert
Mehr(12) Wiederholung. Vorlesung Computergrafik T. Grosch
(12) Wiederholung Vorlesung Computergrafik T. Grosch Klausur 18.7. 14 16 Uhr, Hörsaal 5 (Physik) 2 Zeitstunden 8 Aufgaben Drei Aufgabentypen Übungsaufgaben Wissensfragen zur Vorlesung Transferfragen Unterschiedlicher
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrModul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
MehrWiMa-Praktikum 1. Woche 8
WiMa-Praktikum 1 Universität Ulm, Sommersemester 2017 Woche 8 Lernziele In diesem Praktikum sollen Sie üben und lernen: Besonderheiten der For-Schleife in Matlab Wiederholung des Umgangs mit Matrizen und
MehrShader zur Bildbearbeitung
15. Oktober 2009 1 / 23 Übersicht 1 Motivation 2 Grundlagen 3 State of the Art 4 Konzeption 5 Implementierung 6 Benchmarks 7 Fazit 2 / 23 Motivation: GPU >> CPU Moores Law: Hardware verbessert sich rapide
MehrWorkshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar
Workshop: Einführung in die 3D-Computergrafik Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar 1 Organisatorisches Tagesablauf: Vormittags: Theoretische Grundlagen Nachmittags: Bearbeitung
MehrIntegration OpenGL-basierter Visualisierungs-Techniken in 2D-Grafiksystemen
Seminararbeit im Rahmen des Studiengangs Scientific Programming Fachhochschule Aachen, Campus Jülich Fachbereich 9 - Medizintechnik und Technomathematik Integration OpenGL-basierter Visualisierungs-Techniken
MehrGPU Programmierung 12. Vorlesung Photorealistische Computergrafik
GPU Programmierung 12. Vorlesung Photorealistische Computergrafik Thorsten Grosch Standard OpenGL Pipeline verändern Bisher: Jeder glvertex( ) Punkt durchläuft die Standard OpenGL Pipeline Jetzt: Funktionalität
MehrProseminar Computergrafik: OpenGL
Proseminar Computergrafik: OpenGL Verfasser: Technische Universität Dresden Fakultät Informatik Studiengang Informatik (Diplom) 0. Inhalt 0. Inhalt... 2 1. Allgemein... 3 1.1. Was ist OpenGL... 3 1.2.
MehrProgrammierpraktikum 3D Computer Grafik
Prof. Andreas Butz, Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Dynamische Schattenberechnung Agenda Der Stencil-Puffer Der 1-bit Stencil-Puffer Der 8-bit Stencil-Puffer Volumetrische
MehrZwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework
Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit Direct 3D-Output für ein Rendering Framework von Benjamin Betting unter der Betreuung von Daniel Schiffner 1 Gliederung Kapitel I und II: Motivation,Einführung,Grundlagen
MehrOpenGL 3.1. Kapitel Einordnung und Motivation
Kapitel 21 OpenGL 3.1 21.1 Einordnung und Motivation In der Rastergrafik, deren Grundlagen in den Kapiteln 13 bis 19 behandelt wurden, wird Materie als Geometrie modelliert und zusätzlich werden deren
MehrIntegration von 3D-Visualisierungstechniken in 2D-Grafiksystemen
Mitglied der Helmholtz-Gemeinschaft Inhaltsverzeichnis Integration von 3D-Visualisierungstechniken in 2D-Grafiksystemen Motivation Ergebnisse Ausblick 24. August 2012 Florian Rhiem 24. August 2012 PGI/JCNS
MehrProgrammier-Befehle - Woche 10
Funktionen Rekursion Selbstaufruf einer Funktion Jeder rekursive Funktionsaufruf hat seine eigenen, unabhängigen Variablen und Argumente. Dies kann man sich sehr gut anhand des in der Vorlesung gezeigten
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrProgrammieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff
Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen
MehrPräzedenz von Operatoren
Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit
MehrSpezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe
Grafikprozessoren Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe 2D: Berechnung der Bildes aus einfachen Grafikprimitiven 3D: Bildaufbau aus räumlicher Beschreibung
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrGraphic Coding. Klausur. 9. Februar 2007. Kurs A
Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt
MehrArchitektur moderner GPUs. W. Sczygiol - M. Lötsch
Architektur moderner GPUs W. Sczygiol - M. Lötsch Überblick Chipentwicklung Aktuelle Designs Nvidia: NV40 (ATI: R420) Vertex-Shader Pixel-Shader Shader-Programmierung ROP - Antialiasing Ausblick Referenzen
MehrSpiele, Simulation, dynamische Systeme
Spiele, Simulation, dynamische Systeme Einführung in OpenGL und GLUT Sebastian Skalec (11038991) Christian Fehmer (11042419) Was können wir nach dem Vortrag? Erstellen eines OpenGL-Fensters Motivation
MehrGliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik
Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.
MehrNETWORK PREMIUM POP UP DISPLAY
Premium Pop Up System seamless graphic precision very compact and versatile pop-up system quick to set up at any location comes in a number of different shapes; straight, curved, wave-shaped, stair formations,
MehrQuiz und Übungen. C++ Übung am 19. Mai 2016
Quiz und Übungen C++ Übung am 19. Mai 2016 Was ist der Unterschied zwischen kompilierenden und interpretierenden Programmiersprachen? Was ist der Unterschied zwischen kompilierenden und interpretierenden
Mehr