Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Fejlett grafikai algoritmusok Megvilágítási modellek

Hasonló előadás


Az előadások a következő témára: "Fejlett grafikai algoritmusok Megvilágítási modellek"— Előadás másolata:

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!


Letölteni ppt "Fejlett grafikai algoritmusok Megvilágítási modellek"

Hasonló előadás


Google Hirdetések