Programowanie efektow graficznych w Direct 3D, Książki

[ Pobierz całość w formacie PDF ]
//-->Notka biograficznaPiotr Gwiazdowski jest absolwentem Politechniki Śląskiej w Gliwicach. W cza-sie trwania studiów uzyskał wyróżnienie w konkursie „Mobile Your Dreams”za grę „MexMobile”. Od 2008 roku zawodowo zajmuje się programowaniemgier komputerowych, głównie na nowoczesne platformy mobilne. Praca ta zao-wocowała wydaniem m.in. tytułów „The Big Roll in Paradise” oraz „SailboatChampionship”. Jego zainteresowania koncentrują się wokół silników graficz-nych oraz rozpoznawania obrazów. Obecnie bierze udział w nowatorskim pro-jekcie dotyczącym analizy i interaktywnej syntezy ludzkiego ruchu.StreszczenieNiniejsza książka stanowi wprowadzenie w świat niskopoziomowej grafiki trój-wymiarowej. Skierowana jest do studentów informatyki zainteresowanych pro-gramowaniem nowoczesnych gier komputerowych. Zastosowanym API grafi-cznym jest Direct3D w wersji 10. Książka omawia podstawy matematycznezwiązane z grafiką trójwymiarową oraz oferuje pomoc w stawianiu pierwszychkroków w świecie niskopoziomowych mechanizmów. Szczegółowo przedstawio-ne wybrane efekty wizualne prezentują różne sposoby wykorzystania możli-wości oferowanych przez API, mając dodatkowo na celu zachęcić czytelnika doeksperymentowania we własnym zakresie. Dodatkowo zamieszczono porady,które, mimo iż nie zawsze są bezpośrednio związana z grafiką trójwymiarową,wskazują dobre praktyki w świecie programowania gier.Ta książka powinna być cytowana jako:Gwiazdowski, P., 2011. Programowanie efektów graficznych w Direct3D. Warszawa:Wydawnictwo PJWSTK.Spis treści1Wprowadzenie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1 Wymagane umiejętności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2 Wymagania sprzętowe i programowe . . . . . . . . . . . . . . . . . . . . . . .1.3 Konwencje stosowane w książce . . . . . . . . . . . . . . . . . . . . . . . . . . .Podstawy matematyczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.2 Układ współrzędnych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.3 Wektory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.3.1 Definicja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.3.2 Proste operacje na wektorach . . . . . . . . . . . . . . . . . . . . . . .2.3.3 Długość wektora i normalizacja . . . . . . . . . . . . . . . . . . . . .2.3.4 Iloczyn skalarny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.3.5 Iloczyn wektorowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.3.6 Wektor normalny wielokąta i wierzchołka . . . . . . . . . . . . .2.3.7 Dodatkowe operacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.4 Macierze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.4.1 Definicja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.4.2 Mnożenie macierzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.4.3 Macierz jednostkowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.4.4 Macierz transponowana . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.4.5 Odwrotność macierzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.5 Transformacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.5.1 Translacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.5.2 Rotacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.5.3 Skalowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.5.4 Składanie transformacji . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.5.5 Intuicyjna interpretacja macierzy 4×4 . . . . . . . . . . . . . .2.5.6 Transformacja wektora . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.5.7 Transformacje odwrotne . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.6 Przestrzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11123333446688101010111213131314141616182021232VISpis treści2.6.1 Przestrzeń lokalna i globalna . . . . . . . . . . . . . . . . . . . . . . . .2.6.2 Przestrzeń widoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.6.3 Przestrzeń projekcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.7 Pozostałe definicje matematyczne . . . . . . . . . . . . . . . . . . . . . . . . . .2.7.1 Sympleks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2.7.2 Współrzędne barycentryczne . . . . . . . . . . . . . . . . . . . . . . . .2.7.3 Znormalizowane współrzędne barycentryczne . . . . . . . . . .2.7.4 Współrzędne barycentryczne dla sympleksu2-wymiarowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3Podstawy niskopoziomowej grafiki 3D. . . . . . . . . . . . . . . . . . . . .3.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.2 Wierzchołki, prymitywy i siatki . . . . . . . . . . . . . . . . . . . . . . . . . . .3.3 Podstawy API graficznych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.3.1 Potok renderowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.3.2 Jednostki cieniowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.4 Techniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.4.1 Bufory wierzchołków i indeksów . . . . . . . . . . . . . . . . . . . . .3.4.2 Łańcuch wymiany . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3.4.3 Usuwanie niewidocznych prymitywów . . . . . . . . . . . . . . . .3.4.4 Bufor głębokości . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Podstawy Direct3D 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.1.1 Uwagi odnośnie do poprzednich wersji . . . . . . . . . . . . . . .4.1.2 Uwagi odnośnie do COM . . . . . . . . . . . . . . . . . . . . . . . . . . .4.1.3 Biblioteki pomocnicze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.2 Potok renderowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.2.1 Etapy potoku renderowania . . . . . . . . . . . . . . . . . . . . . . . . .4.2.2 Przepływ danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.2.3 Efekty, techniki i przebiegi . . . . . . . . . . . . . . . . . . . . . . . . . .4.3 Inicjalizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.3.1 Konfiguracja łańcucha wymiany . . . . . . . . . . . . . . . . . . . . .4.3.2 Urządzenie Direct3D 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.3.3 Konfiguracja etapu scalania . . . . . . . . . . . . . . . . . . . . . . . . .4.3.4 Konfiguracja rasteryzera . . . . . . . . . . . . . . . . . . . . . . . . . . .4.4 Tworzenie geometrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.4.1 Tworzenie bufora wierzchołków . . . . . . . . . . . . . . . . . . . . .4.4.2 Tworzenie układu wierzchołków . . . . . . . . . . . . . . . . . . . . .4.5 Tworzenie efektów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.5.1 Cieniowanie wierzchołków . . . . . . . . . . . . . . . . . . . . . . . . . .4.5.2 Cieniowanie geometrii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.5.3 Cieniowanie pikseli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.5.4 Definicja techniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.5.5 Kompilacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2323242727282829313131323233333334363841414142424344454646474850525253545556575858594Spis treściVII4.6 Odrysowywanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.7 Transformacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.7.1 Tworzenie bufora indeksów . . . . . . . . . . . . . . . . . . . . . . . . .4.7.2 Zmienne efektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.7.3 Zmienne efektu w aplikacji . . . . . . . . . . . . . . . . . . . . . . . . .4.7.4 Obliczanie macierzy świata-widoku-projekcji . . . . . . . . . .4.7.5 Modyfikacja funkcji rysującej . . . . . . . . . . . . . . . . . . . . . . .4.8 Teksturowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.8.1 Współrzędne tekstur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.8.2 Modyfikacja efektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.8.3 Wczytanie i ustawienie tekstury . . . . . . . . . . . . . . . . . . . . .4.9 Zarządzanie stanami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.9.1 Stan rasteryzera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.9.2 Stan mieszania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.9.3 Stan głębokości-szablonu . . . . . . . . . . . . . . . . . . . . . . . . . . .4.9.4 Pozostałe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4.9.5 Zastosowanie zmiany stanów . . . . . . . . . . . . . . . . . . . . . . . .56062626364656768687071717374767778Tworzenie środowiska testowego. . . . . . . . . . . . . . . . . . . . . . . . . . . 835.1 Standard Template Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.2 Microsoft Foundation Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.3 DirectX Utility Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.4 Wczytywanie modeli OBJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.4.1 Opis struktury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.4.2 Wczytywanie danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875.4.3 Wyznaczanie wierzchołków, indeksów i atrybutów . . . . . 895.4.4 Tworzenie siatki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925.4.5 Rysowanie siatki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.5 Wczytywanie materiałów MTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.5.1 Opis struktury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.5.2 Wczytywanie danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965.5.3 Tworzenie materiału . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975.5.4 Powiązanie z efektem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995.5.5 Zastosowanie materiału . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015.6 Koncepcja uniwersalnego efektu . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Oświetlenie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076.1 Źródła światła . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086.1.1 Równoległe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096.1.2 Skupione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096.2 Składowe światła . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106.2.1 Światło otoczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116.2.2 Odbicie zwierciadlane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116.2.3 Odbicie rozproszone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116.3 Wyznaczenie oświetlenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126 [ Pobierz całość w formacie PDF ]