Podczas laboratoriów zaprezentowane zostanie praktyczne zastosowanie Vertex Buffer Object (VBO). Zadaniem jest wyświetlenie mapy wysokości jako trójwymiarowej powierzchni terenu.
Cel: narysować całą mapę, najlepiej z użyciem pojedynczego żądania renderowania, wykorzystując do tego jak najmniej pamięci graficznej i minimalizując ilość danych wysyłaną w każdej klatce do karty graficznej.
Podpowiedzi:
Jest to plik binarny. Jego zawartość wygląda następująco, kolejno począwszy od zerowego bajtu:
Jak łatwo obliczyć, wielkość całego pliku to 8 + 4 * W * H bajtów.
Zaprezentowane zostanie praktyczne wykorzystanie Geometry Shadera. Posłuży on do tego, by zamienić pojedyncze wierzchołki w czworokąty stanowiące wizualną reprezentację cząstek emitowanych przez system cząsteczkowy.
Zadaniem jest stworzenie prostego systemu cząsteczkowego, który będzie zarządzał emisją, życiem oraz unicestwieniem cząstek mających imitować dym unoszący się ponad obiektem kontrolowanym przez użytkownika.
Cząstki powinny:
Aby uzyskać miękkie krawędzie cząstek, można np. posłużyć się funkcją gaussowską we fragment shaderze albo użyć tekstury na podstawie której zostanie określona wartość komponentu alpha (drugie rozwiązanie jest lepsze pod względem wydajności). Sugerowane jest też nałożenie na cząstkę tekstury szumu, np. perlinowskiego.
Zadaniem jest zaimplementowanie poruszania się po ścieżce danej punktami węzłowymi. Obiekt (w naszym przypadku kula) powinien w nieskończony sposób płynnie przemierzać odcinki kolejno pomiędzy punktami węzłowymi ścieżki.
Należy wykorzystać metodę interpolacji, która zapewni że ruch obiektu będzie wydawał się naturalny i przebiegać będzie po krzywej o klasie ciągłości C1 ("gładkiej", nieposiadającej "ostrych narożników", pierwsze pochodne są ciągłe). Ważne jest też, aby wynikowa ścieżka ruchu przechodziła dokładnie przez punkty węzłowe.
Te warunki są spełnione m.in. przez bardzo wygodne krzywe Catmulla-Roma, które wymagają jedynie określenia punktu początkowego, końcowego danego odcinka oraz punktu poprzedzającego ten odcinek i punktu następującego po tym odcinku. Innymi słowy, wystarczy że są dane cztery punkty: pn-1, pn, pn+1, pn+2 oraz krok t=0..1, by możliwe było wyznaczenie współrzędnych interpolowanego punktu leżącego na segmencie krzywej pomiędzy pn a pn+1.
Sugerowane etapy rozwiązywania problemu:
mgr inż. Bartosz Bazyluk
bbazyluk@wi.zut.edu.pl
Pokój 322 WI2
(semestr letni 2013/2014)
wtorek godz. 10.15, 2WI322