Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00592 010463 11032719 na godz. na dobę w sumie
DirectX. Rendering w czasie rzeczywistym - książka
DirectX. Rendering w czasie rzeczywistym - książka
Autor: Liczba stron: 688
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-120-7 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> gry >> directx
Porównaj ceny (książka, ebook, audiobook).
W ciągu kilku ostatnich lat przetwarzanie grafiki w czasie rzeczywistym osiągnęło stopień najwyższego zaawansowania. Obecnie powszechnie dostępne są procesory przetwarzania grafiki, które dorównują szybkością i możliwościami najdroższym stacjom graficznym sprzed zaledwie kilku lat.

Jeżeli jesteś gotów na pogłębienie swojej wiedzy na temat programowania grafiki, sięgnij po tę książkę. Opisuje ona zaawansowane zagadnienia w taki sposób, że nawet początkujący przyswajają je łatwo. Czytelnicy, którzy będą studiować tę książkę od początku i dokładnie ją przeanalizują, nie powinni mieć problemu z nauczeniem się coraz bardziej skomplikowanych technik. Czytelnicy zaawansowani mogą wykorzystywać tę książkę jako użyteczne źródło informacji, przeskakując od rozdziału do rozdziału, wtedy kiedy mają potrzebę nauczenia się lub dokładniejszego poznania wybranych problemów.

Książka zawiera: ... i wiele innych zaawansowanych technik, używanych przez profesjonalnych programistów. Towarzyszą jej cenne dodatki na CD (m.in. Microsoft DirectX® 8.1 SDK, wersja demonstracyjna przeglądarki efektów NVidia®, program do zrzutów video - VirtualDub, wersja demonstracyjna programu trueSpace firmy Caligari®)

