Teksturowanie obiektów z wykorzystaniem reprogramowalnych modułów do obliczania cieniowania Daniel Kos promotor: dr inż. Radosław Mantiuk Wydział Informatyki, Politechnika Szczecińska, 2003 Cel pracy: Implementacja wybranych technik teksturowania proceduralnego i ocena wydajności tych implementacji
Proces teksturowania
Tekstury proceduralne Definicja tekstury proceduralnej Kolor = F(x, y, z,...) Zalety nieskończona rozdzielczość małe zużycie pamięci parametryzacja możliwość animacji Wady czasami wymagają skomplikowanych obliczeń nie można uzyskać dowolnego obrazu
Tekstury proceduralne
kolor Cegła(x, y, wysokosc, szerokosc, odstep) { przesuniecie = szerokosc / 2.0 static k = 0.0 if ( k == 0.0) przesuniecie = 0.0 else przesuniecie = szerokosc / 2.0 xp = (x + przesuniecie) % (szerokosc + odstep) yp = y % (wysokosc + odstep) if (xp < odstep | | yp < odstep) return kolor_biały else return kolor_czerwony if (yp == 0.0 && x == 1.0) k = 1 − k }
Pixel i Vertex Shader
Dotychczasowe prace nad problemem B. Freudenberg, „Real-Time Stroke Textures”, Institut für Simulation und Graphik ATI Technologies Inc, „Ocean Water”, Arkadiusz Waliszewski, „Fractal”, , Mark Harris, „Reaction Diffusion”, J. Kautz, W. Heidrichy, „Real-Time Bump Map Synthesis”, Max-Planck-Institut für Informatik 2000
Implementacja CząsteczkiKomórkiSzum Perlina 3D 317 instrukcji 51 mnożeń 87 dodawań 32 odrotności 33 odczyty tekstury 89 instrukcji 33 przeniesienia 12 dodawań 6 odrotności 6 pierwiastków 6 iloczynów skalarnych 6 porównań 1 odczyt tekstury 66 instrukcji 20 przeniesień 6 mnożeń 13 odrotności 6 pierwiastków 6 iloczynów skalarnych 1 odczyt tekstury
Analiza wydajnościowa Ilość klatek na sekundę zależy w głównej mierze od szybkości wypełniania układu, a nie od liczby wielokątów
Podsumowanie Za pomocą sprzętowych układów cieniowania można uzyskać szereg skomplikowanych efektów graficznych oraz dokonywać zaawansowanego teksturowania proceduralnego w czasie rzeczywistym Wydajność obecnych układów cieniowania, choć nie największa znacząco podnosi jakość grafiki w systemach czasu rzeczywistego Pojawienie się języków wyższego poziomu (Cg, HLSL) pozwoliło na prostą i szybką implementację oraz pozwoliło na uniezależnienie się od układów jednego producenta