(9) Modernes OpenGL. Vorlesung Computergraphik III S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU

Größe: px
Ab Seite anzeigen:

Download "(9) Modernes OpenGL. Vorlesung Computergraphik III S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU"

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 KOBLENZ LANDAU (5) GPU Einführung Vorlesung Computergraphik II Stefan Müller Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich Die Rendering-Pipeline Rasterisierung (2D) Zerlege den 2D-Polygonzug in Pixel Pro

Mehr

Einführung in GLSL - OpenGL Shading Language. Athanasios Karamalis

Einführung in GLSL - OpenGL Shading Language. Athanasios Karamalis Einführung in GLSL - OpenGL Shading Language Athanasios Karamalis Allgemein zur Shader-Programmierung Vor 2001 konnte nur die sogenannte Fixed Functionality der Graphik API und Graphikkarte verwendet werden

Mehr

Computergrafik II. OpenGL Einführung

Computergrafik 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

Mehr

Praktikum Computergrafik

Praktikum Computergrafik Praktikum Computergrafik Steven Schlegel Abteilung für Bild- und Signalverarbeitung Betreuer: Steven Schlegel (schlegel@informatik.uni-leipzig.de) Einführung in OpenGL und GLSL OpenGL OpenGL (Open Graphics

Mehr

UIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern

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

Mehr

I - Phone 3D 3D Spieleentwicklung für's I-Phone

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

Mehr

General Purpose Computation on GPUs

General Purpose Computation on GPUs General Purpose Computation on GPUs Matthias Schneider, Robert Grimm Universität Erlangen-Nürnberg {matthias.schneider, robert.grimm}@informatik.stud.uni-erlangen.de M. Schneider, R. Grimm 1 Übersicht

Mehr

Softwareprojekt Spieleentwicklung

Softwareprojekt Spieleentwicklung Softwareprojekt Spieleentwicklung Prototyp I (2D) Prototyp II (3D) Softwareprojekt 12.04. 19.04. 26.04. 03.05. 31.05. Meilenstein I 28.06. Meilenstein II Prof. Holger Theisel, Tobias Günther, OvGU Magdeburg

Mehr

GL ShadingLanguage(GLSL)

GL ShadingLanguage(GLSL) Was ist GLSL C/Java ähnliche Hochsprache zur Erstellung von GPU-basierter Software (Shader) An die Open Graphics Library (OpenGL) gebunden Darstellung komplexer 2D- und 3D-Szenen auf Basis von Echtzeitberechnungen

Mehr

Einführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg

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

Mehr

Proseminar Computergrafik: OpenGL. Marcel Heckel

Proseminar 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

Mehr

Grafikprogrammierung (Echtzeitrendering)

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

Mehr

Einführung in OpenGL. Einführung in OpenGL

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

Mehr

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

DirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006 DirectX und OpenGL Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006 2 Inhalt Einleitung Übersicht DirectX und Komponenten Übersicht OpenGL Sprachlicher Aufbau OpenGL Sprachlicher

Mehr

Grundlagen der Spieleprogrammierung

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

Mehr

Übungspaket 23 Mehrdimensionale Arrays

Ü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

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

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013 Schatten bringen viel Realismus in eine Szene Schatten

Mehr

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme

Mehr

Grafikkarten-Architektur

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

Mehr

OpenGL for Java OpenGL for Java Prof. Dr. V. Stahl

OpenGL 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

Mehr

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

Mehr

1.1 Verwendung von GLUT

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

Mehr

Programmierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de

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

Ü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

Mehr

Proseminar: Virtuelle Präsenz. Vortrag: Steve Rechtenbach

Proseminar: Virtuelle Präsenz. Vortrag: Steve Rechtenbach Proseminar: Virtuelle Präsenz Vortrag: Steve Rechtenbach Themen: 2/22 Einführung Was ist OpenGL? / Entwicklung Fakten Kleines(!) Beispiel Hello OpenGL Shader Zusammenfassung OpenGL vs Direct3D Einführung:

Mehr

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION (until Geforce 7 Series) 1 ÜBERSICHT Grafikpipeline Verlagerung

Mehr

Seminar Game Development Game Computer Graphics. Einleitung

Seminar Game Development Game Computer Graphics. Einleitung Einleitung Gliederung OpenGL Realismus Material Beleuchtung Schatten Echtzeit Daten verringern Grafik Hardware Beispiel CryEngine 2 Kristian Keßler OpenGL Was ist OpenGL? Grafik API plattform- und programmiersprachenunabhängig

Mehr

OpenCL. OpenCL. Boris Totev, Cornelius Knap

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

Mehr

Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern

Praxiseinheit: 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.

Mehr

Masterpraktikum Scientific Computing

Masterpraktikum 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

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

OpenCL Implementierung von OpenCV Funktionen

OpenCL 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

Mehr

Grafikprogrammierung mit OpenGL I

Grafikprogrammierung 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

Mehr

Der Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, 27.03.2014, Ingo Josopait

Der 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

Mehr

Simulation von Feuer mittels eines Partikelsystems

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

Mehr

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

Untersuchung 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

Mehr

Wertebereich und Genauigkeit der Zahlendarstellung

Wertebereich 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

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Ü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:

Mehr

Praktikum: Spieleengine im Eigenbau

Praktikum: Spieleengine im Eigenbau Seite 1/17 Praktikum Spieleengine im Eigenbau Alexander Weggerle, Tobias Bäuerle 19.10.09 http://www.saschawillems.de Praktikum: Spieleengine im Eigenbau Seite 2/17 Praktikum Spieleengine im Eigenbau Alexander

Mehr

Texture Mapping. Texturen

Texture Mapping. Texturen Grundlagen - Eine Textur ist ein Bild, das auf eine Oberfläche einer Geometrie aufgebracht ist - erlauben eine realistischere Darstellung von Oberflächen - können auf alle Primitive, nicht nur Polygone

Mehr

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

Mehr

Eine Einführung Computergrafik SS14 Timo Bourdon

Eine Einführung Computergrafik SS14 Timo Bourdon Eine Einführung Computergrafik SS14 Timo Bourdon Organisatorisches Übung am Freitag den 11. Juli entfällt! Zum OpenGL-Übungsblatt OpenGL 3.0 oder höher notwendig (Shading Language 1.50 oder höher) CIP

Mehr

3D Programmierpraktikum: Einführung in C++ - Teil 1

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

Mehr

Das ausführbare Programm Bsp1.cfg, Bsp1.dof, Bsp1.dpr, Bsp1.res Projektdateien für Delphi 7 Prak.pas

Das 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

Mehr

Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002

Java 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

Mehr

Computergraphik Grundlagen

Computergraphik 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

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

Kurze Einführung in die Programmiersprache C++ und in Root

Kurze 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

Mehr

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

Mehr

Version Referenzhandbuch. DiscretePhoton H.264 encoder. DiscretePhoton.

Version 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

Mehr

Seminar: Grafikprogrammierung

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

Mehr

Primitive Datentypen

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

Mehr

Erste Schritte der Programmierung in C

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

Mehr

Thema: Hardware-Shader

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

Mehr

Asteroids3D Seminar: Game Programming. Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann

Asteroids3D Seminar: Game Programming. Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann Asteroids3D Seminar: Game Programming Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann Gliederung 2 1. Live-Demo und Spielidee 2. Softwarearchitektur und Szenengraph Übersicht

Mehr

Erste Schritte in OpenGL

Erste 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

Mehr

DAP2 Praktikum Blatt 1

DAP2 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

Mehr

GUI Programmierung mit GTK

GUI 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

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN 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

Mehr

Diplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker

Diplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker Diplomarbeit 5HDO7LPH6SHFLDO (IIHFWV Neue Möglichkeiten durch programmierbare Shader Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker Betreut von: Paul Grimm, Ralf Dörner Beginn: 01.04.02 Abgabe: 30.09.02

Mehr

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

7 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

Mehr

Modellierung und Programmierung 1

Modellierung 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; {

Mehr

Network premium POP UP Display

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

Mehr

Algorithmen zur Datenanalyse in C++

Algorithmen 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

Mehr

Arrays (Felder/Vektoren)

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

Mehr

Unterlagen. CPP-Uebungen-08/

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

Mehr

Yilmaz, Tolga MatNr: Mesaud, Elias MatNr:

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

Mehr

Ein- und Ausgabe mit Dateien

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

Mehr

3D Programmierpraktikum: Schattenberechnung in Echtzeit

3D Programmierpraktikum: Schattenberechnung in Echtzeit 3D Programmierpraktikum: Schattenberechnung in Echtzeit Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 20. Juli 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

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

Mehr

Ein- und Ausgabe mit Dateien

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

Mehr

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Funktionen. Ü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 (12) Wiederholung Vorlesung Computergrafik T. Grosch Klausur 18.7. 14 16 Uhr, Hörsaal 5 (Physik) 2 Zeitstunden 8 Aufgaben Drei Aufgabentypen Übungsaufgaben Wissensfragen zur Vorlesung Transferfragen Unterschiedlicher

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

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

Mehr

Modul 122 VBA Scribt.docx

Modul 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

Mehr

WiMa-Praktikum 1. Woche 8

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

Mehr

Shader zur Bildbearbeitung

Shader 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

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

Integration OpenGL-basierter Visualisierungs-Techniken in 2D-Grafiksystemen

Integration 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

Mehr

GPU Programmierung 12. Vorlesung Photorealistische Computergrafik

GPU Programmierung 12. Vorlesung Photorealistische Computergrafik GPU Programmierung 12. Vorlesung Photorealistische Computergrafik Thorsten Grosch Standard OpenGL Pipeline verändern Bisher: Jeder glvertex( ) Punkt durchläuft die Standard OpenGL Pipeline Jetzt: Funktionalität

Mehr

Proseminar Computergrafik: OpenGL

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

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Prof. Andreas Butz, Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Dynamische Schattenberechnung Agenda Der Stencil-Puffer Der 1-bit Stencil-Puffer Der 8-bit Stencil-Puffer Volumetrische

Mehr

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 3.1. Kapitel Einordnung und Motivation

OpenGL 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

Mehr

Integration von 3D-Visualisierungstechniken in 2D-Grafiksystemen

Integration 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

Mehr

Programmier-Befehle - Woche 10

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

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule 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

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

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

Mehr

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff

Programmieren 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

Mehr

Präzedenz von Operatoren

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

Mehr

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

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

Mehr

Programmierung mit C Zeiger

Programmierung 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

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic 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

Mehr

Architektur moderner GPUs. W. Sczygiol - M. Lötsch

Architektur 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

Mehr

Spiele, Simulation, dynamische Systeme

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

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

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

Mehr

NETWORK PREMIUM POP UP DISPLAY

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

Mehr

Quiz und Übungen. C++ Übung am 19. Mai 2016

Quiz 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