Számítógépes grafika DirectX 5. gyakorlat
Emlékeztető Háromdimenziós alapok befejezése Textúrázás
Tartalom 1. Megvilágítás 2. Indexelt primitívek
M egvilágítási modell A fény különböző típusú anyagokkal történő interakcióját más-más modellekkel fogjuk vizsgálni A végső megvilágítás közelítésünk ezek összegéből fog adódni
Emisszív modell emissive = Ke
Környezeti megvilágítás ambient = Ka x globalAmbient
Diffúz megvilágítás diffuse = Kd x lightColor x max(N · L, 0)
Fényvisszaverő modell specular = Ks x lightColor x (max(N · H, 0))^(shininess)
Fényvisszaverő modell specular = Ks x lightColor x (max(N · H, 0))^(shininess)
Fényvisszaverő modell
Összegezve
Shader parancsok pow(a, b): a-t a b-edik hatványra emeli max(a, b): visszaadja az a és b közül a nagyobbikat saturate(a): az a értékét 0 és egy közé viszi így: (a 1) ? 1 : a ) reflect(a, b): az a beesési irányból b felületi normálissal rendelkező felületi pontba beeső (fény)sugár visszaverődési iránya
Shader parancsok mul(A, x): az A mátrixot összeszorozza az x vektorral (DE: más sorrendben is beírhatóak, de mi így használjuk!) tex2D( sampler2D texture, float2 t): a textúránk t paraméterhez tartozó színértékét adja vissza (mintavételezi a textúrát a beállított szűrök segítségével az adott pontban, ezért sampler2D a textúra típusának neve)
Shader parancsok dot(a, b): a és b vektorok skaláris szorzatát adja vissza cross(a, b): a és b vektorok vektoriális szorzatát adja vissza normalize(a): az a/||a|| -t adja vissza a * b: a és b vektorokat összeszorozza komponensenként, az eredmény tehát float4 típusú a és b esetén ( a.x*b.x, a.y*b.y, a.z*b.z, a.w*b.w) lesz
Swizzle Vektorokkal:.x, y, z, w, a, r, g, b: float4 vec1 = float4(4.0, -2.0, 5.0, 3.0); float2 vec2 = vec1.yx; // vec2 = (-2.0, 4.0) float scalar = vec1.w; // scalar = 3.0 float3 vec3 = scalar.xxx; // vec3 = (3.0, 3.0, 3.0) Mátrixokban is swizzle: _m[row][col] myFloatVec4 = myMatrix._m00_m11_m22_m33;
Feladat 1. Valósítsuk meg a négy fenti modellt, innen indulva: 1_LightingStartup.zip 1_LightingStartup.zip 2. Legyen a textúrának is hatása a végső színre 3. Két piramis legyen a színtéren, a második legyen másfélszer akkora, mint az első és 45 fokkal elforgatott az Y tengely körül pozitív irányban, eltolva (15,0,15)-tel
Tartalom 1. Megvilágítás 2. Indexelt primitívek (ld. dx_gy7.ptt)