(7) Schatten. Vorlesung Computergrafik II. Dank an Niklas Henrich, Thorsten Grosch, Matthias Raspe U N I V E R S I T Ä T KOBLENZ LANDAU

Größe: px
Ab Seite anzeigen:

Download "(7) Schatten. Vorlesung Computergrafik II. Dank an Niklas Henrich, Thorsten Grosch, Matthias Raspe U N I V E R S I T Ä T KOBLENZ LANDAU"

Transkript

1 (7) Schatten Vorlesung Computergrafik II Dank an Niklas Henrich, Thorsten Grosch, Matthias Raspe KOBLENZ LANDAU

2 Geometrie zeichnen Immediate Mode (glbegin/glend) Vertex Arrays Vertex Buffer Objects (VBO) Display Listen 1. Dreiecke nvidia 88 GTX Flat Shading Beleuchtung: Aus Tiefentest: An Texturierung: Aus KOBLENZ LANDAU Niklas Henrich - 2 -

3 Immediate Mode Daten werden einzeln an die Grafikkarte übertragen Viele Aufrufe an den Treiber Sehr langsam! glbegin(gl_triangles); glnormal3f( ); glcolor3f( ); glvertex3f( ); glend(); KOBLENZ LANDAU Niklas Henrich - 3 -

4 Vertex Arrays (Daten in der richtigen Reihenfolge) Daten liegen im Hauptspeicher Im Gegensatz zum Immediate Mode nur ein Aufruf Client Arrays einschalten glenableclientstate(gl_vertex_array); glenableclientstate(gl_color_array); Zeiger auf die Arrays definieren glvertexpointer(3, GL_FLOAT,, colors); glnormalpointer(3, GL_FLOAT,, vertices); Daten in einem Rutsch übertragen gldrawarrays(gl_polygon,, N); gldrawarrays( ) Eckpunkte Farbe KOBLENZ LANDAU Niklas Henrich - 4 -

5 v 1 v Beispiel GLfloat vertices[] = { 1, 1, 1, -1, 1, 1, -1,-1, 1, // v-v1-v2-1,-1, 1, 1,-1, 1, 1, 1, 1}; // v2-v3-v GLfloat colors[] = { 1, 1, 1, 1, 1,, 1,,, // v-v1-v2 1,,, 1,, 1, 1, 1, 1}; // v2-v3-v v v 2 3 glenableclientstate(gl_color_array); glenableclientstate(gl_vertex_array); glcolorpointer(3, GL_FLOAT,, colors); //#components, type, offset, ptr. glvertexpointer(3, GL_FLOAT,, vertices); gldrawarrays(gl_triangles,, 6); //mode, first, count gldisableclientstate(gl_vertex_array); gldisableclientstate(gl_color_array); KOBLENZ LANDAU - 5 -

6 Indizierte Vertex Arrays Analog zu Vertex Arrays Client Arrays einschalten glenableclientstate(gl_vertex_array); glenableclientstate(gl_color_array); Zeiger auf die Arrays definieren glvertexpointer(3, GL_FLOAT,, normals); glnormalpointer(3, GL_FLOAT,, vertices); Daten in einem Rutsch übertragen gldrawelements(gl_triangles, N, GL_UNSIGNED_BYTE, indices); gldrawelements( ) KOBLENZ LANDAU Niklas Henrich - 6 -

7 Vertex Arrays GLubyte indices[] = {, 1, 2, 2, 3, }; GLfloat vertices2[] = { 1, 1, 1, -1, 1, 1, -1,-1, 1, 1,-1, 1}; // v,v1,v2,v3 GLfloat colors2[] = { 1, 1, 1, 1, 1,, 1,,, 1,, 1 }; glenableclientstate(gl_color_array); glenableclientstate(gl_vertex_array); glcolorpointer(3, GL_FLOAT,, colors2); //#components, type, offset, ptr. glvertexpointer(3, GL_FLOAT,, vertices2); gldrawelements(gl_triangles, 4, GL_UNSIGNED_BYTE, indices); //mode, count, type, indices v 1 v gldisableclientstate(gl_vertex_array); gldisableclientstate(gl_color_array); KOBLENZ LANDAU v v

8 Display Listen (siehe CG2) Liste von OpenGL-Anweisungen Wird einmal erstellt (kompiliert) Kann beliebig oft aufgerufen werden und Befehle werden wieder abgespielt Treiber hat die Möglichkeit Optimierungen durchzuführen State-Changes minimieren Liste in Grafikkartenspeicher legen Inhalt der kompilierten Liste kann aber nicht mehr geändert werden! KOBLENZ LANDAU Niklas Henrich - 8 -

9 Vertex Buffer Objects Erlauben es, Daten direkt im Speicher der Grafikkarte zu platzieren Zum Zeichnen müssen die Daten nicht mehr an die Grafikkarte übertragen werden Treiber übernimmt Verwaltung der Daten usage flags teilen Treiber mit, wie oft die Daten verändert werden KOBLENZ LANDAU Niklas Henrich - 9 -

10 Flags Static: einmal auf die Hardware, für alle weiteren Frames konstant Dynamic: Liste wird pro frame an Hardware übergeben, aber mehrfach verwendet (viele Instanzen von einem z.b. einem Baum) Stream: für jeden frame an Hardware übergeben (z.b. sich verformende Objekte, bewegte Bäume) KOBLENZ LANDAU - 1 -

11 Vertex Buffer Objects - Ablauf Bufferobjekt erzeugen Bufferobjekt mit Daten füllen Zeichnen analog zu Vertex Arrays gldrawarrays( ) oder gldrawelements( ) Mit glmapbuffer( ) / glunmapbuffer( ) kann ein Zeiger auf die Daten erzeugt werden, mit dessen Hilfe diese verändert werden können KOBLENZ LANDAU Niklas Henrich

12 Beispiel GLuint trianglevbo; // 3 Dreiecke float vertices[] = {1.,., 1.,.,., -1., -1.,., 1.}; glgenbuffers(1, &trianglevbo); glbindbuffer(gl_array_buffer, trianglevbo); //Upload vertex data to the video device glbufferdata(gl_array_buffer, sizeof( vertices), vertices, GL_STATIC_DRAW); glvertexpointer(3, GL_FLOAT,, NULL); glbindbuffer(gl_array_buffer, trianglevbo); glenableclientstate(gl_vertex_array); gldrawarrays(gl_triangles,, 9); KOBLENZ LANDAU

13 Und was soll ich nun verwenden? Immediate Mode: Nie ;-) Vertex Arrays Sinnvoll bei Daten, auf die auch die CPU sehr häufig zugreifen muss Display Listen Im neuen OpenGL-Standard (3.1) als deprecated markiert! Sinvoll bei rein statischen Daten, die von der CPU nie verändert werden VBOs Meiner Meinung nach das Beste aus allem Schnell und flexibel Standard bei OpenGL ES (Handys, Playstation 3, ) KOBLENZ LANDAU Niklas Henrich

14 Depth Peeling Im Framebuffer ist immer das vorderste Pixel zur Kamera zu sehen Depth Peeling erzeugt n Bilder, in denen jeweils das vorderste, zweit-vorderste,, n-vorderste Pixel zu sehen ist KOBLENZ LANDAU Niklas Henrich

