Tajemnice PixelShadera

Najbliższa przyszłość gier komputerowych to Shader Model 3.0 i 4.0. Przyjrzyjmy się zatem tej technologii.

Najbliższa przyszłość gier komputerowych to Shader Model 3.0 i 4.0. Przyjrzyjmy się zatem tej technologii.

Quake III Arena i cień Anioła śmierci w wykonaniu Shader 3.0

Quake III Arena i cień Anioła śmierci w wykonaniu Shader 3.0

Pod względem zmian w grafice zeszły rok był rewolucyjny. Doczekaliśmy się długo oczekiwanych gier FPS, które zafascynowały graczy niesamowitą grafiką i dotąd niespotykaną atmosferą. Długo można by chwalić zeszłoroczne superprodukcje, jednak trzeba uczciwie powiedzieć, iż nie wykorzystują one w pełni możliwości, jakie dostarczają współczesne technologie sprzętowe i programistyczne. Jedną z takich technologii jest Shader Model 3.0 zawarty w DirectX 9.0c. Jedynie FarCry po zaaplikowaniu patcha 1.3 korzysta z zalet i możliwości SM 3.0. Jego atuty to nie tylko lepsza jakoś obrazu, ale i możliwość znacznego przyspieszenia działania gry.

Koniec udawania

Plastyczne postacie

Plastyczne postacie

Wystarczy porównać starszy Shader Model 1.1 z nowszym 3.0, by zrozumieć jak szybko grafika w grach upodabnia się do rzeczywistości. Mimo że większość gier powstaje na podstawie obsługi SM 2.0, to zapowiedziano tytuły mające wykorzystywać nowe instrukcje graficzne. Czekamy zatem na S.T.A.L.K.E.R.: Shadow of Chernobyl, Starship Troopers, czy nowy Age of Empires 3. Duża przewaga SM 3.0 nad starszymi technologiami to także zawarte w nim uproszczenia dla programistów. Pod względem sprzętowym obecnie jedynie nVidia posiada w swojej ofercie karty z obsługą Shader Model 3.0. Nawet najtańsze karty z nowej serii, czyli GeForce 6200, kosztujące ok. 450 zł, potrafią poprawnie wykorzystać aż 65,535 instrukcji shadera i wszystkie zalety nowego modelu.

Efekt świetlnego rozmazania ekranu

Efekt świetlnego rozmazania ekranu

Pisząc o możliwościach SM 3.0, trudno nie wspomnieć o Displacement Mapping, najbardziej namacalnej technologii SM 3.0. Jest ona ulepszeniem starszego Bump Mapping, który powodował, iż całkowicie płaską teksturę odbieraliśmy jak by miała głębię. Teraz, zamiast udawać wypukły albo wklęsły wzór, jest on tworzony fizycznie, czyli z płaskiej tekstury tworzy się teksturę z odpowiednia głębią.

Na horyzoncie już SM 4.0

Dowiedzieliśmy się, że już istnieje prawie gotowa specyfikacja przyszłego Shadera 4.0, który wprowadzi wiele zmian. Będzie on dołączony do przyszłego DirectX 10, który zmieni nazwę na WGF 1.0 (Windows Graphics Foundation) i połączy Direct3D z DirectDraw. Jedną z ciekawszych nowinek w SM 4.0 będzie nowy tzw. Geometry Shader, który będzie potrafił zmieniać strukturę poligonów. Jest to wyjątkowo ciekawy wynalazek, który pozwoli na tworzenie w pełni dynamicznego i plastycznego otoczenia.

Drobne oszustwa

Komputerowe auta tym się różnią od pierwowzorów, że najnowszych technologi szukasz na zewnątrz, a nie pod maską

Komputerowe auta tym się różnią od pierwowzorów, że najnowszych technologi szukasz na zewnątrz, a nie pod maską

W grach często występuje sytuacja, w której jeden z shaderów jest bardziej obciążony od drugiego. Zależy to od rodzaju silnika graficznego. Aby zapobiec takiemu przeciążeniu, które powoduje że gra znacznie spowalnia, jednostki Pixel Shader i Vertex Shader będą mogły wykonywać te same zadania. Wśród ekspertów nazywa się tę technologię Unified Shader, czyli zjednoczone Shadery. Całkowitą nowością w SM 4.0 będzie technika GPU schedulling, która pozwoli przerwać aktualne obliczenie 3D, zaparkować je w graficznej jednostce i obliczyć inne obliczenie 3D. Po co komuś tego rodzaju technologie? Z pewnością przydadzą się w kolejnej wersji Windowsa, o nazwie kodowej Longhorn, w której będzie akceleracja 3D powierzchni użytkowej.

SM 3.0 i nadchodzący SM 4.0 to ciekawe rozwiązania na drodze ulepszeń grafiki 3D. Niestety, żadna z tych technik nie jest idealna. Często stosuje się w nich pewne uproszczenia i oszustwa, by gra działała płynnie i nie zajmowała tyle czasu obliczeniowego. Dla przykładu można podać mapy cieni, które jedynie symulują cienie i są po prostu na stałe przypisane do danego obiektu. Również różnego rodzaju odbicia polegają na prostym nakładaniu stałej tekstury na obiekt. Niestety, w wielu przypadkach wygląda to nierealistycznie.

Promienna przeszłość

Wyraźnie widać różnicę w wypukłości ściany pomiędzy Shader 1.0 a Shader 3.0

Wyraźnie widać różnicę w wypukłości ściany pomiędzy Shader 1.0 a Shader 3.0

W którą stronę mogą pójść kolejne ulepszenia graficzne? Techniką przyszłości okazać się może Ray Tracing, czyli śledzenie promieni. To funkcja pozwalająca obliczać najbardziej rzeczywiste cienie, odbicia i deformacje. Jest to całkowicie odmienny sposób renderingu, niż spotykany w dzisiejszych grach. Obecne metody polegają na projekcji trójkątów na ekran. Ray Tracing tworzy wirtualnego obserwatora i od niego wychodzą promienie przechodzące przez każdy piksel ekranu. Promień jest wysyłany do każdego źródła światła. W ten sposób można obliczyć, czy po drodze znajdzie się obiekt generujący cień. Tak uzyskany obraz jest bardziej rzeczywisty, zapewniając idealne odwzorowanie cieni i odbić.

Rozwiązanie to ma niestety poważny minus. Aby obliczyć obraz o rozdzielczości 1024 x 768 pikseli, tworzy się 786,432 promieni podstawowych w scenie z ok. 500 tys. trójkątów, a każdy promień musi przejść przez każdy trójkąt. Liczba obliczeń potrzebna do wygenerowania jednej klatki animacji jest gigantyczna. Dzisiejsze PC nie poradzą sobie z płynną animacją przy tej technologii. Potrzebne są do tego superkomputery. Patrząc jednak na tempo rozwoju komputerów, za parę lat Ray Tracing pojawi się w grach.

<hr size=1 noshade>Co to jest ten Shader?

Shader to kod programistyczny, który jest wysyłany do karty graficznej, aby wykonać w niej operacje na pikselach i wierzchołkach obrazu. Kod jest uruchamiany w specjalnych jednostkach na karcie graficznej.

Za pomocą shaderów można w dynamiczny sposób zmieniać wygląd tekstur, cieni i obiektów. Tym samym daje się uzyskać efekty pobłysku metalicznego, głębi obrazu czy też zamazywania obrazu.


Zobacz również