Tech, szoftvertervezés és programozás

Szoftverfejlesztés, Shaderprogramozás, DirectX

  • A betűméret növelése
  • Alapértelmezett betűméret
  • A betűméret csökkentése
Címlap Shaderprogramozás Shaderprogramozás - tartalomjegyzék

Shaderprogramozás - tartalomjegyzék

E-mail Nyomtatás PDF
Olvasóink értékelése: / 7
ElégtelenKitűnő 
Tartalomjegyzék
Shaderprogramozás - tartalomjegyzék
Geometriai transzformációk
A számítógépes képszintézis
Megvilágítás és árnyalás
Mintafeszítés
Direct3D-alapú alkalmazások fejlesztése
Shaderprogramozás, HLSL és az effektkeretrendszer
Shaderalapú fejlesztés a gyakorlatban
HLSL-függelék
Minden oldal

Shaderprogramozás

A Shaderprogramozás - Grafika és játékfejlesztés DirectX-szel könyv tartalomjegyzéke

Köszönetnyilvánítás ................................................. xv
Előszó .....................................................................
1. Bevezető ........................................................... 1
2. 3D-történelem .................................................... 3
3. Matematikai alapok .............................................. 7
3.1. Trigonometriai gyorstalpaló .............................................................. 7
3.1.1. A szög. Fok és radián .................................................................. 7
3.1.2. Szögfüggvények a derékszögű háromszögben ...................... 9
3.1.3. Szögfüggvények az egységsugarú körben ............................ 10
3.1.4. A Descartes-féle derékszögű koordinátarendszer ................ 12
3.2. Vektorok ............................................................................................. 17
3.2.1. Szabadvektor, helyvektor ........................................................ 17
3.2.2. Vektor megadása koordinátákkal ........................................... 18
3.2.3. A vektor hossza ......................................................................... 19
3.2.4. Vektorok összeadása ................................................................ 22
3.2.5. Vektorok kivonása .................................................................... 24
3.2.6. Vektor szorzása számmal ........................................................ 25
3.2.7. Egységvektor, vektor normalizálása ...................................... 26
3.2.8. A skalárszorzat (dot product) ................................................. 27
3.2.9. A vektoriális szorzat (cross product) ...................................... 29
3.2.10. Koordinátarendszer-váltás .................................................... 31
Vektorok transzformációja koordinátarendszerek között ....... 31
Pontok transzformációja koordinátarendszerek között ........... 33
3.2.11. Sugarak ..................................................................................... 35
3.3. A sík ..................................................................................................... 35
3.3.1. A normálvektor ......................................................................... 36
3.3.2. A sík létrehozása normálvektora és
egy pontja segítségével ............................................................. 38
3.3.3. A sík létrehozása három pontja alapján ................................. 39
3.3.4. Pont és sík helyzete ................................................................... 41
3.3.5. Sík normálvektorának normalizálása ..................................... 41
3.3.6. Sík transzformálása ................................................................... 42
3.3.7. Szakasz és sík döféspontja ....................................................... 43
3.3.8. Baricentrikus koordináták ....................................................... 45
3.4. Mátrixok.............................................................................................. 46
3.4.1. A mátrix meghatározása .......................................................... 47
3.4.2. Négyzetes mátrixok .................................................................. 48
3.4.3. A sor- és az oszlopmátrix ......................................................... 49
3.4.4. Egységmátrix és nullamátrix ................................................... 49
3.4.5. Mátrixok összeadása és kivonása ........................................... 50
3.4.6. Mátrixok szorzása skalárral ..................................................... 51
3.4.7. Mátrix szorzása mátrixszal ...................................................... 51
3.4.8. Vektorok szorzása mátrixszal.................................................. 52
3.4.9. Koordinátarendszer-váltó transzformációs mátrix .............. 53
3.4.10. Mátrix transzponáltja.............................................................. 54
3.4.11. Az inverz mátrix ...................................................................... 55
3.5. Kvaterniók .......................................................................................... 56