15 Depth Peeling Ablauf 1. Schritt (Vordersten Pixel) Szene rendern Tiefenpuffer abspeichern 2. bis n.schritt ( Zweit-vordersten bis n-vordersten Pixel ) Szene rendern Im Pixel Shader den Tiefenwert des aktuellen Fragments mit dem Wert aus dem zuvor gespeicherten Tiefenpuffer vergleichen Nur diejenigen Fragments mit einem größeren Tiefenwert zeichnen Tiefenpuffer für gezeichnete Pixel speichern KOBLENZ LANDAU Niklas Henrich

16 Depth Peeling Bilder Ebene Ebene 1 Demo NVidia SDK Ebene 2 Ebene 3 KOBLENZ LANDAU Niklas Henrich

17 Depth Peeling Komplexität ist linear O(n) Größter Kritikpunkt Speicherverbrauch ist linear Ein Bild pro Schicht Komplexe Szenen bestehen schnell aus 2+ Schichten Anwendungen Transparenzen Ray-Tracing Volumen Rendering Unzählige mehr KOBLENZ LANDAU Niklas Henrich

18 Depth Peeling - Transparenzen Um Transparenzen korrekt darstellen zu können, müssen die Objekte in der richtigen Reihenfolge gezeichnet werden Mit Depth Peeling kann dieses Problem umgangen werden Ablauf Szene depth peelen und jede Schicht (RGBA) in Textur speichern Alpha Blending aktivieren Schichten von hinten nach vorne überlagern Mit Depth Peeling (korrekte Transparenz) KOBLENZ LANDAU Ohne Depth Peeling (inkorrekte Transparenz)) Niklas Henrich

19 Order Independent Transparency - Demo KOBLENZ LANDAU Niklas Henrich

20 Schatten KOBLENZ LANDAU - 2 -

21 Warum Schatten Mit Schatten Höherer Realismus Abstände können besser eingeschätzt werden Warum sind Schatten mit OpenGL kompliziert? OpenGL besitzt lokales Beleuchtungsmodell, d.h. zu einem Zeitpunkt ist immer nur ein Polygon bekannt. Für dieses Polygon wird ein einfaches Beleuchtungsmodell angewendet. Für Schatten müssten alle anderen Polygone bekannt sein Jedes andere Polygon könnte einen Schatten auf das aktuelle Polygon werfen Es gibt kein glenable(gl_shadow) KOBLENZ LANDAU

22 Verschiedene Schattentypen Lightmaps Statische Schatten in Textur Schwarze Flecken unter Spielfigur Schnell und einfach Besser als gar kein Schatten Raytracing Sehr gut, aber langsam KOBLENZ LANDAU

23 Planare Schatten Skalierung y = Nur paralleles Licht von oben Jim Blinn 78: Me and my (fake) shadow Punktlicht an beliebiger Position Eckpunkte Schatten = Schnittpunkt von Gerade durch Eckpunkt und Lichtquelle mit Ebene l (Lichtposition) v (Eckpunkt) v (projizierter Punkt in xz-ebene) KOBLENZ LANDAU

24 KOBLENZ LANDAU Blinn 78 : Me and my (fake) shadow Darstellung als Matrix y y z x y l l l l l M 1 x l x v y x x l x v v l l y y v y l v y x x y y x x l l v v l l v y y y x x y x v l v l v l v y y y z z y z v l v l v l v (analog)

25 KOBLENZ LANDAU Schattenmatrix mit OpenGL y y y z z y y y y x y x y y z y y z y x y x z y x y y z x y v l v l v l v l v l l v l v v l v l v l l v v v v l l l l l glloadidentity(); glulookat(from,at,up); // transform geometry // draw geometry glloadidentity(); glcolor3f(,,); glulookat(from,at,up); glmultmatrix(m); // transform geometry // draw geometry Schatten auf beliebige Ebene: siehe Red Book

26 Richtige Schatten Nur planare Empfängerfläche Keine Selbstverschattung Gängige Verfahren für Schatten Shadow Volumes Shadow Mapping Kein Verfahren ist besser als das andere, beide haben Vor und Nachteile KOBLENZ LANDAU

27 Shadow Volumes Franklin Crow 77 Idee: Schattenvolumen hinter Objekt Alle Objekte im Schattenvolumen sind im Schatten, alles außerhalb nicht Schattenvolumen Konstruktion Schattenvolumen: Finde SiIhouette des Objekts aus Sicht der Lichtquelle und verlängere Silhouette KOBLENZ LANDAU

28 Shadow Volumes Anwendung auf Grafik Hardware (Stencil Buffer) Zeichne Seiten des Schattenvolumens Zähle Schnittpunkte von Betrachter aus mit Schattenvolumen +1 bei Eintritt, -1 bei Austritt -1 Objekte im Schatten haben einen Zählwert > KOBLENZ LANDAU

29 Shadow Volume im 3D Einige Kanten der Geometrie sind Silhouettenkanten (Bild S.Brabec) KOBLENZ LANDAU

30 Silhouettenkanten Voraussetzung 1: Geschlossenes Polygonmodell (2-manifold) l n Silhouettenkante: Ein Polygon ist zur Lichtquelle gedreht, das andere Polygon von der Lichtquelle abgewandt n l n l : zur Lichtquelle gedreht : von der Lichtquelle abgewandt Silhouettentest in Software Datenstruktur für Polygon, jedes Polygon speichert Liste der Nachbarpolygone Die Verlängerung der Silhouettenkanten ergibt die Seiten des Schattenvolumens KOBLENZ LANDAU - 3 -

31 Silhouettenkanten Voraussetzung 2: Konsistente Orientierung der Eckpunkte jedes Polygons (z.b. Vorderseite immer gegen der Uhrzeigersinn) A D n Dreiecke (A,B,C) und (A,D,B) B C (Unendliche) Verlängerung der Silhouettenkanten: Suche Polygon P1, das zur Lichtquelle zeigt Suche Nachbarpolygon P2, das von Lichtquelle abgewandt ist ( v, v1) Falls die Kante als bei P1 eingetragen ist, dann ist ( v, v, v 1, v1) eine korrekt orientierte Seite des Schattenvolumens v v D v 1 C KOBLENZ LANDAU v 1

32 Verlängerung Silhouettenkante Zeichne Viereck ( v, v, v 1, v1) Silhouettenkante v Schattenvolumen soll nicht sichtbar sein: Zeichnen nur im Stencil Buffer v 1 Schattenkante (entsteht durch z-buffer) v KOBLENZ LANDAU v 1

33 Shadow Volume Schritte 1. Geometrie zeichnen 2. Stencil Buffer mit löschen 3. Color Buffer abschalten 4. z-buffer auf Read Only stellen 5. Stencil Buffer so einstellen, daß beim zeichnen eines Polygons die sichtbaren Bereiche um eins erhöht werden Backface Culling aktivieren 7. Schattenvolumen zeichnen (Durch Backface Culling werden nur die Vorderseiten des Schattenvolumens gezeichnet und der Stencil Buffer an diesen Stellen um eins erhöht) KOBLENZ LANDAU

34 Shadow Volume Schritte 8. Stencil Buffer so einstellen, daß beim zeichnen eines Polygons die sichtbaren Bereiche um eins erniedrigt werden 9. Frontface Culling aktivieren 1. Schattenvolumen zeichnen (Nur Rückseiten des Schattenvolumens werden gezeichnet und der Stencil Buffer an diesen Stellen um eins erniedrigt) -1-1 KOBLENZ LANDAU

