Shader Model 3.0 - przyszłość gier!
Gra komputerowa ma przede wszystkim bawić. Jednak już od dawna przywiązujemy dużą wagę do jakości grafiki i szybkości jej wyświetlania. Dużym krokiem w rozwoju grafiki 3D jest wprowadzenie technologii Shader Model 3.0.
Nie jest to rewolucja w rodzaju tej, z którą mieliśmy do czynienia przy okazji pojawienia się pierwszego akceleratora 3D, słynnego Voodoo firmy 3Dfx. Od jakiegoś już czasu postęp w komputerowej grafice postępuje mniejszymi krokami, polegającymi jednak cały czas na tym samym: na upodobnieniu tego, co widzimy na ekranie, do realnego świata. Shader Model 3.0 ma te same cele, choć jedna z jego cech ma nieco odmienne zadanie. Ale o tym trochę później. Najpierw wyjaśnijmy, co to właściwie jest shader.
Miniprogram
Najprościej mówiąc shader to krótki program wykonywany podczas generowania sceny 3D. Jego zadaniem jest wykonanie operacji na wierzchołkach trójkątów, z których zbudowana jest scena i wtedy nazywany jest Vertex Shaderem, lub też zmodyfikowanie poszczególnych pikseli obrazu - zadaniem tym zajmują się Pixel Shadery. Dzięki shaderom możliwe jest generowanie obrazów bogatszych o różne efekty graficzne (cieniowanie, teksturowanie) i w szybszym tempie, gdyż poszczególne modyfikacje obrazu wykonywane są jednocześnie, a nie jedna po drugiej. Odpowiednie oprogramowanie to jednak tylko jeden z warunków wykorzystania shaderów. Do ich wykonywania potrzebne są odpowiednie jednostki shaderowe wbudowane w procesor graficzny karty graficznej. Dopiero zgodność funkcji sprzętowych i programowych gwarantuje pełne wykorzystanie nowych możliwości. Programiści gier dbają o to, by zapewnić pisanym przez siebie programom jak największą zgodność z dostępnymi na rynku kartami graficznymi. Wymaga to jednak pracy, polegającej na napisaniu wielu fragmentów kodu w różnych wersjach. Chodzi o to, by mniej zaawansowane procesory graficzne mogły wyświetlić obraz w miarę możliwości zbliżony jakością do tego, jaki mogą wygenerować najnowocześniejsze akceleratory.
Trzecia wersja
Specyfikacja Shader Model 3.0 wchodzi w skład DirectX 9.0c, najnowszej wersji graficznych bibliotek Microsoftu. W tej chwili pełną obsługę Shader Model 3.0 oferują tylko karty graficzne wyposażone w procesor z rodziny GeForce 6xxx firmy nVidia. Można przypuszczać, że niebawem, wraz z premierą nowej generacji procesorów graficznych, obsługa Shader Model 3.0 zostanie zaimplementowana także w produktach firmy ATI.
Przedstawmy więc, na czym polegają różnice i zalety zastosowania Shader Model 3.0 w stosunku do poprzedniej wersji tej technologii:
Funkcje Pixel Shader
Shader 2.0: 96
Shader 3.0: 65535+
Shader 2.0: nie
Shader 3.0: tak
Shader 2.0: nie obsługiwany
Shader 3.0: wbudowane instrukcje pochodne
Shader 2.0: stałopozycyjny 8-bitowy
Shader 3.0: zmiennoprzecinkowy 32-bitowy
Shader 2.0 stała funkcja 8-bitowa
Shader 3.0 dowolny shader fp16-fp32
Funkcje Vertex Shader
Shader 2.0: 256
Shader 3.0: 65535
Shader 2.0: nie
Shader 3.0: tak
Shader 2.0: nie
Shader 2.0: wymagany
Przyszłość już dzisiaj
Co z tego wszystkiego wynika dla gracza? Dzięki zastosowaniu Shader Model 3.0 zwiększa się realizm świata wyświetlanego na naszych monitorach. Wystarczy porównać zamieszczone tu dwa screenshoty z najnowszej gry "Sprinter Cell Chaos Theory". Wprawdzie obraz realizowany przez starsze karty graficzne wygląda na pierwszy rzut oka bardzo dobrze, spojrzenie na zrzut wykorzystujący Shader Model 3.0 wywołuje natychmiastowe wrażenie: "Tak, to bardziej przypomina rzeczywistość!". W tej dziejącej się w ciemnościach grze widać to wyjątkowo wyraźnie - właśnie w takich warunkach gra świateł i ich odbić na różnych powierzchniach ma pierwszorzędne znaczenie. Nie znaczy to jednak, że zalety SM 3.0 dostrzeżemy tylko w ciemnościach - jedno spojrzenie na obraz z nadchodzącej gry "Age of Empires III" wystarcza, by zachwycić się na przykład delikatną, powietrzną mgiełką, której nie wygenerują procesory graficzne starszej generacji.
Koniecznie trzeba jeszcze powiedzieć o jednej z ważniejszych cech technologii Shader Model 3.0. Otóż nie tylko podnosi ona jakość grafiki wyświetlanej przez najnowsze karty graficzne, ale także zwiększa ich wydajność. Szczególnie wyraźnie widać to na przykładzie gry "FarCry", w której obsługę Shader Model 3.0 dodano w jednej z poprawek. Można było dzięki temu wyraźnie stwierdzić, że SM 3.0 podnosi wydajność kart graficznych w tej grze o 10 do nawet 35%!
Zatem już dziś zapoznajmy się z przyszłością gier komputerowych! Wśród obecnych już na rynku i zapowiadanych gier obsługujących Shader Model 3.0 znaleźć możemy między innymi takie tytuły jak: "Splinter Cell: Chaos Theory", "Vampire: Bloodlines", "Battle for the Middle Earth", "Driver 3.0", "Painkiller: Battle Out of Hell", "Far Cry - Patch 1.3", "Pacific Fighters", "Flat Out", "Medal of Honor: Pacific Assault", "TrackMania Sunrise", "Starship Troopers", "Pitfall: The Lost Expedition", 'Age of Empires III", "Grafan, "Powerdrome", "You Are Empty" i "S.T.A.L.K.E.R.: Shadow of Chernobyl". Jest więc w czym wybierać, a nowych tytułów będzie coraz szybciej przybywać.
Podpisy pod obrazki
Screen 1: Shader Model 3.0 w natarciu! Gra "Age of Empires III" ma szansę stać się nie tylko najlepiej wyglądającą strategią czasu rzeczywistego, ale będzie aspirować do miana jednej z najbardziej zaawansowanych graficznie gier w ogóle. Przewidywany termin wydania - listopad bieżącego roku.
Screen 2: "Sprinter Cell Chaos Theory" wyświetlany z wykorzystaniem Shader Model 1.1 i... ta sama gra wykorzystująca Shader Model 3.0 z włączoną funkcją HDR. Zauważmy bardziej realistyczne odbicie światła na mokrej ścianie po prawej stronie i na balustradzie oraz większą intensywność światła padającego z lamp.
Screen 3: Zwraca uwagę tekstura ściany oraz intensywne, równomiernie rozmieszczone światło lapmy. Większa precyzja koloru pozwala na stosowanie tak zaawansowanego oświetlenia na złożonej powierzchni (Paralax Mapping).
Screen 4: Kamienie, z których jest zbudowana ściana, są bardziej wypukłe dzięki zastosowaniu mapowania kierunkowego (Parallax Mapping).
Screen 5: Na tych zrzutach ekranowych ponownie widzimy sprzętowo rozmyte cienie. Dodatkowy efekt realistycznego nocnego oświetlenia uzyskany został za pomocą techniki HDR (High-Dynamic Range Rendering).
Screen 6: Zwróćmy uwagę na cień rzucany przez barierkę: po lewej stronie, przy wykorzystaniu SM 1.1, ma on ostrzejsze krawędzie. Jeśli zastosujemy SM 3.0, cień - tak jak w rzeczywistości - będzie rozmyty.
Screen 7: Tak wyglądać będą postaci w grach za 2 lata. Następna generacja gier, która powstawać będzie między innymi na Unreal Engine 3, wykorzystywać będzie nie tylko Shader Model 3.0, ale także jego rozszerzenia, które zaimplementowane zostaną w kolejnej edycji bibliotek DirectX (które zmienią nazwę na Windows Graphics Foundation 1.0).