4. Geometriai transzformációk ................................. 61
4.1. Lineáris transzformációk .................................................................. 61
4.1.1. Átméretezés (skálázás) két dimenzióban .............................. 62
4.1.2. Háromdimenziós skálázás ....................................................... 64
4.1.3. Forgatás 2D-ben ........................................................................ 64
4.1.4. Háromdimenziós forgatás
a koordinátatengelyek körül .................................................... 67
4.2. Affin transzformációk ....................................................................... 70
4.2.1. Eltolás 2D-ben ............................................................................ 71
4.2.2. Háromdimenziós eltolás .......................................................... 71
4.2.3. Homogén koordináták ............................................................. 73
4.2.4. Az eltolás transzformációs mátrixa ........................................ 74
4.2.5. A skálázás transzformációs mátrixa ....................................... 75
4.2.6. A koordinátatengelyek körüli forgatás
transzformációs mátrixai .......................................................... 76
4.2.7. Tetszőleges tengely körüli forgatás
transzformációs mátrixa ........................................................... 80
4.3. A „gimbal lock” ................................................................................. 80
4.4. Forgatás kvaterniókkal ..................................................................... 83
4.5. Transzformációk összekapcsolása .................................................. 86

5. A számítógépes képszintézis ................................ 89
5.1. Poligonhálók. A háromszög-modellezés ....................................... 92
5.1.1. Geometriai primitívek .............................................................. 95
5.2. A virtuális kamera ............................................................................. 98
5.3. Vetítések.............................................................................................. 99
5.3.1. Párhuzamos vetítések ............................................................. 101
5.3.2. Perspektívavetítések ............................................................... 102
5.4. A számítógépes képszintézis szakaszai ....................................... 103
5.4.1. Világ-transzformáció .............................................................. 103
5.4.2. Nézeti transzformáció ............................................................ 105
5.4.3. Megvilágítás, fényforrások .................................................... 107
5.4.4. Vetületi transzformáció .......................................................... 107
5.4.5. Látható felületek meghatározása.
Hátsó lap eldobása .................................................................. 114
5.4.6. Képpontok takarása. A Z-puffer algoritmus ....................... 118
5.4.7. Optimalizálás mélységi rendezéssel ..................................... 122
5.4.8. Vágás ......................................................................................... 123
5.4.9. Képernyő-transzformáció ...................................................... 123
5.4.10. Raszterizáció .......................................................................... 125

6. Megvilágítás és árnyalás .................................... 127
6.1. Fényforrások .................................................................................... 128
6.1.1. Szórt háttérvilágítás ................................................................ 128
6.1.2. Direkcionális fényforrások (directional light) ..................... 129
6.1.3. Pontszerű fényforrások (point light) .................................... 130
6.1.4. Reflektorszerű fényforrások .................................................. 131
6.2. Megvilágítási modellek .................................................................. 131
6.2.1. Általános háttér-megvilágítás ............................................... 132
6.2.2. Terjedő, Lambert-féle fényvisszaverődés ............................ 132
6.2.3. A Lambert-féle távolság- és koszinuszfüggvény ................ 132
6.2.4. Fényfolt-visszaverődés ........................................................... 134
6.2.5. Tükröződő fényvisszaverődés .............................................. 135
6.2.6. Átlátszóság ............................................................................... 135
6.2.7. Árnyékképzés .......................................................................... 135
6.3. Árnyalási modellek ......................................................................... 136
6.3.1. Konstans árnyalás ................................................................... 136
6.3.2. Interpolált árnyalás ................................................................. 137

7. Mintafeszítés .................................................. 143
7.1. Textúrakoordináták ......................................................................... 144
7.2. Mintaburkolás, paraméterezés ...................................................... 146
7.2.1. Gömbfelületek mintaburkolása ............................................. 146
7.2.2. Hengeres mintaburkolás ........................................................ 148
7.3. Textúracímzési módok ................................................................... 149
7.4. Mintaszűrés ...................................................................................... 151
7.5. Textúrarészletességi szintek .......................................................... 152
7.6. Mintakeverés, multitextúrázás ...................................................... 153
7.7. Tömörített textúraformátumok ..................................................... 154
8. A Direct3D ..................................................... 157
8.1. Alapfogalmak ................................................................................... 157
8.1.1. HAL, SW és REF eszközök .................................................... 159
8.1.2. A COM szoftverfejlesztési modell ........................................ 160
8.1.3. Felületek ................................................................................... 162
8.1.4. Lapváltás .................................................................................. 165
8.1.5. Pixelformátumok ..................................................................... 166
8.1.6. Memóriaosztályok .................................................................. 168
8.1.7. Csúcspontfeldolgozási képességek....................................... 169
8.2. A Direct3D környezet inicializálása .............................................. 170
8.2.1. Az IDirect3D9 interfész lekérdezése .................................... 172
8.2.2. Képpontformátum-támogatás ellenőrzése .......................... 172
8.2.3. Vertex-feldolgozási képességek lekérdezése ....................... 174
8.2.4. A létrehozandó eszköz paramétereinek beállítása ............. 175
8.2.5. Az eszköz létrehozása ............................................................ 177
8.2.6. Az eszköz érvénytelenné válása ........................................... 180
8.3. DirectX hibakereső .......................................................................... 181

9. Direct3D-alapú alkalmazások fejlesztése ............... 185
9.1. Fejlesztőkörnyezet, beállítások ...................................................... 185
9.2. A legegyszerűbb DirectX-program ............................................... 187
9.2.1. A WinMain függvény ............................................................. 188
9.2.2. Az ablak létrehozása ............................................................... 189
9.2.3. Az üzenetkezelő ...................................................................... 191
9.2.4. A Direct3D inicializálása ........................................................ 193
9.2.5. Az alkalmazás főciklusa ......................................................... 195
9.2.6. Megjelenítés ............................................................................. 197
9.2.7. Kilépés, erőforrások felszabadítása ...................................... 200
9.3. Teljes képernyős üzemmód ........................................................... 201
9.4. A csúcspontformátum megadása .................................................. 205
9.5. A vertex- és az indexpuffer ............................................................ 208
9.5.1. A pufferek osztályzása. Optimalizálási szempontok ......... 212
9.6. Hozzáférés a puffermemóriához ................................................... 214
9.7. Megjelenítés előtti beállítások ........................................................ 217
9.7.1. A vertexcsatorna ...................................................................... 217
9.7.2. Az indexpuffer érvénybe léptetése ....................................... 218
9.7.3. A vertexdeklaráció megadása ............................................... 218
9.8. A geometria megjelenítése: DrawPrimitive és
DrawIndexedPrimitive ................................................................... 218

10. Shaderprogramozás, HLSL és
az effektkeretrendszer ..................................... 221
10.1. HLSL, árnyalók, regiszterek –
alacsony szintű megközelítés ....................................................... 222
10.2. Shadertámogatás ellenőrzése ....................................................... 225
10.3. Shaderek, effektek. Az FX-keretrendszer ................................... 227
10.3.1. A vertexshader ...................................................................... 230
10.3.2. A pixelshader ......................................................................... 235
10.3.3. Az effektállomány ................................................................. 237
10.4. Az effektfordító .............................................................................. 240
10.5. Az effekt az alkalmazás perspektívájából .................................. 242
10.5.1. Effektparaméterek ................................................................. 245
10.5.2. Az effekt bevetése ................................................................. 248
10.6. Hibakeresés a shaderben .............................................................. 250