35 Verlängerung Silhouettenkante Überlagerung: Im Stencil Buffer steht überall im Schattenbereich ein Wert > 11. z-buffer deaktivieren, Color Buffer aktivieren 12. Verwende Stencil Buffer als Maske und zeichne bildschirmfüllendes, schwarzes Rechteck +1 KOBLENZ LANDAU

36 Warum z Buffer Read-Only? Die Seiten des Schattenvolumens werden teilweise von der Geometrie verdeckt -> Schattenkanten entstehen Ohne z-buffer wären z.b. keine Schattenkanten auf dem Boden Falls der z-buffer einfach aktiviert bleibt werden die Rückseiten nicht gezeichnet, da von den Vorderseiten verdeckt -> z-werte dürfen nicht überschrieben werden z-buffer Read-Only: Schatten hat gleichen Tiefenwert wie Geometrie KOBLENZ LANDAU

37 Schattenvolumen von der Seite betrachtet Beispiele Betrachter schaut durchs Schattenvolumen durch: # Eintrittspunkte = # Austrittspunkte Betrachterstrahl bleibt im Schattenvolumen hängen: # Eintrittspunkte > # Austrittspunkte KOBLENZ LANDAU

38 Varianten für hellen Schatten Schnell: Zeichne Szene komplett beleuchtet Generiere Schattenmaske Aktiviere Alpha Blending (SRC_ALPHA, ONE_MINUS_SRC_ALPHA) Zeichne bildschirmfüllendes, schwarzes Rechteck mit Farbe (,,,alpha) Genauer: Zeichne Szene nur mit ambientem Licht Generiere Schattenmaske in Stencil Buffer Zeichne Szene mit diffusem & spekularem Licht (falls Stencil == ) Schatten hat nur ambientes Licht Schatten wird abgedunkelt, falls Stencil > KOBLENZ LANDAU

39 Optimierung bei transformierter Geometrie M M 1 Zur Erkennung, ob ein Polygon zur Lichtquelle zeigt oder abgewandt ist, wird nicht jedes Dreieck mit der Modelview Matrix transformiert, sondern nur einmal die Lichtquelle mit der inversen Modelview Matrix transformiert. Geometrie durch Modelview Matrix M transformiert Lichtquelle durch inverse Modelview Matrix transformiert KOBLENZ LANDAU

40 Probleme mit Shadow Volumes Near Clipping Plane near +1-1 Durch near-clipping Plane fehlt die Vorderseite des Schattenvolumens Zähler ist falsch, statt +1 Abhilfe: near Wert klein wählen Achtung: z-buffer wird ungenau KOBLENZ LANDAU - 4 -

41 Beispiele Shadow Volumes Doom 3 nvidia KOBLENZ LANDAU

42 Vorteile / Nachteile Shadow Volumes Vorteile Scharfe Schattenkanten, kein Aliasing Punktlichtquellen, nicht nur Spots Shadow Volumes Nachteile Datenstruktur für Zusammenhang zw. Polygonen muß aufgebaut werden Nur geschlossene Modelle Langsam bei komplexer Geometrie Aufwändige Suche nach Silhouettenkanten (CPU) Viele Seiten des Schattenvolumens werden gezeichnet, hohe Füllrate erforderlich Problem falls Betrachter im Schatten Zählerüberlauf im (8 Bit) Stencil Buffer möglich KOBLENZ LANDAU

43 Erweiterungen zu Shadow Volumes Weiche Schatten mit mehreren Punktlichtquellen (Brotman & Badler 1984) Offene Modelle, nichtplanare Polygone (Bergeron 1986) Weiche Schattenkanten (Assarson et al ) Shadow Volumes komplett auf der Grafik Hardware (Brabec et al. 23) Reduktion unnötiger Seiten des Schattenvolumens (Lloyd et al 24) KOBLENZ LANDAU

44 Shadow Mapping (Williams 78) Idee: Tiefenwerte aus Sicht der Lichtquelle in Textur speichern Über Vergleich Echter Tiefenwert Tiefenwert aus Textur ermitteln ob Schatten oder nicht Vorstufe: Projektive Texturen (Bild W. Heidrich) KOBLENZ LANDAU

45 Projektive Texturen Ein Projektor wirft ein Bild an die Wand Das Bild soll mit einer Textur dargestellt werden Wie müssen die Texturkoordinaten gesetzt werden? Textur: Soll auf Geometrie projiziert werden,1 1,1 t, s 1, Idee: OpenGL Projektionen verwenden s t r q x y M z 1 Matrix für Umrechnung Weltkoordinate in Texturkoordinate KOBLENZ LANDAU

46 KOBLENZ LANDAU Projektive Texturen Matrixaufbau 1 Matrix LookAt Light Matrix Projection Light z y x q r t s Umrechnung in Projektorkoordinaten glulookat(lightpos, lightat, lightup) Projektionsmatrix gluperspective(lightangle, aspect, near, far) Umrechnung -w..+w nach..w Evtl. Modeling Matrix Division durch 4. Komponente:..w ->..1

47 KOBLENZ LANDAU Projektive Texturen w z y x q r t s Matrix LookAt Light Matrix Projection Light Projektion verändert homogene Koordinate: Echte Texturkoordinaten (s/q, t/q) Tiefe wird gespeichert in r/q

48 Projektive Texturen mit OpenGL float gens[ ] = { 1.f,.f,.f,.f }; glenable( GL_TEXTURE_GEN_S ); gltexgeni( GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR ); gltexgenfv( GL_S, GL_EYE_PLANE, gens ); Entsprechend für T,R,Q float gent[ ] = {.f, 1.f,.f,.f }; Texturgenerierung wird aktiviert Texturkoordinate = Eckpunktkoordinate s x t y r z q w OpenGL hat nur planare Projektionen für Texturkoordinaten Projektion nur über Texturmatrix KOBLENZ LANDAU

49 Projektive Texturen mit OpenGL Texturmatrix setzen glmatrixmode(gl_texture); glloadidentity(); gltranslatef(.5f,.5f,.5f); glscalef(.5f,.5f,.5f); gluperspective(lightangle, 1.f, lightnear, lightfar); glulookat(lightfrom[], lightfrom[1], lightfrom[2], lightat[], lightat[1], lightat[2], lightup[], lightup[1], lightup[2]); KOBLENZ LANDAU

50 Shadow Maps Idee: Kamera in Lichtquelle setzen Z-Buffer von Lichtquelle aus in Textur kopieren Projektives Texturmapping mit Tiefentextur Pro Pixel echten Abstand mit Abstand aus Textur vergleichen KOBLENZ LANDAU - 5 -

51 Shadow Maps Kamera in Lichtquelle setzen, z-buffer auslesen Depth-Texture von Lichtquelle aus projizieren Schatten eines Spotlights aus Tiefenwerten bestimmen KOBLENZ LANDAU

52 Shadow Maps ZA: Z Wert in Textur an (s/q, t/q) ZB: Z Wert in Licht Koordinatensystem (r/q) z A z B z A zb za z B P P ist im Schatten P za z B P wird beleuchtet ZA und ZB liegen im Bereich [,1] und sind nicht-linear transformiert KOBLENZ LANDAU

