1 Draver/GRK/cw3_result.jpg
2 Grafika 3D Wprowadzenie
3 CSG Constructive solid geometry Bryły budowane są proceduralnie na podstawie kształtów prostych – kul, sześcianów, stożków itd. Dostępne są operacje boolowskie na zbiorach – suma, różnica i przecięcie Źródło: en.wikipedia.org
4 CSG CSG używana jest do modelowania wnętrz w silniku Unreal. Na ilustracji gra SWAT4
5 Voxels Voxel – ang. volumetric pixel. Trójwymiarowy odpowiednik piksela Pojedynczy voksel zawiera informacje o swojej pozycji względem sąsiadów oraz ewentualnie dodatkowe informacje o kolorze, gęstości itd. Reprezentacja wokselowa jest dyskretna Stosowana w głównie w medycynie i geodezji Źródło www.effectware.com
6 Outcast
7 BREP Reprezentacja brzegowa Bryły opisane są za pomocą następujących elementów: –Punktów –Krawędzi –Ścian Topologia – wzajemne położenie elementów Geometria – równania opisujące elementy (równania prostych dla krawędzi, płaszczyzn dla ścianek)
8 BREP
9 www.al3d.net/half-life2.htm
10
11
12 BREP Przekształcenia macierzowe Macierz świata Macierz widoku Macierz projekcji
13 Macierz świata Przekształca obiekt z lokalnego na globalny układ współrzędnych Jest złożeniem macierzy skalowania, rotacji oraz translacji.
14 Przekształcenia punktów w R 3 Translacja
15 Przekształcenia punktów w R 3 Skalowanie
16 Przekształcenia punktów w R 3 Obrót wokół osi X
17 Przekształcenia punktów w R 3 Obrót wokół osi Y
18 Przekształcenia punktów w R 3 Obrót wokół osi Z
19
20
21 Macierz widoku Przekształca każdy obiekt z globalnego układu współrzędnych na układ współrzędnych kamery (którego środkiem jest punkt kamery)
22
23
24 Macierz projekcji Odpowiada soczewce w aparacie Transformuje obszar widzenia ze ściętego ostrosłupa w prostopadłościan
25 Field of View
26 Macierz projekcji Rzut perspektywicznyRzut ortogonalny
27 Rzut perspektywiczny
28 Rzut ortogonalny
29 BREP Eliminacja powierzchni niewidocznych Back-face culling Algorytm malarza Algorytm z buforem głębokości
30 Back-face culling Polega na usunięciu całych ścian, które są skierowane tyłem do kamery Wyznaczanie normalnych ścian Analiza kąta pomiędzy wektorem normalnym i „kierunkiem kamery”
31 Algorytm malarza Sortuje powierzchnie po odległości od kamery Wyświetla powierzchnie od najdalszej do najbliższej Nie zawsze poprawny
32 Algorytm z buforem głębokości (z-buffer) Bardzo uniwersalny Rzutuje ściany obiektów do płaszczyzny ekranu Dla każdego piksela rzutu obliczana jest odległość odpowiadającego mu punktu na scenie od kamery Jeżeli wartość głębokości piksela rzutu jest mniejsza niż zapisana w buforze, to jest ona zapisywana do bufora, a jego kolor zapamiętywany
33 Grafika 3D czasu rzeczywistego
34 Dane w postaci cyfrowej przesyłane są z CPU poprzez magistralę do procesora graficznego. W procesorze graficznym następuje dalsza obróbka obrazu a następnie trafia on do pamięci obrazu. Z tego miejsca dane cyfrowe linia po linii przetwarzane są przez układ RAMDAC na odpowiednie impulsy analogowe pozwalające na wyświetlenie obrazu. Generowanie obrazu (układ graficzny)
35 DirectX Jest to zestaw interfejsów programistycznych ułatwiających tworzenie gier oraz innych multimedialnych aplikacji w środowisku Windows Umożliwia niskopoziomowy dostęp do sprzętu, między innymi kart graficznych i dźwiękowych Alternatywą jest OpenGL rozwijany przez Khronos Group
36 Generowanie obrazu - GPU Potok wyświetlania Direct3D9
37
38 http://www.xmission.com/~legalize/book/preview/poster/pipeline-9.0.png
39 Wierzchołek opisany jest pozycją w przestrzeni trójwymiarowej (x, y, z) Opcjonalnie może posiadać dodatkowe informacje o płaszczyźnie trójkąta do którego należy, takie jak barwa czy wartość wektora normalnego N Vertex (wierzchołek)
40 Wierzchołki przechowywane są w jednowymiarowych tablicach – buforach Prymitywy wspierane przez Direct3D: –Lista punktów –Lista linii –Lista trójkątów –Pas trójkątów –Wachlarz trójkątów
41 Shadery (ang. shade, cień) Są to programy wykonywane bezpośrednio na GPU Geometry, vertex oraz pixel shaders GPU realizuje model SIMD – wiele podobnych (o takiej samej strukturze) pakietów danych przetwarzanych tym samym zestawem instrukcji
42 HLSL High Level Shading Language Stworzony przez Microsoft wysokopoziomowy język programowania shaderów zbliżony składnią do C Alternatywa dla GLSL z biblioteki OpenGL
43 Vertex shader Program vertex shader na wejściu otrzymuje strukturę opisującą pojedynczy wierzchołek –Pozycja –Normalna –Barwa –Koordynaty tekstury Wartości wyliczone przez vertex shader zostaną przekazane do pixel (fragment) shader’a Pojedyncze wywołanie shadera pracuje wyłącznie na danych jednego wierzchołka
44 Operacje na wierzchołkach Po przetworzeniu przez vertex shader usuwane są trójkąty odwrócone tyłem do kamery (backface culling) Eliminowane są także powierzchnie znajdujące się poza obszarem wyświetlanym (frustum culling) techpubs.sgi.com
45 Rasteryzacja Po przekształceniu geometrii sceny do przestrzeni kamery (poprzez wymnożenie przez macierz projekcji oraz widoku) następuje rasteryzacja Jest to proces zamiany obrazu wektorowego na rastrowy Określone zostaje które piksele obrazu końcowego odpowiadają którym fragmentom powierzchni trójkątów
46 Fragment shader Jest to shader wykonywany dla „pikseli” obrazu końcowego. Na wejściu otrzymuje dane zwrócone przez vertex shader Dane wejściowe są efektem liniowej interpolacji danych wyjściowych zwróconych przez vertex shader dla wierzchołków trójkąta na którym znajduje się dany fragment Na wyjściu zwraca barwę fragmentu, która jest zapisywana do bufora obrazu
47 Generowanie obrazu - RAMDAC RAMDAC (Random Access Memory Digital/Analog Converter) Pamięć karty graficznej jest wiersz po wierszu czytana przez RAMDAC. Łączy on poszczególne bajty i tak uzyskane wartości przekształca na analogowe poziomy napięcia. Generuje sygnały synchronizacji: – pionowy (VSYNC) określa początek i koniec obrazu – poziomy (HSYNC) określa początek i koniec wiersza Informacje te w postaci wygenerowanych przez RAMDAC sygnałów elektrycznych wysyłane są do monitora
48 Koniec Dziękuje za uwagę