Niezależnie od Twojego programistycznego doświadczenia, książka ta może posłużyć Ci jako przewodnik pozwalający na osiągnięcie mistrzostwa w wykorzystaniu możliwości programowania grafiki w czasie rzeczywistym.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE DirectX. Rendering w czasie rzeczywistym Autor: Kelly Dempski T³umaczenie: Rados³aw Meryk (wstêp, rozdz. 1 – 25, 37 – 40, dod. A), Krzysztof Jurczyk (rozdz. 26 – 36) ISBN: 83-7361-120-7 Tytu³ orygina³u: Real-Time Rendering Tricks and Techniques in DirectX Format: B5, stron: 688 W ci¹gu kilku ostatnich lat przetwarzanie grafiki w czasie rzeczywistym osi¹gnê³o stopieñ najwy¿szego zaawansowania. Obecnie powszechnie dostêpne s¹ procesory przetwarzania grafiki, które dorównuj¹ szybkoġci¹ i mo¿liwoġciami najdro¿szym stacjom graficznym sprzed zaledwie kilku lat. Je¿eli jesteġ gotów na pog³êbienie swojej wiedzy na temat programowania grafiki, siêgnij po tê ksi¹¿kê. Opisuje ona zaawansowane zagadnienia w taki sposób, ¿e nawet pocz¹tkuj¹cy przyswajaj¹ je ³atwo. Czytelnicy, którzy bêd¹ studiowaæ tê ksi¹¿kê od pocz¹tku i dok³adnie j¹ przeanalizuj¹, nie powinni mieæ problemu z nauczeniem siê coraz bardziej skomplikowanych technik. Czytelnicy zaawansowani mog¹ wykorzystywaæ tê ksi¹¿kê jako u¿yteczne ĥród³o informacji, przeskakuj¹c od rozdzia³u do rozdzia³u, wtedy kiedy maj¹ potrzebê nauczenia siê lub dok³adniejszego poznania wybranych problemów. Ksi¹¿ka zawiera: • Powtórzenie wiadomoġci o wektorach i macierzach • Omówienie zagadnieñ zwi¹zanych z oġwietleniem • Opis potoków graficznych • Opis konfiguracji ġrodowiska • Sposoby korzystania z DirectX • Dok³adne omówienie renderingu • Opis sposobów nak³adania tekstur • Problemy zwi¹zane z przezroczystoġci¹ • Opis technik vertex shader i pixel shader • Zasady tworzenia cieni przestrzennych • Sposoby tworzenia animowanych postaci Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl ... i wiele innych zaawansowanych technik, u¿ywanych przez profesjonalnych programistów. Towarzysz¹ jej cenne dodatki na CD (m.in. Microsoft DirectX® 8.1 SDK, wersja demonstracyjna przegl¹darki efektów NVidia®, program do zrzutów video — VirtualDub, wersja demonstracyjna programu trueSpace firmy Caligari®) Niezale¿nie od Twojego programistycznego doġwiadczenia, ksi¹¿ka ta mo¿e pos³u¿yæ Ci jako przewodnik pozwalaj¹cy na osi¹gniêcie mistrzostwa w wykorzystaniu mo¿liwoġci programowania grafiki w czasie rzeczywistym. Spis treści O Autorze ............................................................................................... 15 Od wydawcy serii.................................................................................... 17 Słowo wstępne ....................................................................................... 19 Wstęp .................................................................................................... 21 Część I Podstawy ...................................................d........................ 23 Rozdział 1. Grafika 3D. Rys historyczny ..................................................................... 25 Rozwój sprzętu klasy PC ...................................................r...................................................r....25 Rozwój konsol do gier ...................................................r...................................................r........26 Rozwój technik filmowych ...................................................r...................................................r.27 Krótka historia DirectX...................................................r...................................................r.......27 Kilka słów na temat OpenGL...................................................r.................................................28 Rozdział 2. Powtórzenie wiadomości o wektorach ..................................................... 31 Czym jest wektor?...................................................r...................................................r...............31 Normalizacja wektorów ...................................................r...................................................r......32 Arytmetyka wektorów.................................r...................................................r...........................33 Iloczyn skalarny wektorów ...................................................r...................................................r.34 Iloczyn wektorowy wektorów...................................................r................................................35 Kwaterniony...................................................r...................................................r........................37 Działania na wektorach w bibliotece D3DX ...................................................r...........................37 Podsumowanie ...................................................r...................................................r....................39 Rozdział 3. Powtórzenie wiadomości o macierzach ..................................................... 41 Co to jest macierz?...................................................r...................................................r..............41 Macierz przekształcenia tożsamościowego ...................................................r...........................43 Macierz translacji (przesunięcia) ...................................................r...........................................43 Macierz skalowania...................................................r...................................................r.............44 Macierz obrotu ...................................................r...................................................r....................44 Łączenie macierzy...................................................r...................................................r...............45 Macierze a biblioteka D3DX ...................................................r.................................................46 Podsumowanie ...................................................r...................................................r....................47 Rozdział 4. Kilka słów o kolorach i oświetleniu ......................................................... 49 Czym jest kolor? ...................................................r...................................................r.................49 Oświetlenie otaczające i emisyjne ...................................................r.........................................51 Oświetlenie rozpraszające...................................................r...................................................r...52 Oświetlenie zwierciadlane ...................................................r...................................................r..53 Pozostałe rodzaje światła ...................................................r...................................................r....54 6 DirectX. Rendering w czasie rzeczywistym Uwzględnianie wszystkich rodzajów oświetlenia w Direct3D.................................................55 Rodzaje cieniowania ...................................................r...................................................r...........57 Podsumowanie ...................................................r...................................................r....................58 Rozdział 5. Kilka słów o potoku graficznym ............................................................... 59 Potok Direct3D ...................................................r...................................................r...................60 Wierzchołki oraz powierzchnie wyższego rzędu...................................................r...................60 Faza stałych funkcji transformacji oraz oświetlenia ...................................................r..............61 Mechanizmy vertex shader ...................................................r...................................................r.62 Mechanizm obcinający ...................................................r...................................................r.......63 Multiteksturowanie ...................................................r...................................................r.............63 Mechanizmy pixel shader ...................................................r...................................................r...63 Mgła ...................................................r...................................................r....................................64 Testy głębi, matrycy oraz kanału alfa ...................................................r....................................64 Bufor ramek ...................................................r...................................................r........................65 Zagadnienia związane z wydajnością ...................................................r....................................65 Podsumowanie ...................................................r...................................................r....................66 Część II Tworzymy szkielet ...................................................d........... 69 Rozdział 6. Konfiguracja środowiska i prosta aplikacja Win32 .................................. 71 Kilka słów o SDK ...................................................r...................................................r...............71 Konfiguracja środowiska ...................................................r...................................................r....72 Prosta aplikacja Win32 ...................................................r...................................................r.......73 Plik Wykonywalny.h ...................................................r...................................................r....74 Plik Aplikacja.h ...................................................r...................................................r............75 Plik Wykonywalny.cpp...................................................r...................................................r.76 Plik Aplikacja.cpp...................................................r...................................................r.........77 Kompilacja i uruchamianie prostej aplikacji ...................................................r.........................79 Analiza. Dlaczego to zrobiliśmy w taki sposób? ...................................................r...................80 Podsumowanie ...................................................r...................................................r....................81 Rozdział 7. Tworzenie i zarządzanie urządzeniem Direct3D ........................................ 83 Czym jest urządzenie Direct3D?...................................................r............................................83 Krok 1: Tworzymy obiekt Direct3D...................................................r......................................84 Krok 2: Dowiadujemy się czegoś więcej na temat sprzętu...................................................r....85 Krok 3: Utworzenie urządzenia Direct3D ...................................................r.............................86 Krok 4: Odtworzenie utraconego urządzenia...................................................r.........................88 Krok 5: Zniszczenie urządzenia...................................................r.............................................89 Rendering z wykorzystaniem urządzenia Direct3D...................................................r...............89 Zerowanie urządzenia ...................................................r...................................................r.........90 Wracamy do pliku Aplikacja.h ...................................................r..............................................91 Wracamy do pliku Aplikacja.cpp...................................................r...........................................93 Podsumowanie ...................................................r...................................................r..................100 Część III Rozpoczynamy renderowanie............................................. 101 Rozdział 8. Wszystko rozpoczyna się od wierzchołków............................................ 103 Czym są wierzchołki? ...................................................r...................................................r.......103 Czym tak naprawdę są wierzchołki?...................................................r....................................104 Tworzenie wierzchołków...................................................r...................................................r..106 Niszczenie bufora wierzchołków ...................................................r.........................................107 Konfiguracja i modyfikacja danych o wierzchołkach...................................................r..........108 Renderowanie wierzchołków...................................................r...............................................109 Spis treści 7 Zagadnienia związane z wydajnością ...................................................r..................................111 Nareszcie coś na ekranie!...................................................r...................................................r..112 Podsumowanie ...................................................r...................................................r..................117 Rozdział 9. Zastosowanie transformacji .................................................................. 119 Co to są transformacje?...................................................r...................................................r.....119 Transformacje świata ...................................................r...................................................r........120 Transformacje widoku ...................................................r...................................................r......121 Tworzenie transformacji świata i transformacji widoku...................................................r......121 Rzuty ...................................................r...................................................r.................................123 Przekształcenia a urządzenie D3D...................................................r.......................................124 Zastosowanie stosu macierzy...................................................r...............................................126 Widok ekranu...................................................r...................................................r....................127 Łączymy to razem...................................................r...................................................r.............128 Zalecane ćwiczenia ...................................................r...................................................r...........132 Zagadnienia związane z wydajnością ...................................................r..................................133 Podsumowanie ...................................................r...................................................r..................133 Rozdział 10. Od wierzchołków do figur ...................................................................... 135 Przekształcanie wierzchołków w powierzchnie...................................................r...................135 Renderowanie powierzchni...................................................r..................................................136 Renderowanie z wykorzystaniem list trójkątów...................................................r............137 Renderowanie z wykorzystaniem wachlarzy trójkątów ...................................................r138 Renderowanie z wykorzystaniem pasków trójkątów ...................................................r....138 Renderowanie z zastosowaniem prymitywów indeksowanych........................................139 Ładowanie i renderowanie plików .X ...................................................r..................................141 Problemy wydajności...................................................r...................................................r........143 Kod...................................................r...................................................r....................................144 Podsumowanie ...................................................r...................................................r..................155 Rozdział 11. Oświetlenie z wykorzystaniem funkcji wbudowanych ............................. 157 Struktura D3DLIGHT8...................................................r...................................................r.....157 Światła kierunkowe ...................................................r...................................................r....158 Światła punktowe...................................................r...................................................r........159 Światła reflektorowe...................................................r...................................................r...160 Konfiguracja oświetlenia w urządzeniu D3D ...................................................r......................162 Program............................................r...................................................r....................................163 Kod...................................................r...................................................r....................................165 Podsumowanie ...................................................r...................................................r..................176 Rozdział 12. Wprowadzenie do tekstur...................................................................... 177 Tekstury od środka...................................................r...................................................r............177 Powierzchnie i pamięć...................................................r...................................................r178 Rozmiar a potęga dwójki ...................................................r...............................................179 Poziomy powierzchni i mipmapy ...................................................r..................................179 Tworzenie tekstur...................................................r...................................................r..............180 Tekstury i wierzchołki ...................................................r...................................................r......183 Tekstury i urządzenie ...................................................r...................................................r........185 Problemy związane z wydajnością ...................................................r......................................185 Zagadnienia zaawansowane...................................................r.................................................186 Tekstury i kolory...................................................r...................................................r.........186 Macierz tekstury ...................................................r...................................................r.........187 Wielokrotne teksturowanie — multiteksturowanie ...................................................r.......187 Program............................................r...................................................r....................................187 Podsumowanie ...................................................r...................................................r..................196 8 DirectX. Rendering w czasie rzeczywistym Rozdział 13. Stany faz tekstur .................................................................................. 199 Ustawianie stanu fazy tekstury ...................................................r............................................200 Łączenie tekstur i multiteksturowanie ...................................................r.................................200 D3DTSS_COLOROP i D3DTSS_ALPHAOP...................................................r..............201 D3DTSS_COLORARG1, D3DTSS_COLORARG2, D3DTSS_ALPHAARG1 i D3DTSS_ALPHAARG2 ................................................201 Operacje trójargumentowe (D3DTSS_COLORARGO i D3DTSS_ALPHAARGO) ...................................................r...................................202 D3DTSS_RESULTARG ...................................................r...............................................202 Sprawdzanie możliwości urządzenia...................................................r.............................202 Odwzorowania nierówności (ang. bump mapping) ...................................................r.............203 Stany dotyczące współrzędnych tekstury ...................................................r............................203 D3DTSS_TEXTCOORDINDEX ...................................................r..................................203 D3DTSS_ADDRESSU, D3DTSS_ADDRESSV i D3DTSS_ADDRESSW...................203 D3DTSS_BORDERCOLOR...................................................r.........................................205 D3DTS_TEXTURETRANSFORMFLAGS..................................................r...................205 Sprawdzanie możliwości urządzenia...................................................r.............................205 Filtrowanie tekstury i mipmapy ...................................................r...........................................205 D3DTSS_MAGFILTER...................................................r................................................206 D3DTSS_MINFILTER ...................................................r.................................................207 D3DTSS_MIPFILTER ...................................................r..................................................207 D3DTSS_MIPMAPLODBIAS..................................................r.......................................207 D3DTSS_MAXMIPLEVEL...................................................r..........................................207 D3DTSS_MAXANISOTROPY...................................................r....................................207 Sprawdzanie możliwości urządzenia...................................................r.............................208 Stany faz tekstur, a mechanizmy shader ...................................................r..............................208 Kod...................................................r...................................................r....................................208 Podsumowanie ...................................................r...................................................r..................215 Rozdział 14. Testowanie głębi i przezroczystość ........................................................ 217 Testowanie głębi ...................................................r...................................................r...............217 Bufor W ...................................................r...................................................r......................219 Przesunięcie Z...................................................r...................................................r.............219 Zerowanie bufora głębi...................................................r..................................................220 Przezroczystość...................................................r...................................................r.................220 Wartość alfa w plikach formatu 32-bitowego ...................................................r...............220 Kanał alfa wygenerowany za pomocą programu DirectX Texture Tool..........................221 Kanał alfa określony za pomocą parametru KluczKoloru................................................221 Włączanie przezroczystości...................................................r...........................................222 Test alfa...................................................r...................................................r.............................222 Problemy wydajności...................................................r...................................................r........223 Kod...................................................r...................................................r....................................223 Podsumowanie ...................................................r...................................................r..................231 Część IV Mechanizmy shader ...................................................d....... 233 Rozdział 15. Mechanizmy vertex shader.................................................................... 235 Co to jest vertex shader? ...................................................r...................................................r...236 Rejestry danych o wierzchołkach ...................................................r..................................237 Rejestry stałych...................................................r...................................................r...........238 Rejestr adresowy...................................................r...................................................r.........238 Rejestry tymczasowe ...................................................r...................................................r..238 Wynik działania mechanizmów vertex shader ...................................................r..............238 Kod mechanizmów shader ...................................................r...................................................r239 Spis treści 9 Mieszanie i zapisywanie masek ...................................................r...........................................241 Implementacja shadera...................................................r...................................................r......242 Shadery a urządzenie ...................................................r...................................................r..242 Utworzenie deklaracji...................................................r...................................................r.243 Asemblacja shadera ...................................................r...................................................r....245 Utworzenie shadera ...................................................r...................................................r....245 Wykorzystanie shadera...................................................r..................................................246 Niszczenie shadera...................................................r...................................................r......247 Zastosowanie shaderów do figur tworzonych za pomocą obliczeń........................................247 Zastosowanie shaderów do siatek ...................................................r........................................247 Prosty shader...................................................r...................................................r.....................248 Przekształcenia w prostym shaderze ...................................................r.............................248 Ustawianie innych danych opisu wierzchołków...................................................r............249 Problemy wydajności...................................................r...................................................r........249 Kod...................................................r...................................................r....................................250 Podsumowanie ...................................................r...................................................r..................256 Rozdział 16. Mechanizmy pixel shader ...................................................................... 259 Co to jest pixel shader? ...................................................r...................................................r.....259 Wersje mechanizmów pixel shader...................................................r......................................260 Wejścia, wyjścia oraz operacje realizowane przez mechanizmy pixel shader .......................261 Rejestry kolorów...................................................r...................................................r.........261 Rejestry tymczasowe i wyjściowe ...................................................r.................................262 Rejestry stałych...................................................r...................................................r...........262 Rejestry tekstur ...................................................r...................................................r...........262 Warunkowe odczytywanie tekstur ...................................................r.......................................262 Instrukcje dostępne w mechanizmach pixel shader ...................................................r.............263 Łączenie instrukcji w pary...................................................r.............................................264 Instrukcje adresowania tekstur ...................................................r......................................264 Modyfikatory dostępne dla mechanizmów pixel shader...................................................r......269 Ograniczenia i uwagi dotyczące stosowania mechanizmów pixel shader..............................270 Sprawdzanie dostępności mechanizmów pixel shader ...................................................r........271 Asemblacja, tworzenie i wykorzystywanie mechanizmów pixel shader..................................271 Bardzo prosta aplikacja wykorzystująca mechanizm pixel shader.........................................272 Proste oświetlenie za pomocą mechanizmu vertex shader ...................................................r..273 Proste operacje łączenia wewnątrz pixel shadera ...................................................r................274 Prosta aplikacja z wykorzystaniem pixel shadera...................................................r................276 Podsumowanie ...................................................r...................................................r..................280 Część V Techniki wykorzystujące mechanizmy vertex shader .......... 283 Rozdział 17. Zastosowanie shaderów z modelami w postaci siatek ........................... 285 Pojęcia podstawowe...................................................r...................................................r..........285 Od materiałów do kolorów wierzchołków...................................................r...........................287 Od kolorów wierzchołków do danych opisu wierzchołków...................................................r288 Problemy wydajności...................................................r...................................................r........289 Implementacja...................................................r...................................................r...................289 Podsumowanie ...................................................r...................................................r..................295 Rozdział 18. Proste i złożone przekształcenia geometryczne z wykorzystaniem mechanizmów vertex shader..................................... 297 Przemieszczanie wierzchołków wzdłuż wektorów normalnych.............................................297 Zniekształcanie wierzchołków z wykorzystaniem sinusoidy .................................................300 Implementacja...................................................r...................................................r...................304 Pomysły na rozszerzenie przykładowego programu...................................................r............308 Podsumowanie ...................................................r...................................................r..................309 10 DirectX. Rendering w czasie rzeczywistym Rozdział 19. Billboardy i mechanizmy vertex shader ................................................. 311 Podstawowe zagadnienia dotyczące billboardów ...................................................r................312 Mechanizm shader dla billboardu ...................................................r........................................312 Implementacja...................................................r...................................................r...................316 Inne przykłady billboardów ...................................................r.................................................321 Podsumowanie ...................................................r...................................................r..................322 Rozdział 20. Operacje w innych układach współrzędnych niż układ kartezjański ........ 325 Układ kartezjański oraz inne układy współrzędnych...................................................r...........325 Odwzorowania pomiędzy układami współrzędnych w mechanizmie vertex shader..............327 Kod programu ...................................................r...................................................r...................330 Inne zastosowania pokazanej techniki ...................................................r.................................336 Podsumowanie ...................................................r...................................................r..................337 Rozdział 21. Krzywe Beziera ..................................................................................... 339 Linie, krzywe, obszary ...................................................r...................................................r......339 Obliczanie wektorów normalnych za pomocą „różniczek”...................................................r.342 Obliczanie wartości dla obszaru za pomocą shadera ...................................................r...........345 Aplikacja wykorzystująca obszary Beziera...................................................r.............................348 Zastosowania i zalety obszarów Beziera ...................................................r.............................356 Łączenie krzywych i obszarów ...................................................r............................................357 Podsumowanie ...................................................r...................................................r..................358 Rozdział 22. Animacja postaci — skinning z wykorzystaniem palety macierzy ............ 359 Techniki animacji postaci ...................................................r...................................................r.359 Rejestr adresowy ...................................................r...................................................r...............362 Skinning z wykorzystaniem palety macierzy wewnątrz shadera............................................363 Aplikacja ...................................................r...................................................r...........................365 Inne zastosowania palet ...................................................r...................................................r....374 Podsumowanie ...................................................r...................................................r..................374 Rozdział 23. Proste operacje z kolorami.................................................................... 377 Kodowanie głębi za pomocą koloru wierzchołka ...................................................r................377 Shader głębi.........................................r...................................................r.................................378 Aplikacja wykorzystująca kodowanie głębi ...................................................r..........................380 Shader implementujący efekt promieni X ...................................................r...........................381 Aplikacja wykorzystująca efekt promieni X ...................................................r...........................384 Podsumowanie ...................................................r...................................................r..................387 Rozdział 24. Własne oświetlenie z wykorzystaniem vertex shadera ........................... 389 Przekształcanie wektorów oświetlenia do przestrzeni obiektu ...............................................390 Shader oświetlenia kierunkowego ...................................................r.......................................393 Shader oświetlenia punktowego...................................................r...........................................395 Shader oświetlenia reflektorowego...................................................r......................................397 Kod aplikacji ...................................................r...................................................r.....................399 Wiele rodzajów oświetlenia w jednym shaderze ...................................................r.................401 Podsumowanie ...................................................r...................................................r..................402 Rozdział 25. Cieniowanie kreskówkowe .................................................................... 403 Shadery, tekstury i funkcje zespolone...................................................r..................................403 Shader kreskówkowy — część 1 ...................................................r.........................................405 Shader kreskówkowy — część 2 ...................................................r.........................................406 Implementacja cieniowania kreskówkowego w shaderze ...................................................r...408 Aplikacja cieniowania kreskówkowego...................................................r...............................409 Modyfikacja tekstur ...................................................r...................................................r..........410 Modyfikacja shadera ...................................................r...................................................r.........411 Podsumowanie ...................................................r...................................................r..................411 Spis treści 11 Rozdział 26. Odbicie i załamanie światła ................................................................... 413 Mapowanie środowiskowe i mapy sześcienne...................................................r.....................413 Dynamiczna modyfikacja map sześciennych ...................................................r......................414 Obliczanie wektorów odbić ...................................................r.................................................415 Obliczanie przybliżonych wektorów załamania światła...................................................r......417 Efekty odbicia i załamania z wykorzystaniem vertex shadera ...............................................419 Aplikacja ...................................................r...................................................r...........................421 Inne przykłady wykorzystania map sześciennych ...................................................r...............427 Podsumowanie ...................................................r...................................................r..................427 Rozdział 27. Cienie — część 1. Cienie na płaszczyznach .......................................... 429 Rzutowanie cieni na płaszczyznę...................................................r.........................................429 Równanie płaszczyzny...................................................r...................................................r......430 Macierz cienia ...................................................r...................................................r...................432 Wykorzystanie bufora matrycy w tworzeniu cieni ...................................................r..............433 Aplikacja demonstracyjna...................................................r...................................................r.434 Ograniczenia techniki cieniowania na płaszczyznę ...................................................r.............442 Podsumowanie ...................................................r...................................................r..................443 Rozdział 28. Cienie — część 2. Cieniowanie przestrzenne ........................................ 445 Zasada tworzenia cieni przestrzennych...................................................r................................445 Wykorzystanie mechanizmu vertex shader w tworzeniu cienia przestrzennego....................451 Kod aplikacji wykorzystującej cieniowanie przestrzenne ...................................................r...452 Zalety i wady cieniowania przestrzennego...................................................r..............................459 Podsumowanie ...................................................r...................................................r..................460 Rozdział 29. Cienie — część 3. Mapy cieni ............................................................... 463 Podstawy mapy cieni ...................................................r...................................................r........463 Renderowanie do tekstury sceny z punktu widzenia kamery .................................................466 Renderowanie do tekstury...................................................r...................................................r.467 Mechanizm cieniowania wierzchołków porównujący wartości głębi ....................................469 Pixel shader wykonujący mapowanie cieni...................................................r...........................470 Aplikacja ...................................................r...................................................r...........................471 Wady i zalety techniki mapowania cieni ...................................................r.............................479 Podsumowanie ...................................................r...................................................r..................479 Część VI Techniki wykorzystujące pixel shader ................................ 481 Rozdział 30. Oświetlenie reflektorowe per pixel ........................................................ 483 Proste mapy świetlne ...................................................r...................................................r........483 Oświetlenie per pixel z wykorzystaniem pixel shadera ...................................................r.......485 Oświetlenie reflektorowe per pixel ...................................................r......................................486 Vertex shader stosowany w technice oświetlenia reflektorowego per pixel ..........................489 Pixel shader stosowany w technice oświetlenia reflektorowego per pixel .............................491 Aplikacja oświetlenia reflektorowego per pixel ...................................................r..................491 Oświetlenie punktowe per pixel...................................................r...........................................494 Vertex shader stosowany w technice oświetlenia punktowego per pixel ...............................495 Pixel shader stosowany w technice oświetlenia punktowego per pixel..................................496 Aplikacja oświetlenia punktowego per pixel ...................................................r.......................497 Ograniczenia prezentowanych technik ...................................................r................................498 Podsumowanie ...................................................r...................................................r..................499 Rozdział 31. Oświetlenie per pixel — odwzorowanie nierówności................................ 501 Pojęcie odwzorowania nierówności...................................................r.....................................501 Tworzenie map wektorów normalnych i korzystanie z nich ..................................................503 Tworzenie wektorów bazowych w przestrzeni tekstury ...................................................r......505 12 DirectX. Rendering w czasie rzeczywistym Vertex shader odwzorowania nierówności...................................................r..............................507 Odwzorowanie nierówności bez pixel shadera...................................................r....................508 Odwzorowanie nierówności z wykorzystaniem pixel shadera ...............................................513 Ograniczenia oraz możliwości usprawnienia techniki odwzorowania nierówności...............515 Podsumowanie ...................................................r...................................................r..................516 Rozdział 32. Implementacja technik per vertex jako techniki per pixel...................... 519 Odbicie per pixel...................................................r...................................................r...............519 Korzystanie z texm3x3pad...................................................r...................................................r520 Vertex shader odwzorowania nierówności z odbiciem światła ..............................................522 Pixel shader odwzorowania nierówności z odbiciem światła.................................................524 Aplikacja odwzorowania nierówności z odbiciem światła ...................................................r..525 Cieniowanie kreskówkowe per pixel ...................................................r...................................530 Vertex shader cieniowania kreskówkowego per pixel...................................................r.........530 Pixel shader cieniowania kreskówkowego per pixel ...................................................r...........532 Aplikacja cieniowania kreskówkowego per pixel ...................................................r...............534 Podsumowanie ...................................................r...................................................r..................536 Część VII Inne techniki ...................................................d................. 539 Rozdział 33. Renderowanie do tekstury — pełnoekranowe rozmycie ruchu ................ 541 Tworzenie tekstury będącej celem renderowania ...................................................r................542 Wyodrębnianie powierzchni z tekstur będących celem renderowania ...................................543 Renderowanie do tekstury...................................................r...................................................r.544 Renderowanie do dynamicznej mapy sześciennej ...................................................r...............545 Rozmycie ruchu ...................................................r...................................................r................547 Sposób tworzenia efektu rozmycia ruchu ...................................................r............................548 Aplikacja rozmycia ruchu ...................................................r...................................................r.549 Wydajność techniki...................................................r...................................................r...........558 Podsumowanie ...................................................r...................................................r..................558 Rozdział 34. Renderowanie 2D — po prostu o jedną literę „D” mniej ........................ 561 Biedny DirectDraw. Wiedziałem, że to się tak skończy…...................................................r..561 Krok 1: Odrzuć jedną literę „D” ...................................................r..........................................563 „Duszki” — obrazy są wszystkim ...................................................r.......................................565 Wykorzystywanie wierzchołków w 2D ...................................................r...............................566 Bardzo prosta aplikacja 2D ...................................................r..................................................568 Wydajność...................................................r...................................................r.........................572 Możliwości wykorzystania techniki 2D...................................................r...............................575 Podsumowanie ...................................................r...................................................r..................576 Rozdział 35. DirectShow, czyli obraz ruchomy w postaci tekstury................................ 579 DirectShow w pigułce...................................................r...................................................r.......579 MP3...................................................r...................................................r...................................581 Działanie filtru wideo do tekstury...................................................r........................................582 Czynności przygotowawcze przed utworzeniem klasy tekstury.............................................584 Klasa filtru teksturowego ...................................................r...................................................r..585 Aplikacja tekstury wideo ...................................................r...................................................r..593 Podsumowanie ...................................................r...................................................r..................595 Rozdział 36. Przetwarzanie obrazu z wykorzystaniem mechanizmów pixel shader ...... 597 Zalety przetwarzania po etapie renderowania...................................................r......................597 Pełnoekranowa regulacja kolorów z wykorzystaniem pixel shaderów ..................................598 Filtr czarno-biały ...................................................r...................................................r........599 Regulacja jasności obrazu...................................................r..............................................600 Inwersja kolorów ...................................................r...................................................r........601 Spis treści 13 Solaryzacja obrazu...................................................r...................................................r......602 Regulacja kontrastu sceny ...................................................r.............................................603 Efekt sepii ...................................................r...................................................r...................605 Wykorzystywanie krzywych kolorów do modyfikacji kolorów.............................................607 Przetwarzanie obrazu z wykorzystaniem jąder splotu ...................................................r.........611 Wydajność...................................................r...................................................r.........................616 Podsumowanie ...................................................r...................................................r..................617 Rozdział 37. Znacznie lepszy sposób wykreślania tekstu .......................................... 619 Podstawy ...................................................r...................................................r...........................620 Implementacja...................................................r...................................................r...................621 Podsumowanie ...................................................r...................................................r..................634 Rozdział 38. Dokładne odmierzanie czasu ................................................................. 635 Czas niskiej rozdzielczości ...................................................r..................................................635 Czas wysokiej rozdzielczości...................................................r...............................................636 Kilka ogólnych słów na temat animacji...................................................r...............................637 Implementacja...................................................r...................................................r...................639 Podsumowanie ...................................................r...................................................r..................641 Rozdział 39. Bufor matrycy....................................................................................... 643 Znaczenie bufora matrycy oraz testu matrycy ...................................................r.....................643 Stany renderowania bufora matrycy ...................................................r....................................645 Uaktywnianie bufora matrycy ...................................................r.......................................645 Ustawianie wartości odniesienia dla testu ...................................................r.....................645 Konfigurowanie funkcji porównywania ...................................................r........................646 Ustawianie operacji uaktualniania...................................................r.................................646 Maski matrycy ...................................................r...................................................r............647 Celownik snajpera z wykorzystaniem bufora matrycy ...................................................r........648 Podsumowanie ...................................................r...................................................r..................652 Rozdział 40. Pobieranie informacji: kilka praktycznych procedur pobierania .............. 655 Bardzo proste pobieranie 2D...................................................r................................................655 Pobieranie za pomocą promieni...................................................r...........................................657 Poruszanie się w terenie z wykorzystaniem techniki pobierania za pomocą promienia ........659 Procedura pobierania na poziomie pikseli...................................................r.............................664 Vertex shader pobierania na poziomie pikseli ...................................................r.....................665 Aplikacja pobierania na poziomie pikseli...................................................r............................666 Inne zastosowania techniki pobierania na poziomie pikseli ...................................................r671 Problemy wydajności...................................................r...................................................r........673 Podsumowanie ...................................................r...................................................r..................673 Zakończenie......................................................................................... 675 Skorowidz ............................................................................................ 677 Rozdział 16. Mechanizmy pixel shader Mechanizmy pixel shader są analogiczne do mechanizmów vertex shader, z tą różnicą, że operują na pikselach zamiast na wierzchołkach. Po przekształceniach wierzchołków następuje rasteryzacja trójkątów na piksele, które są zapisywane do bufora zapasowego. W poprzednich rozdziałach powiedzieliśmy, w jaki sposób operacje na wierzchołkach, kolorach i teksturach wpływają na kolory uzyskiwane na ekranie. W tym rozdziale przed- stawię pojęcia związane z mechanizmami pixel shader. Pojęcia te nabiorą bardziej real- nego kształtu w rozdziałach omawiających określone techniki. Ten rozdział służy nato- miast jako wstęp do następujących pojęć związanych z ymechanizmami pixel shader:  Różne wersje mechanizmów pixel shader.  Dane wejściowe i wyjściowe mechanizmów pixel shader.  Warunkowe odczytywanie tekstur.  Instrukcje dostępne w mechanizmach pixel shader i łąyczenie instrukcji w pary.  Modyfikatory w mechanizmach pixel shader.  Ograniczenia i ostrzeżenia związane z mechanizmami ypixel shader.  Sprawdzanie obsługi mechanizmów pixel shader.  Asemblacja i tworzenie mechanizmów pixel shader.  Prosta aplikacja wykorzystująca mechanizm pixel shayder. Co to jest pixel shader? W poprzednich rozdziałach dowiedzieliśmy się, że różne operacje z kolorami mają wpływ na łączenie kolorów tekstury i wierzchołków w czasie rasteryzacji trójkątów. Operacje na kolorach dla fazy tekstury dają programiście niezwykłą kontrolę nad procesem łączenia, ale nie oferują zbyt wielkich możliwości. Mechanizmy pixel shader, podobnie jak me- chanizmy vertex shader, pozwalają na o wiele dokładniejszą kontrolę nad sposobem przetwarzania danych przez urządzenie. W przypadku mechanizmów pixel shader dane, o których mowa, to piksele. Shader działa z każdym pikselem, który jest renderowany na ekranie. Zwróćmy uwagę, że nie jest to każdy piksel ekranu, a raczej każdy piksel wchodzący w skład prymitywu renderowanego na ekranie. Na rysunku 16.1 przedstawiono 260 Część IV  Mechanizmy shader Rysunek 16.1. Miejsce mechanizmu pixel shader w potoku inne spojrzenie na dalsze etapy renderowania pokazane na rysunku 5.1. Jak widzimy, shader ma wpływ na kolorowanie danego prymitywu, ale przetworzony przez shader piksel, zanim trafi na ekran, nadal musi być poddany ytestowi alfa, głębi i matrycy. Pixel shader przetwarza każdy piksel renderowanego prymitywu, ale niekoniecznie każdy piksel ekranu czy okna wyjściowego. Oznacza to, że pixel shader ma wpływ na wygląd określonego trójkąta, czy też obiektu. Pixel shader zajmuje miejsce stanów łączenia tek- stury i pozwala na dokładniejsze zarządzanie przezroczystością i kolorem dowolnego wykreślanego obiektu. Jak przekonamy się w dalszych rozdziałach, ma to swoje impli- kacje dotyczące oświetlenia, cieniowania oraz wieluy innych operacji na kolorach. Prawdopodobnie jedną z największych zalet mechanizmów pixel shader jest to, że uprasz- czają one przedstawianie złożonych operacji łączenia tekstur. Stany faz tekstur wymagają ustawiania operacji na teksturach, argumentów, współczynników łączenia oraz kilku innych stanów. Stany te pozostają „w mocy”, dopóki nie zostaną jawnie zmienione. W wyniku tego składnia jest czasami niezgrabna, a czasami trudno kontrolować wszystkie usta- wienia. Mechanizmy pixel shader zamieniają wywołania metody 5GV6GZVWTG5VCIG5VCVG serią stosunkowo prostych instrukcji arytmetycznych z przejrzyście zdefiniowanymi argu- mentami. Kiedy już zapoznamy się z mechanizmami pixel shader, z pewnością okażą się one bardzo przydatne. Wersje mechanizmów pixel shader Specyfikacja mechanizmów pixel shader zmienia się bardziej gwałtownie oraz w bardziej istotny sposób niż specyfikacja mechanizmów vertex shader. Istnieje wersja 1.0, ale zamiast niej powinniśmy wykorzystywać wersję 1.1. Obecnie prawie wszystkie rodzaje sprzętu obsługujące mechanizm pixel shader obsługują wersję 1.1, ale istnieją implementacje sprzętowe dla wersji 1.2, 1.3 oraz 1.4. Późniejsze wersje w wielu aspektach rozszerzają możliwości. Pomimo to techniki pokazane w dalszych rozdziałach będą ograniczały się do wersji 1.1. W tym rozdziale opiszę właściwości wszystkich wersji i zaznaczę te wła- ściwości, które są dostępne tylko w wersjach późniejszych. Jeżeli nie zaznaczę inaczej, to można założyć, że określony opis dotyczy wszystkiych wersji. Rozdział 16.  Mechanizmy pixel shader 261 Mechanizmy pixel shader, a mechanizmy vertex shader Wersja 1.1. mechanizmu pixel shader jest dość ograniczona w porównaniu z wersją 1.1 mechani- zmu vertex shader. Późniejsze wersje zawierają bardziej zaawansowane funkcje odczytywania tek- stur oraz oferujące większe możliwości funkcje porównań. Zakres możliwości mechanizmów pixel shader stopniowo zbliża się do zakresu oferowanego przmez mechanizmy vertex shader. Wejścia, wyjścia oraz operacje realizowane przez mechanizmy pixel shader Tak jak w przypadku mechanizmów vertex shader, działania wykonywane przez me- chanizm pixel shader są uzależnione od zbioru danych wejściowych, zbioru instrukcji oraz rejestrów służących do przechowywania wyników. Architekturę mechanizmu pixel shader pokazano na rysunku 16.2. Rysunek 16.2. Architektura mechanizmu pixel shader Poniżej umieszczono opis każdego z komponentów mechanizmu pixel shader. W tym rozdziale umieszczę tylko zwięzły opis. Pozostałe informacje znajdą się w rozdziałach następnych. Rejestry kolorów Rejestry kolorów — X oraz X to najprostsze rejestry wejściowe. Każdy z nich posiada cztery wartości składowych koloru, które odpowiadają rejestrom wyjściowym Q  oraz Q  mechanizmu vertex shader. Można je wykorzystać do przekazywania danych o ko- lorach, współrzędnych tekstury lub nawet wektorach, które mają wpływ na łączenie lub kolorowanie wynikowych pikseli. 262 Część IV  Mechanizmy shader Rejestry tymczasowe i wyjściowe Podobnie jak w przypadku rejestrów mechanizmu vertex shader, rejestry tymczasowe służą do zapisywania tymczasowych danych wykorzystywanych przez kolejne instrukcje shadera. Istnieją cztery składowe wartości koloru zapisane jako liczby zmiennoprzecin- kowe. Inaczej niż w mechanizmach vertex shader, wartość T oznacza ostateczną wartość koloru uzyskaną w wyniku działania shadera. Wartość T możemy wykorzystać także jako rejestr tymczasowy, ale wartość znajdująca się w tym rejestrze po zakończeniu działania shadera będzie przekazana do dalszych etapów potoku. Pamiętajmy też, że wartości rejestrów tymczasowych są wewnątrz shadera interpretowane jako wartości zmiennoprzecinkowe, ale wartość T przed zakończeniem działania shadera jest przeli- czana na wartość z zakresu od 0,0 do 1,0. Rejestry stałych Stałe mechanizmu pixel shader mają dokładnie taką samą postać i działanie jak stałe mechanizmów vertex shader poza tym, że ich wartości powinny mieścić się w zakresie od −1,0 do 1,0. W wielu przypadkach spotkamy się z definiowaniem stałych wewnątrz mechanizmu pixel shader. W większości technik związanych z mechanizmami pixel shader wartości stałe są rzeczywiście stałe, co oznacza, że nigdy się nie zmieniają. Zmodyfi- kowane wartości można przekazać do mechanizmu pixel shader za pomocą mechanizmu vertex shader. Jeśli jest taka potrzeba, to wartości stałych można także przekazać do me- chanizmu pixel shader za pomocą wywołań API. Rejestry tekstur Rejestry tekstur dostarczają do mechanizmu pixel shader informacji o teksturach. Z tech- nicznego punktu widzenia rejestry tekstur zawierają współrzędne tekstur, ale w większości przypadków informacje te są natychmiast zamieniane na dane o kolorach w miarę po- bierania danych o teksturze. W shaderach wersji od 1.1 do 1.4 rejestry tekstur mogą być odczytywane jako współrzędne, a następnie zapisywane danymi o kolorach. W wersji 1.4. mogą być jedynie odczytywane i są wykorzystywane jako parametry służące do załado- wania danych o kolorach do innych rejestrów. Dokładne przeznaczenie tych rejestrów stanie się bardziej jasne po omówieniu instrukcji dostępnych dla shadera. Liczba rejestrów tekstur zależy od liczby faz tekstur. Warunkowe odczytywanie tekstur W większości przypadków rejestry tekstur wykorzystuje się do próbkowania danych na podstawie współrzędnych tekstury przekazanych z mechanizmu vertex shader. Celem działania niektórych instrukcji pixel shadera jest jednak modyfikowanie współrzędnych tekstury wewnątrz pixel shadera, przed odczytaniem rzeczywistej wartości tekstury. Taką operację nazywa się warunkowym odczytywaniem tekstury, ponieważ współrzędne wy- korzystywane do pobierania wartości tekstury zależą od pewn
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

DirectX. Rendering w czasie rzeczywistym
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: