Computergrafk Unverstät Bern Herbst 2010
Abgabe am 18. November Code bs Mttag 12 Uhr m Ilas hohladen! Für Abgabe an Assstenten onlne neu enshreben Für jede Telaufgabe separate Java Klasse mahen
Pont Lght Per Pxel Shader http://www.lghthouse3d.om/opengl/glsl/ndex.php?pontlght Soll das Blnn-Beleuhtungsmodell für ene Punktlhtquelle mt per Pxel Shadng mplementeren
Ernnerung Blnn-Beleuhtungsmodell:
Untershed OpenGL vs. Skrpt: OpenGL: Lht-Farbe wrd für spekulare-, dffuseund ambente Komponente enzeln beshreben, und l, d l, s l, a Neben dem globalen ambenten Term, exstert noh en ambenter Term l a für, jede Lhtquelle. Alle dre Komponenten der Lht-Farbe l d l s l a werden mt dem Attenuatonsfaktor,,, und, multplzert a Skrpt: Lht Farbe st ene enzge Farbe Es exstert nur en globaler ambenter Term l a l Nur wrd mt dem Attenuatonsfaktor multplzert, dkd ( L n) l, sks( h n) s l l, a k a k a a
Vertex Shader Bult-n Funktonen Bult-n Unforms Bult-n Attrbute Ernnerung: Unforms: Inputvarablen de für alle Vertes dentsh snd, solange se nht explzt verändert werden Bsp: Transformatonsmatrzen, Materalegenshaften et. Attrbute: Inputvarablen de für jedes Vertex enen egenen Wert brauhen Bsp: Farbe, Poston, Normale et.
Vertex Shader varyng Varablen: Werden perspektvsh korrekt nterpolert und an den Fragment-Shader übergeben
Vertex Shader De ve (e{2,3,4}) Datentypen snd Vektoren mt Float-Elementen.
Vertex Shader De ve (e{2,3,4}) Datentypen snd Vektoren mt Float-Elementen. Komponentenzugrffe mt.x,.y,.z und.w
Vertex Shader De ve (e{2,3,4}) Datentypen snd Vektoren mt Float-Elementen. Komponentenzugrffe mt.x,.y,.z und.w Swzzlng: Komponenten des Vektors zu enem neuen Vektor zusammensetzten.
Vertex Shader De ve (e{2,3,4}) Datentypen snd Vektoren mt Float-Elementen. Komponentenzugrffe mt.x,.y,.z und.w Swzzlng: Komponenten des Vektors zu enem neuen Vektor zusammensetzten. Bespel: ve4 v = (1, 2, 3, 4) v.x -> (1) v.xy -> (1, 2) v.yx -> (2, 1) v.zzz -> (3, 3, 3) v.wwxx -> (4, 4, 1, 1)
Vertex Shader De ve (e{2,3,4}) Datentypen snd Vektoren mt Float-Elementen. Komponentenzugrffe mt.x,.y,.z und.w Swzzlng: Komponenten des Vektors zu enem neuen Vektor zusammensetzten. Bespel: ve4 v = (1, 2, 3, 4) v.x -> (1) v.xy -> (1, 2) v.yx -> (2, 1) v.zzz -> (3, 3, 3) v.wwxx -> (4, 4, 1, 1) Man kann statt xyzw auh rgba oder stpq verwenden!
Vertex Shader gl_normalmatrx = Wandelt Normal-Vektoren ns Kamerakoordnatensystem um gl_normal = der Normalenvektor der zum Vertex gehört
Vertex Shader gl_modelvewmatrx = De Objet-to-Camera-Matrx gl_vertex = De Objekt-Koordanten des Vertex.
Vertex Shader Über gl_lghtsoure[] kann auf alle relevanten Informatonen der Lhtquelle zugegrffen werden:
Vertex Shader
Vertex Shader
Vertex Shader
Vertex Shader gl_frontmateral enthält alle relevanten Informatonen der Materalvordersete (für uns st de Materalrüksete unnteressant): a a a a l s s s l d d l k k n h k n L k,,, ) ( ) (
Vertex Shader a a a a l s s s l d d l k k n h k n L k,,, ) ( ) (
Vertex Shader gl_poston = Spezelle Output-Varable. Shreben n dese Varable st für jeden Vertex-Shader zwngend! ftransform() = Spezelle Funkton, de de Vertex- Koordnaten genau so transformert, we de feste Funktonsppelne.
Fragment Shader varyngs müssen mt denen m Vertex Shader überenstmmen!
Fragment Shader a a a a l s s s l d d l k k n h k n L k,,, ) ( ) (
Fragment Shader Länge des grünen Pfels st nht Ens, auh wenn de beden blauen Pfele normalsert snd!
Fragment Shader
Fragment Shader
Fragment Shader
Fragment Shader a a a a l s s s l d d l k k n h k n L k,,, ) ( ) (
Fragment Shader
Fragment Shader
Fragment Shader a a a a l s s s l d d l k k n h k n L k,,, ) ( ) (
Fragment Shader gl_fragcolor = Output-Varable des Fragment Shaders Bestmmt Farbe des Fragments.
Aufgabe 1: Fügt de neuen beretgestellten Klassen ns jrtr hnzu Es soll möglh sen m SzenenManager mehrere Lhtquellen zu defneren Modfzert de jrtr.shape Klasse so, dass jedes Objekt ene Referenz auf en Materal hat Demonstraton anhand der begefügten Shader (hr müsst dese für dese Aufgabe noh nht selber shreben)
Aufgabe 2: Der zu erstellende Shader st dem ähnlh, der gerade erläutert wurde Hauptuntershed: Es soll en per Pxel Phong-Shadng mplementert werden für zwe Punktlhtquellen
Aufgabe 3: Texturen n Shader: Werden als Unforms an de Shader übergeben. GLSL kann über sampler2d Datentypen auf 2D-Texturen zugrefen
Aufgabe 3: Texturen n Shader: Werden als Unforms an de Shader übergeben. GLSL kann über sampler2d Datentypen auf 2D-Texturen zugrefen Enzelne Pxel können mthlfe der texture2d()-methode ausgelesen werden
Aufgabe 3: Texturen n Shader: Werden als Unforms an de Shader übergeben. GLSL kann über sampler2d Datentypen auf 2D-Texturen zugrefen Enzelne Pxel können mthlfe der texture2d()-methode ausgelesen werden Bespel: gl_texcoord[0] st herbe en Bult-n Attrbut über das auf de Texturkoordnaten enes Vertes zugegrffen werden kann.
Aufgabe 3: Gloss Maps Hellgket enes Texturpxels (dh. Summe von R,G und B) wrd verwendet um den Wert des spekularen Materal-Koeffzenten zu bestmmen Kann auh anders mplementert werden
Aufgabe 4: Maht mt Shaders was hr wollt ;-)
Aufgabe 4: Ihr dürft Code verwenden, den hr m Netz fndet!
Aufgabe 4: Ihr dürft Code verwenden, den hr m Netz fndet!.könnt aber gern auh was selber versuhen :-)
Aufgabe 4: Bespele: Toon Shader
Aufgabe 4: Bespele: Proedural Brk Shader
Aufgabe 4: Bespele: Proedural Strpe Shader
Aufgabe 4: Bespele: (für mutge) Proedural Nose Shader
Aufgabe 4: Bespele: Vele wetere Möglhketen Glyph Bombng Gooh Shadng Jula Set Toy Ball Dsardng Fragments
Anmerkung: In der Theore st GLSL Hardware-Unabhängg n der Praxs stmmt das leder nht mmer! Programmert de Shader auf dem Rehner, auf dem hr se uns demonstreren wollt!
Anmerkung: In der Theore st GLSL Hardware-Unabhängg n der Praxs stmmt das leder nht mmer! Programmert de Shader auf dem Rehner, auf dem hr se uns demonstreren wollt! GLSL Syntax hghlghts n elpse gbt es mt dem Elpse Shader add-on: http://soureforge.net/projets/glshaders/ Evtl. noh notwendg de Fle-Assoatons anzupassen In Elpse 3.6: Wndow->Preferenes->Edtors->Fle Assoatons Dort unter Fle Types *.frag und *.vert Hnzufügen und für bede als Assoated Edtor den GLSL Edtor auswählen
Fragen?