53 KOBLENZ LANDAU Noch mal als Erinnerung. w z y x q r t s Matrix LookAt Light Matrix Projection Light Deshalb gilt: 1. Unter den Texturkoordinaten (s/q, t/q) steht die Pixelposition des Weltpunkts (x,y,z,w) 2. In r/q steht die Tiefe des Weltpunkts (x,y,z,w) in Lichtkoordinaten In der Texturmatrix steht eine Art nachgebaute OpenGL Pipeline: Modelview Projecion Viewport für Textur

54 Tiefenvergleich Genaue Beschreibung: Interpolierte Texturkoordinaten (s/q, t/q, r/q) ermitteln (passiert automatisch) Texturpixel an Stelle (s/q, t/q) auslesen: Tiefenwert aus Sicht der Lichtquelle (ZA) 3. Komponente der Texturkoordinate r/q entspricht dem z- Wert im Koordinatensystem der Lichtquelle (ZB) Vergleich der Tiefenwerte: ZA = ZB : Licht ZA < ZB : Schatten KOBLENZ LANDAU

55 Shadow Map anlegen glgentextures(1, &shadowmapid); glbindtexture(gl_texture_2d, shadowmapid); glteximage2d( GL_TEXTURE_2D,, GL_DEPTH_COMPONENT, shadowmapwidth, shadowmapheight,, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, ); Als FBO attachen KOBLENZ LANDAU

56 Vorher.. void Shadow::activate_mapping(Light *l) { } const GLdouble lightm[] = {.5,.,.,.,.,.5,.,.,.,.,.5,.,.5,.5,.5, 1.}; gltexparameteri(gl_texture_2d, GL_TEXTURE_COMPARE_MODE_ARB,GL_COMPARE_R_TO_TEXTURE_ARB); gltexparameteri(gl_texture_2d, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL); glmatrixmode(gl_texture); glloadmatrixd(lightm); glmultmatrixd(l->get_proj_matrix()); glmultmatrixd(l->get_model_matrix()); glmatrixmode(gl_modelview); KOBLENZ LANDAU T.Grosch

57 Vertex-Shader varying float Diffuse; //varying vec2 TexCoord; varying vec4 ProjShadow; uniform vec3 LightDirection; void main(void) { vec3 realnorm = gl_normalmatrix * gl_normal; Diffuse = max(dot(-lightdirection, realnorm),.); //TexCoord = gl_multitexcoord; ProjShadow = gl_texturematrix[1] * gl_vertex; gl_position = ftransform(); } KOBLENZ LANDAU T.Grosch

58 Fragment-Shader uniform sampler2dshadow ShadowMap; varying vec4 ProjShadow; varying float Diffuse; void main (void) { color = shadow2dproj(shadowmap, ProjShadow).r; color *= Diffuse; gl_fragcolor = vec4(color, 1); } KOBLENZ LANDAU T.Grosch

59 Selbstverdeckung 1 Pixel in Shadow Map Da die Oberfläche nur an einigen Punkten abgetastet wurde, werden Bereiche der Oberfläche als verdeckt eingestuft Grösserer Abstand zur Lichtquelle Kleinerer Abstand zur Lichtquelle z KOBLENZ LANDAU - 6 -

60 Polygon Offset (Depth Bias) Bei Generierung der Shadow Map wird durch glpolygonoffset der z-wert pro Pixel nach hinten verschoben Die Verschiebung ist abhängig von der Steigung des Polygons z KOBLENZ LANDAU

61 Polygon Offset (Depth Bias) glenable(gl_polygon_offset_fill); Korrektur z-wert vor Eintrag in z-buffer glpolygonoffset(offsetfactor, offsetunits); Um wieviel soll korrigiert werden Die Werte sind Hardware-abhängig! KOBLENZ LANDAU

62 Polygon Offset (Depth Bias) Ohne PolygonOffset Offset zu klein Offset gerade richtig Offset zu groß KOBLENZ LANDAU

63 Beispiele für Shadow Maps Toy Story Echtzeit Luxo Jr. auf Apple Macintosh Steve Jobs 21 Studienarbeit Michael Nikelsky KOBLENZ LANDAU

64 Percentage Closer Filtering (PCF) Aliasing Effekte an den Schattenkanten reduzieren 1 Filter für Schattenrand KOBLENZ LANDAU

65 Percentage Closer Filtering gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_LINEAR); gltexparameteri(gl_texture_2d, GL_TEXTURE_MIN_FILTER, GL_LINEAR); Direkte Anwendung des Filters auf Tiefenmap macht keinen Sinn, man würde Tiefenwerte interpolieren Stattdessen Tiefenvergleich für umliegende 4 Texturpixel mit Ergebnis oder 1 Die Ergebnisse werden bilinear interpoliert KOBLENZ LANDAU

66 Percentage Closer Filtering KOBLENZ LANDAU

67 Besseres PCF Mit Fragment Program möglich (Bild aus GPU Gems) Standard OpenGL 4 Samples, Jittering 16 Samples KOBLENZ LANDAU

68 Weiche Schatten Bisher immer harte Schattenkanten PCF erzeugt keine echten Halbschatten Unrealistisch, da in der Realität immer ausgedehnte Lichtquellen Ausnahme z.b. Sonnenlicht Kernschatten Halbschatten KOBLENZ LANDAU

69 Weiche Schatten Einfachste Variante: Überlagerung mehrerer harter Schatten Mehrere Punkte auf Lichtquelle auswählen, pro Punkt Shadow Map bestimmen Accumulation Buffer verwenden oder einzelne Schatten über Blending kombinieren KOBLENZ LANDAU - 7 -

70 Verschiedene Anzahl Shadow Maps KOBLENZ LANDAU

71 Post-Perspective Shadow Mapping Idee von Stamminger & Drettakis 2: Kamera in Lichtquelle betrachtet die Szene, aber nach der perspektivischen Division von der Betrachterposition Pixel der Shadow Map sind im Bild überall ungefähr gleich groß KOBLENZ LANDAU

72 Post-Perspective Shadow Mapping Studienarbeit Nico Hempe (Trapezoid Shadow Mapping) KOBLENZ LANDAU

73 Shadow Maps Vorteile Beliebig komplexe Geometrie, bei grossen Modellen i.a. schneller als Shadow Volumes Läuft komplett mit Grafik Hardware Nachteile Aliasing, Schattenkanten eckig Z-fighting, falsche Selbstverschattung Nur Spotlights KOBLENZ LANDAU

74 Shadow Maps Erweiterungen Anti-Aliasing (z Buffer & Schattenkanten) Reeves et al.1987 (PCF) Zhang 1998 (Forward Shadow Mapping) Fernando et al. 2 (Adaptive Shadow Maps) Brabec et al. 22 (Practical Shadow Mapping) Stamminger / Drettakis 22 (Perspective Shadow Maps) Sen et al. 23 (Shadow Silhouette Maps) Weiskopf et al. 23 (Dual Depth Layers) Govindaraju et al. 23 (Shadow Maps für grosse Szenen) Wimmer et al. 24 (Light Space Shadow Maps) Martin et al. 24 (Trapezoidal Shadow Maps) Chan & Durand 24 (Kombination Shadow Maps & Shadow Volumes) Aila & Laine 24 (Alias-Free Shadow Maps) Chong et al. 24 (A Lixel for every Pixel) Arvo et al. 24 (Tiled Shadow Maps) Lloyd et al. 26 (Shadow Map Warping and Partitioning) Weiche Schatten Heidrich et al. (Lineare Lichtquelle) Agrawala et al. 2 (Image Based Shadow Maps) Ying et al. 22 (Area Approximation) Brabec et al. (Single Sample) Chan & Durand 23 (Smoothies) Wyman & Hansen 23 (Penumbra Maps) Arvo et al. 24 (Approximate Soft Shadows) Donnelly et al. 26 (Variance Shadow Maps) Kompression Arvo et al. 24 (Compressed Shadow Maps) KOBLENZ LANDAU

75 Zusammenfassung Projektive Schatten Einfach und schnell ein Schatten auf dem Boden Shadow Volumes Pixelgenaue Schatten, Geometrie geschlossen, Vorverarbeitung Shadow Maps Schnell bei großen Geometrien, aber verschiedene Artefakte KOBLENZ LANDAU

Kapitel 4: Schattenberechnung

Kapitel 4: Schattenberechnung Kapitel 4: Schattenberechnung 1 Überblick: Schattenberechnung Motivation Schattenvolumen Shadow Maps Projektive Schatten 2 Motivation Wesentlich für die Wahrnehmung einer 3D-Szene Eigentlich ein globaler

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

(10) Deferred Shading

(10) Deferred Shading (10) Deferred Shading Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich, Gerrit Lochmann Wdh. 1: Framebufferobjects (FBOs) Statt in den Framebuffer direkt zu rendern, kann man Texturen attachen,

Mehr

OpenGL auf Mac OS X und ios

OpenGL auf Mac OS X und ios OpenGL auf Mac OS X und ios Torsten Kammer 28.4.2011 CocoaHeads Aachen Grundlagen API für hardwarebeschleunigte 3D-Grafik Kann auch für schnelles 2D verwendet werden Grundlage von Core Image, Core Animation,

Mehr

Shader. Computer Graphics: Shader

Shader. Computer Graphics: Shader Computer Graphics Computer Graphics Shader Computer Graphics: Shader Inhalt Pipeline Memory Resources Input-Assembler Vertex-Shader Geometry-Shader & Stream-Output Rasterizer Pixel-Shader Output-Merger

Mehr

Computergrafik 1 Übung

Computergrafik 1 Übung Prof. Dr. Andreas Butz Dipl.-Medieninf. Hendrik Richter Dipl.-Medieninf. Raphael Wimmer Computergrafik 1 Übung 4 1 Was ist OpenGL? OpenGL = Open Graphics Library API für Echtzeit-3D-Grafik Hardwarebeschleunigt

Mehr

Schatten 13. Vorlesung Photorealistische Computergrafik Computergrafik

Schatten 13. Vorlesung Photorealistische Computergrafik Computergrafik Schatten 13. Voresung Photoreaistische Computergrafik Thorsten Grosch Warum Schatten Mit Schatten Höherer Reaismus Abstände können besser eingeschätzt werden Gobae Beeuchtung: Sichtbarkeitstest i Warum

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

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

Computer Graphics Shader

Computer Graphics Shader Computer Graphics Shader Sven Janusch Inhalt Fixed Function Pipeline Programmable Pipeline Implementierung Applikation Beispiel Sven Janusch 2 Fixed Function Pipeline T&L Pipeline (Transformation and Lighting)