11. Shaderalapú fejlesztés a gyakorlatban .................. 253
11.1. A példaprogramok felépítése. A keretrendszer ........................ 254
11.1.1. Hibakezelés, naplózás .......................................................... 255
Naplózás ....................................................................................... 256
Kivételkezelés ............................................................................... 258
11.1.2. A központi függvény ............................................................ 260
11.1.3. Inicializálás, ellenőrzések ..................................................... 261
11.1.4. A CPrimitive osztály ............................................................. 264
11.1.5. Váltás teljes képernyős és ablakos
üzemmód között ................................................................... 276
11.1.6. Beviteli eszközök – a billentyűzet és
az egér kezelése ..................................................................... 279
11.1.7. Szöveg megjelenítése ............................................................ 287
11.1.8. Időzítés ................................................................................... 291
11.1.9. Kamerakezelés ....................................................................... 295
11.2. Az első effekt – Huzalvázas modell megjelenítése ................... 299
11.2.1. Gyakorlatok ........................................................................... 301
11.3. Színek .............................................................................................. 302
11.4. Színes geometria megjelenítése ................................................... 305
11.4.1. Gyakorlatok ........................................................................... 310
11.5. 3D-objektumok betöltése külső állományból.
Az X-formátum .............................................................................. 311
11.5.1. Az X-modell betöltése........................................................... 312
11.5.2. Anyagtulajdonságok és textúrák lekérdezése ................... 314
11.5.3. Megjelenítés ........................................................................... 316
11.5.4. A modell csúcspontformátumának módosítása ............... 317
11.5.5. Az eredeti vertexformátum összevetése
elvárásainkkal ........................................................................ 319
11.5.6. A modellháló optimalizálása ............................................... 320
11.6. Megvilágítási modellek ................................................................ 322
11.6.1. Általános háttérmegvilágítás ............................................... 323
11.6.2. Terjedő, diffúz fényvisszaverődés ...................................... 327
11.6.3. Fényfolt-visszaverődés ......................................................... 336
11.6.4. Pontszerű fényforrások ........................................................ 342
11.6.5. Reflektorszerű fényforrások ................................................ 347
11.6.6. Képpontonkénti megvilágítás – a Phong-árnyalás ........... 351
11.6.7. Képpontonkénti megvilágítás –
a Phong-Blinn árnyalás ........................................................ 355
11.6.8. Gyakorlatok ........................................................................... 358
11.7. Mintaillesztés ................................................................................. 358
11.7.1. Textúrázott kocka megjelenítése ......................................... 359
A textúrakoordinátákat tartalmazó vertexformátum ............. 360
A kocka vertexpufferének feltöltése ......................................... 361
A textúra betöltése ....................................................................... 363
A textúra bevetése. Az effektállomány ..................................... 367
Mintavételezők ............................................................................. 368
Mozaikszerű elrendezés, csempézés ......................................... 370
A képpontárnyaló ........................................................................ 372
11.7.2. Textúrakoordináta-alapú animáció .................................... 373
11.7.3. Textúrázott X-modell ............................................................ 375
11.7.4. Multitextúrázás ..................................................................... 377
11.7.5. Gyakorlatok ........................................................................... 385
11.8. Átlátszóság. Az anyag és a textúra
alfacsatorna alkalmazása .............................................................. 385
11.8.1. Megjelenítési sorrend az átlátszó objektumok esetében .. 389
11.8.2. Anyag- és textúraalapú alfakeverés ................................... 390
11.8.3. Gyakorlatok ........................................................................... 393
11.9. Speciális effektek ........................................................................... 393
11.9.1. Rajzfilmszerű megjelenítés .................................................. 393
11.9.2. Buckaleképzés ....................................................................... 397
11.9.3. Környezeti térkép .................................................................. 404
Fényvisszaverő és fénytörő környezetleképzés ...................... 408
11.9.5. Gyakorlatok ........................................................................... 411

HLSL-függelék ...................................................... 413
HLSL-utasítások (gyorsreferencia) ...................................................... 413
A HLSL alapelemei ................................................................................ 417
Kulcsszavak ....................................................................................... 417
Adattípusok ....................................................................................... 418
Skalárok ......................................................................................... 418
Vektorok ........................................................................................ 418
A mátrix típus .............................................................................. 419
Fontosabb kulcsszavak ..................................................................... 420
Típusmódosítók ................................................................................ 421
Tárgymutató ........................................................ 427