10
C A R L V ON O SS I ET Z KY Hinweise zu ¨ Ubungsblatt 5 Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011

2010-JOGL-07-Hinweise-Uebungsblatt05

Embed Size (px)

Citation preview

Page 1: 2010-JOGL-07-Hinweise-Uebungsblatt05

C A R LV O N

O S S I E T Z K Y

Hinweise zu Ubungsblatt 5

Johannes Diemke

Ubung im Modul OpenGL mit JavaWintersemester 2010/2011

Page 2: 2010-JOGL-07-Hinweise-Uebungsblatt05

Hinweise zu Ubungsblatt 5

Nebel

Einfacher atmospharischer Effekt

In der Fixed Function Pipeline implementiert

I Kurz vor Ende der Rendering PipelineI Anpassen der Fragmente bevor sie ausgegeben werden

Anwendungsgebiete

I Mehr RealismusI Geben Hinweise uber die Platzierung und Ausdehnung von ObjektenI Hilfreich bei Culling durch die Far Plane

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 2/10

Page 3: 2010-JOGL-07-Hinweise-Uebungsblatt05

Hinweise zu Ubungsblatt 5

Nebel (Forts.)

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 3/10

Page 4: 2010-JOGL-07-Hinweise-Uebungsblatt05

Hinweise zu Ubungsblatt 5

Nebel (Forts.)

Die Fragmentfarbe cp ergibt sich in Abhangigkeit von

I Nebelfarbe cfI Nebelfaktor f ∈ [0, 1] (fallt mit zunehmender Entfernung)I Oberflachenfarbe cs

cp = f cs + (1− f )cf

Diverse Funktionen zum Ermitteln von f

I Linear Fog: f =zend−zp

zend−zstart

I Exponential Fog: f = e−df zp

I Squared Exponential Fog: f = e−(df zp)2

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 4/10

Page 5: 2010-JOGL-07-Hinweise-Uebungsblatt05

Hinweise zu Ubungsblatt 5

Nebel (Forts.)

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 5/10

Page 6: 2010-JOGL-07-Hinweise-Uebungsblatt05

Hinweise zu Ubungsblatt 5

Nebel in OpenGL

float[] fogColor = new float[] {0.2f, 0.2f, 0.2f, 1.0f};

gl.glClearColor(fogColor[0], fogColor[1], fogColor[2], fogColor[3]);

gl.glEnable(GL2.GL_FOG);

gl.glFogfv(GL2.GL_FOG_COLOR, fogColor, 0);

gl.glFogf(GL2.GL_FOG_START, 5.0f);

gl.glFogf(GL2.GL_FOG_END, 30.0f);

gl.glFogi(GL2.GL_FOG_MODE, GL2.GL_LINEAR);

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 6/10

Page 7: 2010-JOGL-07-Hinweise-Uebungsblatt05

Hinweise zu Ubungsblatt 5

Transluzente ObjektePartielle Lichtdurchlassigkeit

I Zeichnen mittels Alpha-BlendingI Fur α 6= 0.5 i.A. keine kommutative Operation

LosungenZwei Renderpasses

I Erst alle lichtundurchlassigen ObjekteI Daraufhin alle lichtdurchlassigen Objekte mittels

glDepthMask(GL FALSE)

I Lichtdurchlassige Dreiecke/Objekte sortieren

Alternativen

I Depth Peeling (order-independent transparency)I . . .

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 7/10

Page 8: 2010-JOGL-07-Hinweise-Uebungsblatt05

Hinweise zu Ubungsblatt 5

OpenGL Display-Listen

http://www.songho.ca/opengl/gl_displaylist.html

OpenGL Vertex-Arrays

http://www.songho.ca/opengl/gl_vertexarray.html

Torus-Knoten

Nachster Foliensatz!

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 8/10

Page 9: 2010-JOGL-07-Hinweise-Uebungsblatt05

Literatur

� Dave ShreinerOpenGL Programming Guidehttp://www.opengl-redbook.com/

� Richard S. Wright, Benjamin Lipchak und Nicholas HaemelOpenGL SuperBibelhttp://www.starstonesoftware.com/OpenGL/

� Randi J. RostOpenGL Shading Languagehttp://www.3dshaders.com/

� Tomas Akenine-Moller, Eric Haines und Naty HoffmanReal-Time Renderinghttp://www.realtimerendering.com/

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 9/10

Page 10: 2010-JOGL-07-Hinweise-Uebungsblatt05

Literatur

� Edward AngelInteractive Computer Graphicshttp://www.cs.unm.edu/˜angel/

� Gerald Farin und Dianne HansfordPractical Linear Algebrahttp://www.farinhansford.com/books/pla/

� Fletcher Dunn und Ian Parberry3D Math Primer for Graphics and Game Developmentwww.gamemath.com/

Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 10/10