Mehr

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU (7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung

Mehr

(6) Fortgeschrittene GPU- Programmierung

(6) Fortgeschrittene GPU- Programmierung (6) Fortgeschrittene GPU- Programmierung Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich Beleuchtung Vertex void main() { N Eckpunkt Lichtquelle lightvec vec4 vertex = gl_modelviewmatrix

Mehr

2. Übung zu Computergraphik 2

2. Übung zu Computergraphik 2 2. Übung zu Computergraphik 2 Stefan Müller KOBLENZ LANDAU Aufgabe 1: Accumulation Buffer Tiefenunschärfe mit Accumulation Buffer simulieren Idee: Szene von versch. Kamerapositionen (from) aus betrachten

Mehr

3.6 Schattenberechnung

3.6 Schattenberechnung 3.6 Schattenberechnung Schatten sind für die realistische Darstellung von Szenerien sehr wichtig, da der Mensch aus dem Alltag gewohnt ist, Schatten zu sehen, so dass Bilder ohne Schatten sehr unnatürlich

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

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik GLSL Agenda Rendering Pipeline Prozessoren: Vertex Prozessor Fragment Prozessor OpenGL Setup für GLSL Shader-Grundlagen Beispiele Die Rendering-Pipeline

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche

Mehr

OpenGL 2.0 Vertex Arrays

OpenGL 2.0 Vertex Arrays OpenGL 2.0 Vertex Arrays Boguslaw Sylla Interaktive 3D-Computergrafik SS 2010 Hochschule RheinMain Inhalt des Vortrags 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren

Mehr

Logarithmic Perspective Shadow Maps

Logarithmic Perspective Shadow Maps Logarithmic Perspective Shadow Maps Konni Hartmann Universität Göttingen Sem. Computergrafik, 2009 Sem. Computergrafik, 2009 1 / Ziele des Vortrags Überblick zu verschieden Shadow-Mapping-Techniken Herleitung

Mehr

Beleuchtung. in Computerspielen

Beleuchtung. in Computerspielen Beleuchtung in Computerspielen Motivation Überblick Licht und Schattierung Lichtquellen Lokale Beleuchtungsmodelle Schattierungsverfahren Oberflächensimulation Beispiele der CryEngine Ausblick Zusammenfassung

Mehr

Visualisierung und Volumenrendering 2

Visualisierung und Volumenrendering 2 Institut für Computervisualistik Universität Koblenz 06.07.2012 Inhaltsverzeichnis 1 Literatur 2 Wiederholung 3 DVR Volumen Literatur Real-Time Volume Graphics Volumenrendering CG Shader Beispiele Volumen

Mehr

Christina Nell. 3D-Computergrafik

Christina Nell. 3D-Computergrafik Christina Nell 3D-Computergrafik Was ist 3D-Computergrafik? 3D graphics is the art of cheating without getting caught. (unbekannte Quelle) Folie 2/52 Inhalt Beleuchtung Shading Texturierung Texturfilterung

Mehr

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni 1 Ablauf GPU Programm Vertex und Fragment Shader 2 3 4 5 Image Processing 6 Ablauf GPU Programm Ablauf GPU Programm Vertex und Fragment

Mehr

Computergraphik Grundlagen

Computergraphik Grundlagen Computergraphik Grundlagen IX. Texturen und Schatten Prof. Stefan Schlechtweg Hochschule Anhalt Fachbereich Informatik Inhalt Lernziele 1. Texture Mapping 1. Texture Pipeline 2. Environment Mapping 3.

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

Übungsstunde 8 zu Computergrafik 1

Übungsstunde 8 zu Computergrafik 1 Institut für Computervisualistik Universität Koblenz 14. und 15. Januar 2013 Inhaltsverzeichnis 1 Wiederholung - Beleuchtung Gouraud-Shading Phong-Shading Flat-Shading Vergleich 2 - Idee in OpenGL Texturfilterung

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

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Prof. Andreas Butz Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Szenegraphen, Texturen und Displaylisten. Agenda Organisatorisches Das Konzept der Szenegraphen Grundlagen Beispiel eines

Mehr

Grundlagen der 3D-Grafik

Grundlagen der 3D-Grafik Seminar Programmierung von Grafikkarten Grundlagen der 3D-Grafik 8.5.26 Dominik Bossdorf Christian Schulze Marco Sebastiao 1 Inhalt Grafikhardware Rendering Pipeline am Beispiel OpenGL 3D Theorie mit homogenen

Mehr

Echtzeitfähige Schatten in Mixed Reality-Umgebungen. Diplomarbeit

Echtzeitfähige Schatten in Mixed Reality-Umgebungen. Diplomarbeit Fachbereich 4: Informatik Echtzeitfähige Schatten in Mixed Reality-Umgebungen Diplomarbeit zur Erlangung des Grades eines Diplom-Informatikers im Studiengang Computervisualistik vorgelegt von Jens Freiling

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-07-09 Noch Kapitel XVI Realtime Ray Tracing KD-Tree: Surface Area Heuristic Ziele der Aufteilung in Child Nodes: 1. Möglichst gleich viele Objekte

Mehr

3D Programmierpraktikum: OpenGL Shading Language (GLSL)

3D Programmierpraktikum: OpenGL Shading Language (GLSL) 3D Programmierpraktikum: OpenGL Shading Language (GLSL) Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 13. Juli 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Gliederung. Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen Wilfried Mascolus - OpenGL Teil II 2/20

Gliederung. Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen Wilfried Mascolus - OpenGL Teil II 2/20 OpenGL II Gliederung Blending Licht Anwendungsbeispiel Optimierung OpenGL heute und morgen 26.07.10 Wilfried Mascolus - OpenGL Teil II 2/20 Blending Entscheidung, was passiert, wenn sich zwei Objekte überlappen

Mehr

Die Welt der Shader. Fortgeschrittene Techniken III

Die Welt der Shader. Fortgeschrittene Techniken III Die Welt der Shader Fortgeschrittene Techniken III Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Gliederung 1. Was ist ein Shader? 2. Verschiedene

Mehr

Beleuchtung Schattierung Rasterung

Beleuchtung Schattierung Rasterung Beleuchtung Schattierung Rasterung Thomas Jung t.jung@htw-berlin.de Beleuchtung, Schattierung und Rasterung in allen Echtzeit-3D-Umgebungen gleich OpenGL Direct3D 3dsmax,... Letzter Bestandteil der Grafikpipeline

Mehr

Beleuchtung. Matthias Nieuwenhuisen

Beleuchtung. Matthias Nieuwenhuisen Beleuchtung Matthias Nieuwenhuisen Überblick Warum Beleuchtung? Beleuchtungsmodelle Lichtquellen Material Reflexion Shading Warum Beleuchtung? Tiefeneindruck Realitätsnähe: Reflexionen Spiegelungen Schatten

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-18 Kapitel XIII Texturing Definition: Textur (Computergrafik) Geometrieunabhängige Oberflächeneigenschaft Typischerweise höher aufgelöst als

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-04 Kapitel VIII: Per Primitive Operations Primitive I 3 Primitive II Elementare grafische Grundform Besteht in OpenGL aus Folge von 1-3 Vertices

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

3D Programmierpraktikum: Szenegraphen und Texturierung

3D Programmierpraktikum: Szenegraphen und Texturierung 3D Programmierpraktikum: Szenegraphen und Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 1. Juni 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum SS2006

Mehr

Texture Mapping Beispiel. Universität Frankfurt

Texture Mapping Beispiel. Universität Frankfurt Texture Mapping Beispiel Texture Mapping Warum? - Detailreiche Oberfläche ohne zusätzliche Polygone Texturen I - 1D-Texturen - 2D-Texturen - 3D-Texturen Element der Textur: Texel Texturen II - Änderung

Mehr

Übungsstunde 7 zu Computergrafik 1

Übungsstunde 7 zu Computergrafik 1 Institut für Computervisualistik Universität Koblenz 10. und 11. Dezember 2012 Inhaltsverzeichnis 1 Licht und Material Licht in OpenGL Material in OpenGL 2 in C++ Licht in OpenGL Lichtquellen In OpenGL

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 SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc.

Computergrafik SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc. Computergrafik SS 2012 Probeklausur 1 06.07.2012 Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc. Aufgabe 1 (19 Punkte) Beantworten Sie die folgenden Fragen prägnant.

Mehr

Shadowing. Vortrag im Rahmen des PIXAR-Seminars, Juli Philipp Freyer

Shadowing. Vortrag im Rahmen des PIXAR-Seminars, Juli Philipp Freyer Shadowing Vortrag im Rahmen des PIXAR-Seminars, Juli 2011 Philipp Freyer Inhalt Schatten... 3 Kernschatten (Hard Shadow)... 3 Berechnung... 3 Hard Shadow Rendering... 4 Shadow Maps... 4 Shadow Volumes...

Mehr

OpenGL und die Fixed-Function-Pipeline

OpenGL und die Fixed-Function-Pipeline OpenGL und die Fixed-Function-Pipeline Proseminar Game Design WS 07/08 Jan-Hendrik Behrmann Einführung In modernen Computerspielen hat sich inzwischen die Darstellung der Spielwelt in dreidimensionaler

Mehr

5 Mapping-Techniken. 5.1 Motivation

5 Mapping-Techniken. 5.1 Motivation 5.1 Motivation Bisher sind alle Oberflächen (polygonale Objekte, später auch parametrisierte Freiformflächen) glatt im Gegensatz zu wirklich existierenden natürlichen Oberflächen. Die explizite Wiedergabe

Mehr

Einführung in die API OpenGL

Einführung in die API OpenGL Einführung in die API OpenGL LMU München - LFE Medieninformatik Folie 1 Überblick Was ist OpenGL? OpenGL und Windows 3D Grafik Grundlagen OpenGL benutzen Transformationen, Licht, Texture Mapping Ein kleines

Mehr

Adaptives Displacement Mapping unter Verwendung von Geometrieshadern

Adaptives Displacement Mapping unter Verwendung von Geometrieshadern Fakultät Informatik Institut für Software- und Multimediatechnik, Professur für Computergraphik und Visualisierung Adaptives Displacement Mapping unter Verwendung von Geometrieshadern Diplomarbeit Timo

Mehr

Informatik Fakultät Lehrstuhl für Computergrafik und Visualisierung. René Lützner

Informatik Fakultät Lehrstuhl für Computergrafik und Visualisierung. René Lützner Informatik Fakultät Lehrstuhl für Computergrafik und Visualisierung René Lützner Dresden, 22.05.2013 Motivation Computer Simulationen von dynamischen Molekulardaten Eigenschaften und Verhalten von großen

Mehr

BlendaX Grundlagen der Computergrafik

BlendaX Grundlagen der Computergrafik BlendaX Grundlagen der Computergrafik Beleuchtungsmodelle (Reflection Models) 16.11.2007 BlendaX Grundlagen der Computergrafik 1 Rendering von Polygonen Der Renderingprozess lässt sich grob in folgende

Mehr

(5) GPU Programmierung

(5) GPU Programmierung (5) GPU Programmierung Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich, Thorsten Grosch KOBLENZ LANDAU Fantastische Effekte in Echtzeit... Real-Time Fur Over Arbitrary Surfaces, Lengyel

Mehr

Michael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER

Michael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER Michael Bender Martin Brill Computergrafik Ein anwendungsorientiertes Lehrbuch 2., überarbeitete Auflage HANSER Inhaltsverzeichnis Vorwort XI 1 Einleitung 1 1.1 Die Entwicklung der Computergrafik 1 1.2

Mehr

Name: Musterlösung Seite 2

Name: Musterlösung Seite 2 Name: Musterlösung Seite 2 Beantworten Sie die Fragen in Aufgabe 1 mit einer kurzen, prägnanten Antwort. Die Fragen zu OpenGL beziehen sich auf die in der Vorlesung vorgestellte OpenGL Version 3.1 (core)

Mehr

Texture Based Direct Volume Rendering

Texture Based Direct Volume Rendering Texture Based Direct Volume Rendering Vorlesung: "Advanced Topics in Computer Graphics" cbrak@upb.de 1 Agenda 1. Einleitung Volume Rendering 1.1. Volumendatensatz 1.2. Volumenintegral 1.3. Image order

Mehr

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

(9) Modernes OpenGL. Vorlesung Computergraphik III S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU (9) Modernes OpenGL Vorlesung Computergraphik III S. Müller OpenGL Shading Language (GLSL) Teil des OpenGL 2.0 Standards Syntax orientiert sich an C / C++ Funktionen Einfache Datentypen (float, int, bool)

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

(8) Schatten. Vorlesung Computergrafik II Stefan Müller. Dank an Niklas Henrich, Gerrit Lochmann, Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

(8) Schatten. Vorlesung Computergrafik II Stefan Müller. Dank an Niklas Henrich, Gerrit Lochmann, Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU (8) Schatten Voresung Computergrafik II Stefan Müer Dank an Nikas Henrich, Gerrit Lochmann, Stefan Riing Wiederhoung : Norma Maps Oberfächendetais durch Normaen Normaen in Tetur kodiert Beeuchtung per

Mehr

Soft Shadow Volumes. Ilja Kipermann. vorgelegt von. Studienarbeit. im Studiengang Computervisualistik

Soft Shadow Volumes. Ilja Kipermann. vorgelegt von. Studienarbeit. im Studiengang Computervisualistik Fachbereich 4: Informatik Soft Shadow Volumes Studienarbeit im Studiengang Computervisualistik vorgelegt von Ilja Kipermann Betreuer: Dipl.-Inform. Thorsten Grosch (Institut für Computervisualistik, AG

Mehr

Hot Topics. 18. Vorlesung

Hot Topics. 18. Vorlesung Hot Topics 18. Vorlesung Photorealistische Computergrafik Thorsten Grosch Einleitung Heute Verschiedene aktuelle Themen Alles was nicht in die Vorlesung gepasst hat Danach Fragen / Kommentare zur Vorlesung

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

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

Modellierung. Oliver Hartmann

Modellierung. Oliver Hartmann Modellierung Oliver Hartmann oliver.hartmann@uni-ulm.de Inhalt Boolesche Operationen Splines B-Splines Bezier-Kurven NURBS Anwendung Sculpting Volumengrafik Marching Cubes Ray Casting Texture Mapping Boolesche

Mehr

Mathematics for 3D Game Programming & Computer Graphics. 10. Shadows. Sonja Barth & Martin Siebenborn. Proseminar Numerik

Mathematics for 3D Game Programming & Computer Graphics. 10. Shadows. Sonja Barth & Martin Siebenborn. Proseminar Numerik Mathematics for 3D Game Programming & Computer Graphics 1. Shadows Sonja Barth & Martin Siebenborn Proseminar Numerik Prof. Schul Übersicht 1. Verschiedene Techniken 2. Algorithmus Übersicht 3. Berechnung

Mehr

Lokale Beleuchtungsmodelle

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

Mehr

Geometrische Primitive und Hidden Surface Removal

Geometrische Primitive und Hidden Surface Removal C A R L V O N O S S I E T Z K Y Geometrische Primitive und Hidden Surface Removal Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Wiederholung Geometrische Primitive in OpenGL Mit

Mehr

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis Computergrafik Michael Bender, Manfred Brill Ein anwendungsorientiertes Lehrbuch ISBN 3-446-40434-1 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40434-1 sowie

Mehr

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung. Vorlesung vom

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung. Vorlesung vom Computergrafik 2010 Oliver Vornberger Kapitel 18: Beleuchtung Vorlesung vom 08.06.2010 1 Korrektur α Für den Winkel zwischen den normierten Vektoren und gilt: ~v ~w A B C D sin(α) = ~v ~w 0,0 % sin(α)

Mehr

Prozedurale Texturen >>Was nicht passt wird passend gemacht...<<

Prozedurale Texturen >>Was nicht passt wird passend gemacht...<< Prozedurale Texturen >>Was nicht passt wird passend gemacht...

Mehr

7.1 Polygon Offset. Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit:

7.1 Polygon Offset. Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit: 7.1 Polygon Offset Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit: - Polygone sollen einmal als Fläche und einmal in Wireframe-Darstellung

Mehr

CGR I Beleuchtung und Schattierung

CGR I Beleuchtung und Schattierung CGR I Beleuchtung und Schattierung SS 2004 Michael Haller Medientechnik und -design Ankündigung 25.Mai (HEUTE!!), 18:00 HS1 Hr. Riegler, Firma Sproing 03. Juni, 17:30 HS1 Prof. Dieter Schmalstieg, TU Wien

Mehr

Computergrafik 1 Beleuchtung

Computergrafik 1 Beleuchtung Computergrafik 1 Beleuchtung Kai Köchy Sommersemester 2010 Beuth Hochschule für Technik Berlin Überblick Lokale Beleuchtungsmodelle Ambiente Beleuchtung Diffuse Beleuchtung (Lambert) Spiegelnde Beleuchtung

Mehr

C for Graphics Benjamin Rommel Seminar 'Paralleles Rechnen auf Grafikkarten' Sommersemester 2009 Betreuer: Julian M.

C for Graphics Benjamin Rommel Seminar 'Paralleles Rechnen auf Grafikkarten' Sommersemester 2009 Betreuer: Julian M. C for Graphics Benjamin Rommel 12.05.2009 Seminar 'Paralleles Rechnen auf Grafikkarten' Sommersemester 2009 Betreuer: Julian M. Kunkel 'C for Graphics', Benjamin Rommel, SS 2009 Inhaltsübersicht Gliederung

Mehr

Rendering: Lighting and Shading

Rendering: Lighting and Shading Rendering: Lighting and Shading Hauptseminar: How to make a Pixar Movie Inhalt Einführung Was ist Rendering Was ist Reflexionsmodelle Lighting Shading Globale Beleuchtungsmodelle Zusammenfassung 2/53 Inhalt

Mehr

Geometry Shader. Ausarbeitung im Rahmen des Seminars Echtzeit Rendering" Von Sebastian Jackel Franz Peschel. Geometry Shader 1

Geometry Shader. Ausarbeitung im Rahmen des Seminars Echtzeit Rendering Von Sebastian Jackel Franz Peschel. Geometry Shader 1 Geometry Shader Ausarbeitung im Rahmen des Seminars Echtzeit Rendering" Von Sebastian Jackel Franz Peschel Geometry Shader 1 Inhalt I Einführung II Facts Renderpipeline III Funktionsweise Geometry Shader

Mehr

Teil 7: Beleuchtung Beleuchtungsmodelle, Schattierungsmodelle

Teil 7: Beleuchtung Beleuchtungsmodelle, Schattierungsmodelle Beleuchtungsmodelle, Schattierungsmodelle Einleitung Beleuchtung vs. Schattierung Beleuchtung: Modell auswerten (anschl.) global vs. lokal phsikalisch (photo-realistisch?) vs. empirisch Phong-Modell Schattierung:

Mehr

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung

3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung 3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 8. Mai 26 LMU München Medieninformatik Boring/Hilliges

Mehr

Computergraphik 1 LU ( ) Ausarbeitung Abgabe 2

Computergraphik 1 LU ( ) Ausarbeitung Abgabe 2 Computergraphik 1 LU (186.095) Ausarbeitung Abgabe 2 Beispiel 4... 2 CG1Object... 2 if (dobackfaceeculling && numvertexindec >=3)... 2 CG1ScanfilledPolygon CG1Polygon... 2... 2... 3 buildactivelist (int

Mehr

Bitmaps. - Definition eigener Zeichenmuster - Definition eigener Schriften. Zeichnen auf Pixel- und Bitmap-Ebene

Bitmaps. - Definition eigener Zeichenmuster - Definition eigener Schriften. Zeichnen auf Pixel- und Bitmap-Ebene Bitmaps Grundlagen - Bitmaps sind rechteckige Arrays bestehend aus 0 und 1 Werten - Sie dienen als Zeichenmaske in einem rechteckigen Fensterbereich - Bei gegebner Zeichenfarbe f=(r, B, G) werden die Pixel,

Mehr

HLSL PostProcess Shaders

HLSL PostProcess Shaders HLSL Advanced 1 HLSL PostProcess Shaders Einführung PostProcess Effekte werden erst nach dem Rendern aller Objekte angewandt, nämlich auf das Render-Target (daher der Name). Das Spektrum der Möglichkeiten

Mehr

Games Engines. Realtime Terrain Rendering

Games Engines. Realtime Terrain Rendering Games Engines Realtime Terrain Rendering RTR Gliederung Probleme & Anforderungen Grundlagen Heightmaps und Paging Visibility View Frustrum Culling Occlusion Culling/ Occlusion Map Fogging Level of Detail

Mehr

Spieleprogrammierung mit DirectX und C++

Spieleprogrammierung mit DirectX und C++ Ulrich Kaiser, Philipp Lensing Spieleprogrammierung mit DirectX und C++ 2D-, 3D- und Netzwerkspiele, viele Spezialeffekte Galileo Press Einleitung 11 Danksagung 13 Vorwort zur zweiten Auflage 14 1 Vorbereitung

Mehr

:= Modellabbildung. Bildsynthese (Rendering) Bildsynthese

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

Mehr

Computergraphik Grundlagen

Computergraphik Grundlagen Computergraphik Grundlagen XI. Rasterung Füllen von Polygonen Prof. Stefan Schlechtweg Hochschule nhalt Fachbereich Informatik Inhalt Lernziele 1. Zu lösendes Problem 2. Füllen von Pixelmengen 1. Rekursiver

Mehr

3.1 Motivation. - Mit (mehreren) Koordinatentransformationen wird das Objektsystem in das Gerätesystem transformiert.

3.1 Motivation. - Mit (mehreren) Koordinatentransformationen wird das Objektsystem in das Gerätesystem transformiert. 3.1 Motivation Wichtige Grundlage der Bildwiedergabe auf dem Bildschirm oder anderen Ausgabegeräten sind Koordinatensysteme und Koordinatentransformationen im IR 2 und IR 3. Im allgemeinen unterscheidet

Mehr

"rendern" = ein abstraktes geometrisches Modell sichtbar machen

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

Mehr

Lights & Cameras Grundlagen Autodesk Maya. Grundlagen. Version Ingo Clemens brave rabbit

Lights & Cameras Grundlagen Autodesk Maya. Grundlagen. Version Ingo Clemens brave rabbit Lights & Cameras Grundlagen Version 1.0-2009-06-15 Grundlagen 3D Beleuchtung Reguläre Lichter in 3D sind in erster Linie direkt beleuchtende Lichtquellen es gibt keine diffuse Beleuchtung durch die Reflexion

Mehr

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

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

Mehr

Graphische Datenverarbeitung Visualisierungstechniken. Prof. Dr. Elke Hergenröther

Graphische Datenverarbeitung Visualisierungstechniken. Prof. Dr. Elke Hergenröther Graphische Datenverarbeitung Visualisierungstechniken Prof. Dr. Elke Hergenröther Visualisierungstechniken Visualisierung: Visualisierung bedeutet sichtbar machen, darstellen. Die CG beschränkt sich dabei

Mehr

Jörn Loviscach Hochschule Bremen

Jörn Loviscach Hochschule Bremen Programmierbare Hardware-Shader Jörn Loviscach Hochschule Bremen Überblick Vertex- und Pixel-Shader Anwendungsbeispiele fx-dateien Anwendungsbeispiele Zusammenfassung Puffer Vertex- und Pixel-Shader Hardware-Renderpipeline

Mehr

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

Rendering Grundlagen Autodesk Maya. Grundlagen. Version 1.0-2009-04-08. 2009 Ingo Clemens brave rabbit www.braverabbit.de Rendering Grundlagen Version 1.0-2009-04-08 Allgemeine Unterschiede bei Renderern Scanline Rendering Raytrace Rendering Renderlayer Einsatz von Renderlayern Overrides Material Overrides Layer Presets Batch

Mehr

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

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-19 Die Erde ist eine Scheibe! Die Erde ist eine Kugel! 2012-06-19, H.W., Wörtlich 1992-11-02, Papst J.P. II. Sinngemäß. Kirchengeschichtlicher

Mehr

Beleuchtung Schattierung Rasterung

Beleuchtung Schattierung Rasterung Thomas Jung t.jung@htw-berlin.de Beleuchtung Schattierung Rasterung 1 Beleuchtung, Schattierung und Rasterung in allen Echtzeit-3D-Umgebungen gleich OpenGL Direct3D 3dsmax,... Letzter Bestandteil der Grafikpipeline

Mehr

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung

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

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Prof. Andreas Butz Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Grundlagen der Computergrafik: Affine Transformationen Beleuchtung in OpenGL. Organisatorisches & Zeitplan Bearbeitungszeitraum

Mehr

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

D-Texturen. Reflectance Mapping 3D-Texturen. Farbtexturen 2D-Texturen Texturarten Abbildung Transformationen Generierung Thomas Jung Reflectance Mapping 3D-Texturen Modellierung von Details erfordert Zeit Darstellung ist aufwendig (langsam) Details belegen Speicherplatz

Mehr

Licht. Elektromagnetische Strahlung Emitter > Reflektor -> Auge. Sichtbares Spektrum: 400nm 700nm. Universität Frankfurt

Licht. Elektromagnetische Strahlung Emitter > Reflektor -> Auge. Sichtbares Spektrum: 400nm 700nm. Universität Frankfurt Licht Elektromagnetische Strahlung Emitter > Reflektor -> Auge Sichtbares Spektrum: 400nm 700nm Farbwahrnehmung Farbbeschreibung I Farbton - rot, gelb, blau,... Helligkeit Nähe zu schwarz oder weiss Sättigung

Mehr