Draver/GRK/cw3_result.jpg
Grafika 3D Wprowadzenie
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
CSG CSG używana jest do modelowania wnętrz w silniku Unreal. Na ilustracji gra SWAT4
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
Outcast
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)
BREP
BREP Przekształcenia macierzowe Macierz świata Macierz widoku Macierz projekcji
Macierz świata Przekształca obiekt z lokalnego na globalny układ współrzędnych Jest złożeniem macierzy skalowania, rotacji oraz translacji.
Przekształcenia punktów w R 3 Translacja
Przekształcenia punktów w R 3 Skalowanie
Przekształcenia punktów w R 3 Obrót wokół osi X
Przekształcenia punktów w R 3 Obrót wokół osi Y
Przekształcenia punktów w R 3 Obrót wokół osi Z
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)
Macierz projekcji Odpowiada soczewce w aparacie Transformuje obszar widzenia ze ściętego ostrosłupa w prostopadłościan
Field of View
Macierz projekcji Rzut perspektywicznyRzut ortogonalny
Rzut perspektywiczny
Rzut ortogonalny
BREP Eliminacja powierzchni niewidocznych Back-face culling Algorytm malarza Algorytm z buforem głębokości
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”
Algorytm malarza Sortuje powierzchnie po odległości od kamery Wyświetla powierzchnie od najdalszej do najbliższej Nie zawsze poprawny
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
Grafika 3D czasu rzeczywistego
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)
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
Generowanie obrazu - GPU Potok wyświetlania Direct3D9
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)
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
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
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
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
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
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
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
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
Koniec Dziękuje za uwagę