Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaBotond Boros Megváltozta több, mint 10 éve
1
Fejlett grafikai algoritmusok Megvilágítási modellek
Illés László, Palatinus Endre, Provits Milán, Török Péter
2
tartalom Projekt összefoglaló Keretrendszer Shaderek További lépések
Tévutak Végleges irány Shaderek További lépések Eddigi teljesítmény
3
Összefoglalás Megvilágítási modellek megvalósítása GLSL nyelven, OpenGL keretrendszerben Projekt weblap: Tagok: Illés László, Palatinus Endre, Provits Milán, Török Péter
4
Keretrendszer - Tévutak
SharpGL Ígéretes kezdeményezés Nem kezeli a shader betöltést GLEW bekötése nem sikerült, access violation TAO Framework Weboldala nem elérhető Mintaprogramjai kivétellel leállnak
5
Keretrendszer Nate Robins féle alapok Egyéb eszközök Ablakkezelés
WaveForm OBJ betöltés Nézőpont váltás Egyéb eszközök Shaderek dinamikus betöltése Vertex program Fregmens program Szöveges leíró
6
Keretrendszer
7
Keretrendszer - TODO Eredmények összehasonlítása
A két kép különbsége új ablakban Shaderek áttekintése egy külön ablakban Leírás Forráskód Shaderek szerkesztése futásidőben Szövegszerkesztő ablak Újrabetöltés (Shader betöltés, fordítás, kötés)
8
VERTEX PROGRAM – TOON2 Tárgyak megvilágítása korlátozott számú színnel, rajzfilmhatás keltése varying vec3 lightDir,normal; void main() { lightDir = normalize(vec3(gl_LightSource[0].position)); normal = gl_NormalMatrix * gl_Normal; gl_FrontColor = gl_Color; gl_Position = ftransform(); }
9
FREGMENS program – toon2
varying vec3 lightDir,normal; void main() { float intensity; vec4 color; // normalizing the lights position to be on the safe side vec3 n = normalize(normal); intensity = dot(lightDir,n); if (intensity > 0.95) color = vec4(1.0,1.0,1.0,1.0); else if (intensity > 0.5) color = vec4(0.7,0.7,0.7,1.0); else if (intensity > 0.25) color = vec4(0.4,0.4,0.4,1.0); else color = vec4(0.1,0.1,0.1,1.0); gl_FragColor = (gl_FrontLightModelProduct.sceneColor + gl_FrontLightProduct[0].ambient + gl_FrontLightProduct[0].diffuse + gl_FrontLightProduct[0].specular) * color; }
10
Vertex program – phong Phong-féle megvilágítási modell GLSL megvalósítása varying vec3 N; varying vec3 v; void main(void) { v = vec3(gl_ModelViewMatrix * gl_Vertex); N = normalize(gl_NormalMatrix * gl_Normal); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; }
11
FREGMENS PROGRAM – PHONG
varying vec3 N; varying vec3 v; void main(void) { // we are in Eye Coordinates, so EyePos is (0,0,0) vec3 L = normalize(gl_LightSource[0].position.xyz - v); vec3 E = normalize(-v); vec3 R = normalize(-reflect(L,N)); //calculate Ambient Term: vec4 Iamb = gl_FrontLightProduct[0].ambient; //calculate Diffuse Term: vec4 Idiff = gl_FrontLightProduct[0].diffuse * max(dot(N,L), 0.0); // calculate Specular Term: vec4 Ispec = gl_FrontLightProduct[0].specular * pow(max(dot(R,E),0.0), gl_FrontMaterial.shininess); // write Total Color: gl_FragColor = gl_FrontLightModelProduct.sceneColor + Iamb + Idiff + Ispec; }
12
További lépések Shaderek tökéletesítése Shaderek összehasonlítása
Szubjektív módszerekkel Objektív módszerekkel Különbségkép számítás, eltérések egymástól Számítási igény (műveletek száma)
13
Példák
14
Köszönöm a figyelmet!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.