jezyk-cg.-programowanie-grafiki-w-czasie-rzeczywistym cała książka(1).pdf

(19510 KB) Pobierz
6
Język Cg. Programowanie grafiki w czasie rzeczywistym
Rozdział 2. Najprostsze programy.....................................................................55
2.1. Prosty program wierzchołków................................................................................ 55
2.1.1. Struktura wyjścia............................................................................................................... 56
2.1.2. Identyfikatory...................................................................................................................57
2.1.3. Elementy struktur ............................................................................................................58
2.1.4. Wektory .............................................................................................................................58
2.1.5. Macierze.............................................................................................................................58
2.1.6. Semantyka .........................................................................................................................59
2.1.7. Funkcje ..............................................................................................................................60
2.1.8. Różnice w semantyce wejścia i wyjścia .......................................................................... 61
2.1.9. Ciało funkcji .....................................................................................................................62
2.2. Kompilacja przykładu............................................................................................. 64
2.2.1. Profile programu wierzchołków ....................................................................................64
2.2.2. Klasy błędów kompilacji programów Cg..................................................................... 66
2.2.3. Błędy wynikające ze złego profilu.................................................................................. 66
2.2.4. Norma — kilka funkcji wejścia .....................................................................................68
2.2.5. Pobieranie i konfiguracja programów wierzchołków i fragmentów........................68
2.3. Prosty program fragmentów...................................................................................70
2.3.1. Profile dla programów fragmentów .............................................................................. 71
2.4. Rendering przykładowych programów wierzchołków i fragmentów...............72
2.4.1. Rendering trójkąta w OpenGL ......................................................................................73
2.4.2. Rendering trójkąta w Direct3D .....................................................................................74
2.4.3. Uzyskanie tych samych wyników ..................................................................................74
2.5. Ćwiczenia .................................................................................................................. 76
Rozdział 3. Parametry, tekstury i wyrażenia .....................................................77
3.1. Parametry...................................................................................................................77
3.1.1. Parametry jednolite ..........................................................................................................77
3.1.2. Kwalifikator typu const...................................................................................................80
3.1.3. Różnorodność parametrów ............................................................................................80
3.2. Próbkowanie tekstur ................................................................................................82
3.2.1. Obiekty próbek.................................................................................................................82
3.2.2. Próbki tekstur ...................................................................................................................83
3.2.3. Wysyłanie współrzędnych tekstury w trakcie próbkowania tekstury.......................84
3.3. Wyrażenia matematyczne ....................................................................................... 85
3.3.1. Operatory ..........................................................................................................................85
3.3.2. Typy danych uzależnione od profilu............................................................................86
3.3.3. Funkcje wbudowane w standardową bibliotekę Cg ....................................................90
3.3.4. Skręcanie w dwuwymiarze ..............................................................................................93
3.3.5. Efekt podwójnego widzenia ...........................................................................................96
3.4. Ćwiczenia ................................................................................................................ 100
Spis treści
7
Rozdział 4. Przekształcenia ........................................................................... 101
4.1. Układy współrzędnych ...........................................................................................101
4.1.1. Przestrzeń obiektu .......................................................................................................... 102
4.1.2. Współrzędne homogeniczne........................................................................................ 103
4.1.3. Przestrzeń świata............................................................................................................. 103
4.1.4. Przekształcenie modelu................................................................................................. 104
4.1.5. Przestrzeń oka ................................................................................................................. 105
4.1.6. Przekształcenie widoku ................................................................................................. 105
4.1.7. Przestrzeń przycięcia ..................................................................................................... 106
4.1.8. Przekształcenie rzutowania........................................................................................... 106
4.1.9. Znormalizowane współrzędne urządzenia ................................................................ 107
4.1.10. Współrzędne okna ....................................................................................................... 108
4.2. Zastosowanie teorii................................................................................................ 108
4.3. Ćwiczenia ................................................................................................................ 109
Rozdział 5. Oświetlenie...................................................................................111
5.1. Oświetlenie i związane z nim modele ................................................................... 111
5.2. Implementacja podstawowego modelu oświetlenia opartego na wierzchołkach...113
5.2.1. Podstawowy model oświetlenia.....................................................................................113
5.2.2. Program wierzchołków dla prostego oświetlenia opartego na wierzchołkach ..... 119
5.2.3. Program fragmentów dla modelu oświetlenia wykorzystującego wierzchołki ..... 128
5.2.4. Efekt modelu oświetlenia opartego na wierzchołkach............................................. 128
5.3. Model oświetlenia oparty na fragmentach ......................................................... 129
5.3.1. Implementacja modelu oświetlenia opartego na fragmentach ............................... 130
5.3.2. Program wierzchołków dla modelu oświetlenia opartego na fragmentach ...........131
5.3.3. Program fragmentów dla modelu oświetlenia opartego na fragmentach ..............131
5.4. Tworzenie funkcji modelu oświetlenia ................................................................133
5.4.1. Deklarowanie funkcji .................................................................................................... 133
5.4.2. Funkcja oświetlenia ....................................................................................................... 134
5.4.3. Struktury ......................................................................................................................... 135
5.4.4. Tablice ............................................................................................................................. 136
5.4.5. Sterowanie wykonywaniem programu ....................................................................... 137
5.4.6. Obliczenie modelu oświetlenia rozproszenia i rozbłysku....................................... 138
5.5. Rozszerzenie modelu podstawowego .................................................................. 138
5.5.1. Zanik światła wraz z odległością .................................................................................. 139
5.5.2. Dodanie efektu reflektora............................................................................................. 140
5.5.3. Światła kierunkowe ........................................................................................................ 145
5.6. Ćwiczenia ................................................................................................................ 145
Rozdział 6. Animacja ..................................................................................... 147
6.1. Ruch w czasie .......................................................................................................... 147
6.2. Pulsujący obiekt...................................................................................................... 148
6.2.1. Program wierzchołków.................................................................................................. 149
6.2.2. Obliczanie przemieszczenia......................................................................................... 150
8
Język Cg. Programowanie grafiki w czasie rzeczywistym
6.3. Systemy cząsteczek ................................................................................................. 152
6.3.1. Warunki początkowe ..................................................................................................... 153
6.3.2. Wektoryzacja obliczeń .................................................................................................. 153
6.3.3. Parametry systemu cząsteczek ...................................................................................... 154
6.3.4. Program wierzchołków ................................................................................................. 154
6.3.5. Ubieramy system cząsteczek......................................................................................... 156
6.4. Interpolacja ujęć kluczowych ............................................................................... 157
6.4.1. Teoria ujęć kluczowych ................................................................................................. 157
6.4.2. Rodzaje interpolacji ...................................................................................................... 160
6.4.3. Prosta interpolacja ujęć kluczowych ........................................................................... 160
6.4.4. Interpolacja ujęć kluczowych z oświetleniem............................................................ 162
6.5. System skóry dla wierzchołków.............................................................................163
6.5.1. Teoria systemu skóry dla wierzchołków ..................................................................... 163
6.5.2. System skóry w programie wierzchołków .................................................................. 166
6.6. Ćwiczenia ................................................................................................................ 167
Rozdział 7. Mapowanie środowiska................................................................. 169
7.1. Mapowanie środowiska ......................................................................................... 169
7.1.1. Tekstury map sześciennych........................................................................................... 170
7.1.2. Generowanie map sześciennych .................................................................................. 171
7.1.3. Koncepcja mapowania środowiska ............................................................................. 171
7.1.4. Obliczenie wektorów odbicia....................................................................................... 172
7.1.5. Założenia mapowania środowiska............................................................................... 173
7.2. Mapowanie odbić .................................................................................................. 174
7.2.1. Parametry określane przez aplikację ........................................................................... 175
7.2.2. Program wierzchołków ................................................................................................. 175
7.2.3. Program fragmentów .................................................................................................... 179
7.2.4. Mapy sterujące ............................................................................................................... 180
7.2.5. Program wierzchołków a program fragmentów........................................................ 180
7.3. Mapowanie załamań...............................................................................................181
7.3.1. Zjawisko załamania światła........................................................................................... 182
7.3.2. Program wierzchołków ................................................................................................. 184
7.3.3. Program fragmentów..................................................................................................... 186
7.4. Efekt Fresnela i rozszczepienie chromatyczne................................................... 187
7.4.1. Efekt Fresnela ................................................................................................................. 187
7.4.2. Rozszczepienie chromatyczne..................................................................................... 188
7.4.3. Parametry zależne od aplikacji .................................................................................... 189
7.4.4. Program wierzchołków ................................................................................................. 190
7.4.5. Program fragmentów .................................................................................................... 191
7.5. Ćwiczenia ................................................................................................................ 193
Spis treści
9
Rozdział 8. Mapowanie nierówności ................................................................ 195
8.1. Mapowanie nierówności ceglanej ściany ............................................................ 195
8.1.1. Mapa normalnych ceglanej ściany............................................................................... 196
8.1.2. Przechowywanie map nierówności jako map normalnych ..................................... 197
8.1.3. Proste mapowanie nierówności dla ceglanego muru................................................200
8.1.4. Mapowanie nierówności dla rozbłysku ......................................................................203
8.1.5. Mapowanie nierówności na innej geometrii..............................................................206
8.2. Mapowanie nierówności ceglanej podłogi .........................................................208
8.2.1. Program wierzchołków dla renderingu obrazu ceglanej podłogi ........................... 210
8.3. Mapowanie nierówności dla torusa..................................................................... 213
8.3.1. Matematyka dotycząca torusa ...................................................................................... 213
8.3.2. Program wierzchołków dla torusa z mapowaniem nierówności ............................ 216
8.4. Mapowanie nierówności dla teksturowanych siatek wielokątnych ................ 218
8.4.1. Algorytm dla pojedynczego trójkąta........................................................................... 218
8.4.2. Możliwe problemy ........................................................................................................220
8.4.3. Uogólnienie do siatek z wielokątów ...........................................................................222
8.5. Połączenie mapowania nierówności z innymi efektami .................................. 223
8.5.1. Standardowe tekstury .................................................................................................... 223
8.5.2. Mapy połysku.................................................................................................................223
8.5.3. Rzucanie cieni na samego siebie ..................................................................................224
8.6. Ćwiczenia ................................................................................................................ 225
Rozdział 9. Zagadnienia zaawansowane...........................................................227
9.1. Mgła .........................................................................................................................227
9.1.1. Mgła jednorodna ............................................................................................................228
9.1.2. Atrybuty mgły.................................................................................................................229
9.1.3. Matematyka mgły...........................................................................................................229
9.1.4. Dostosowanie równań do zachowania zgodnego z intuicją....................................232
9.1.5. Tworzenie jednorodnej mgły w programie Cg .......................................................... 233
9.2. Rendering nierealistyczny .................................................................................... 235
9.2.1. Cieniowanie jak w kreskówkach ..................................................................................235
9.2.2. Implementacja cieniowania kreskówkowego ............................................................236
9.2.3. Łączymy wszystko razem ..............................................................................................239
9.2.4. Problemy związane z tym rozwiązaniem ................................................................... 241
9.3. Rzutowanie tekstur ................................................................................................ 241
9.3.1. W jaki sposób działa rzutowanie tekstur?...................................................................242
9.3.2. Implementacja rzutowania tekstury ...........................................................................244
9.3.3. Kod rzutowania tekstury ..............................................................................................245
9.4. Mapowanie cieni....................................................................................................248
9.5. Łączenie ................................................................................................................... 250
9.5.1. Mapowanie pikseli z wejścia na wyjście ...................................................................... 251
9.5.2. Podstawowe operacje dotyczące łączenia ...................................................................252
9.6. Ćwiczenia ................................................................................................................ 254
Zgłoś jeśli naruszono regulamin