Warp3D Nova na testach

O Warp3D Nova po raz pierwszy zrobiło się głośno w styczniu 2003 roku, kiedy to ogłoszono listę cech nadchodzącego systemu AmigaOS 4.0. Jedną z zapowiedzi było ulepszone wsparcie 3D. Klasyczne Warp 3D tkwiło technologicznie jeszcze w latach 90-tych wobec czego Hyperion widział potrzebę napisania tego środowiska zupełnie od nowa, co oznaczało, że jedynym łącznikiem z przeszłością w zasadzie miała być tylko nazwa Warp3D. Nova według założeń miała wspierać świeżą nowinkę jaka zawitała do kart graficznych, czyli silniki Shader, dodatkowo mieć rozszerzone funkcjonalności w zakresie cieniowania i mapowania. Plany były ambitne, niestety z uwagi na szereg innych wyzwań, zostały odłożone przez Hyperion ad acta na zawsze.

Niespodziewanie w 2016 roku projekt wypłynął ponownie za sprawą firmy A-EON, a przede wszystkim jej współpracownika Hansa De Ruitera. Sterowniki są dostępne w sklepie Amistore, lecz nie można ich kupić samodzielnie. Wchodzą w skład pakietu Enhancer Software, który miałem przyjemność zrecenzować tutaj i tutaj. Udało się zrealizować wszystkie zapowiedzi sprzed lat, tyle tylko, że nie wobec przestarzałych dziś chipów graficznych z rodziny R200, a nowoczesnych kart klasy Southern Island. Wsparcie dla dzisiejszych technologii stawia Warp3D Nova w zupełnie innej lidze względem klasycznego Warp3D, w skrócie jest szybciej i efektowniej. Wśród funkcjonalności bohatera niniejszej recenzji znajdują się między innymi:

T&L (Transform and Lighting) – jednostka debiutująca w formie dodatkowych kart rozszerzeń dla graficznych stacji roboczych. W sierpniu 1999 po raz pierwszy trafiła na rynek konsumencki za sprawą karty NVidia Geforce 256, a w roku 2000 chipów ATI Radeon. De facto przyczyniła się do światowej dominacji tych dwóch graczy i wycięcia całej konkurencji. Karty takich producentów jak 3DFX (Voodoo) czy Matrox (Millenium G400 MAX) nie posiadały T&L, natomiast firma S3 wprowadziła co prawda na rynek Savage 2000 Diamond Viper II, jednak ze względu na niedopracowane sterowniki moduł T&L pracował tam nieprawidłowo. Efekt – w rok po debiucie T&L na rynku kart graficznych liczyły się już tylko dwie firmy i tak jest do dnia dzisiejszego.

Tajemnicą sukcesu tej jednostki było znaczne odciążenie procesora przy dokonywaniu obliczeń animacji renderowanej grafiki trójwymiarowej. Sprzętowy układ T&L pozwala wykonywać skomplikowane obliczenia zmiennoprzecinkowe, które tworzą obraz 3D, obcinają (usuwają) obiekty znajdujące się poza obszarem sceny i przypisują każdemu wierzchołkowi wektor oświetlenia po uprzednim obliczeniu sceny i jej źródeł światła.

Niestety, pomimo iż Warp 3D dla Radeonów 7000 jest dostępny od połowy ubiegłej dekady, nigdy nie obsługiwał T&L, sytuację tę zmienił dopiero Warp 3D Nova, tyle że dla kilkanaście lat młodszych Radeonów HD 7000.

Vertex Shader – programowalna jednostka przetwarzająca geometrię i oświetlenie, w pewnym sensie następca T&L. Odpowiada za operację na wierzchołkach trójkątów, z których zbudowana jest scena 3D. Transformacja dotyczy takich wartości wierzchołków jak położenie, kolor i współrzędne tekstur, ale nie może tworzyć nowych wierzchołków. Wyjście cieniowania wierzchołkowego jest wejściem dla następnego etapu w potoku.

Pixel Shader lub w nomenklaturze OpenGL Fragmment Shader pozwala na szybkie obliczanie kolorów każdego piksela renderowanego obrazu. Uzyskana barwa jest składową wyników obliczeń Vertex Shadera, analizy parametrów tekstury oraz funkcji opisującej efekt specjalny jak mgła, przezroczystość czy stopień odbicia światła.

Shadery pojawiły się pod koniec 2001 roku w układach NVidia Geforce 3 i Radeon 8500, który był flagową kartą anonsującą wejście na rynek rodziny procesorów graficznych R200. Pomimo iż R200 jest wspierany przez Warp 3D od 2005 roku, tutaj również jak się domyślacie nie ma wsparcia dla tej technologii.

Dodam, że jednostki Shader ewoluowały wraz z kartami graficznymi i o ile w przypadku R200 obowiązywały wersje 1.1/1.4, to aktualnie jest to wersja 5.0 będąca na wyposażeniu rodziny kart graficznych Southern Islands (Radeon HD 7xxx – Rx 2xxx), którą wspiera Warp 3D Nova.

Pozostałe możliwości Warp 3D Nova wymienione przez A-EOn technology:

VBO (Vertex Buffer Object) – rozszerzenie OpenGL umożliwiające tworzenie obiektów zawierających opis geometrii. Rozszerzenie to umożliwia szybkie renderowanie sceny i znacznie zwiększa wydajność całości. Innymi słowy, polega na jednorazowym przekazaniu sterownikowi graficznemu tablic danych, zawierających współrzędne wierzchołków, wektory normalne, mapowanie tekstury, kolory itp., a następnie posługiwaniu się numerami tych tablic podczas renderowania poszczególnych obiektów w kolejnych klatkach.

SPIR-V – kod pośredniczący pomiędzy sterownikiem a Shaderami pozwalający lepiej wykorzystać moc GPU w celu przyspieszenia obliczeń.

Dalsze drążenie teoretyki dotyczącej technicznych aspektów możliwości Warp 3D Nova nie ma chyba sensu. Wszak przeciętnego użytkownika, który nie jest programistą 3D interesuje nie teoria a wymierne konkrety, które może zaobserwować na ekranie swojego monitora. Dodam więc jedynie, że nowoczesna odmiana Warp 3D, tak jak zakładano jeszcze w czasach planowania przez Hyperion, łączy się ze starym Warp 3D jedynie nazwą i nie jest z nim kompatybilna. Zatem pod Warp 3D Nova nie uruchomimy dotychczasowych kompilacji Quake, czy RTCW, działających w oparciu o starszą technologię, w tym celu potrzebujemy wzbogacić nasz system o sterowniki Warp3D_SI.

Przechodząc do praktyki zaznaczę od tego, że choć od premiery opisywanego APi 3D mija właśnie rok, nadal nie ma zbyt wiele oprogramowania do testów. W zasadzie powstało jedynie kilka przykładów wykorzystujących Warp3D Nova, niemniej można już na ich podstawie wyciągnąć pierwsze wnioski. Z punktu widzenia przeciętnego amigowca, pod względem użytkowym najbardziej wartościową z nich jest

AmiCraft Nova

AmiCraft Nova
Jest to amigowy klon Minecrafta (moja recenzja tutaj), który przejdzie do historii jako pierwsza gra wykorzystująca W3DN, wcześniej jednak korzystał z dobrodziejstw klasycznego Warp 3D i MiniGL, dlatego stanowi materiał do porównań pozwalający określić ile dają nam nowe sterowniki 3D względem tych z minionej epoki. Moje osobiste testy przeprowadziłem w rozdzielczości 1024×768 na sprzęcie klasy AmigaOne X1000 i grafice Radeon R9 270. Po wygenerowaniu pustynnego krajobrazu licznik wskazywał na 120fps, dla porównania klasyczna odsłona dla MiniGL oscylowała wokół 50 klatek na sekundę. Muszę jednak przyznać, że wyniki dla słabszych konfiguracji, jakie można znaleźć na sieci nie były aż tak dobre. Z pewnością przydałaby się więc dalsza optymalizacja i kolejne wersje AmiCraft Novy, zwłaszcza że po ostatniej aktualizacji biblioteki OpenGLES2, gra straciła z nią kompatybilność i aktualnie się nie uruchamia. Tym samym na dziś siłą rzeczy w mocy pozostają wnioski sprzed kilku miesięcy, czyli w skrócie przyspieszenie 240%.

Cow 3D

Cow3D
Niewielki programik testujący szybkość grafiki. Jak sama nazwa wskazuje wyświetla obracającą się renderowaną krowę w 3D. Pierwsza odsłona dla W3DN narobiła trochę zamieszania, gdyż przyspieszenie względem klasycznego W3D nie było takie jak się tego wszyscy spodziewali i wahało się między 220% a 290%. Okazało się, jednak że winowajcą był problematyczny licznik, FPS, który był wyświetlany na ekranie z krową. Powstała więc nowa kompilacja, która wskazanie licznika podawała wyłącznie w konsoli, wyniki natychmiast przybrały inny obraz. W poprzednim artykule napisałem, że Cow 3D pod Warp3D SI wskazywał na moim sprzęcie na wynik 170fps, w wersji bez licznika jest to już 207fps. Nie ma jednak co ukrywać, że najbardziej w górę poszły wyniki dla W3D Nova, które w moim przypadku zatrzymały się na liczbie 1472fps, co daje siedmiokrotne przebicie. Ponieważ jest to dosyć popularny benchmark, w tabeli poniżej przytoczę wyniki dla innych konfiguracji.

Tabela wyników

Analizując dane z tabeli można pokusić się o kilka wniosków. Przede wszystkim w przypadku klasycznego Warp 3D potwierdziło się to, co już było wiadomo wcześniej, że moc CPU ma istotne znaczenie. Widać to zwłaszcza po różnicach między X5000 a A1 500, gdzie przewaga na korzyść tego pierwszego komputera jest ponad dwukrotna. Zdziwienie może budzić stosunkowo mała różnica między X1000 a AOne 500, jednak jak tłumaczy Hans w przypadku Cow 3D wąskim gardłem jest przepustowość PCI-e, która w wyniku ograniczeń amigowego sterownika jest marnotrawiona na przesył danych CPU – VRAM, docelowo będzie to naprawione tak by GPU mógł pobierać te dane przy użyciu DMA (jednak jak zastrzega, to wymaga czasu). X5000 dostaje tutaj duży handicap nad X1000, ze względu na bardzo dobry kontroler PCIe, zapewniający większą przepustowość transferów do CPU.

Przejdźmy teraz do wyników Warp 3D Nova, które mogą wydawać się po części sensacyjne. Zacznijmy jednak od tego, co sensacją nie jest, czyli rezultatów o kilka klas wyższych w stosunku do wcześniejszych. Absolutnie słupki po lewej stronie dla każdej konfiguracji wystrzeliły w górę. Warp 3D Nova z Shaderami miał zlikwidować kilka hamulców ręcznych, miał nam dać zdecydowanie większą wydajność i tak właśnie się stało. Miał też zdecydowanie odciążyć CPU, to też wielu spodziewało się, iż wyniki dla poszczególnych komputerów się spłaszczą. Nikt chyba jednak nie liczył, że w kilku przypadkach SAM 460 przebije X1000! Aby to zrozumieć należy przyjrzeć się kartom graficznym w zestawieniu. Najsłabszy wynik dla X1000 został osiągnięty dla karty Radeon HD 7950. Teoretycznie karty HD 79xx to absolutnie górna półka wydajnościowa, jednak jeśli spojrzymy na taktowanie rdzenia tej karty to jest to jedynie 800MHz, najniżej spośród klasy hi-end dla całej rodziny. Tymczasem najmocniejsza karta dla Amigi One 500 to R7 250, taktowana 1050Mhz, choć teoretycznie jest to klasa średnia, to praktycznie względem zagara GPU osiąga maximum w rodzinie. 1050MHz osiąga jeszcze tylko jeden model, tyle że z górnej półki R9 270X, który jak się okazuje wygrywa w zestawieniu, ale też przy okazji warto dodać, że bryluje w benchmarkach 2D. Z uwagi na powyższe fakty mogłoby się wydawać, że na dzisiaj R9 270X jest najwydajniejszą kartą dla AmigaOS 4. Jednak nie powinniśmy wystawiać zdecydowanych ocen na podstawie jednego jedynego benchmarku. Zresztą w przypadku standardowego Warp 3D, gdzie prędkość GPU powinna mieć teoretycznie jeszcze większe znaczenie X1000 z R9 270X plasuje się o dziwo w środku stawki. Sam Hans podkreśla, że im bardziej złożony test tym przewaga najmocniejszych kart powinna być wyraźniejsza i gdyby krowa składała się z dwukrotnie większej liczby wierzchołków wyniki zapewne byłyby inne (być może wygrałaby X5000 z kartą R9280X, na co wskazywałaby teoretycznie największa moc obliczeniowa tego zestawu).

Podsumowując jedyne co można twierdzić na pewno to zdecydowana przewaga Warp 3D Nova nad Warp 3D, pozostałe wnioski są obarczone zbyt dużym marginesem błędu i mogą ulec diametralnej zmianie, gdy zmienią się okoliczności. Wydaje się, że więcej pewnych odpowiedzi przynosi kolejny benchmark, czyli

Starbox demo

StarBox Demo
Demonstracja wykorzystuje jedynie Warp 3D i OpenGL ES 2, prezentuje scenę kosmiczną ze słońcem i kilkoma planetami, księżycami, rozproszonym światłem. Obiektów na ekranie jest więcej, w dodatku można ustawić dowolną rozdzielczość prezentacji, oraz zdecydować czy program ma być wykonywany na osobnym ekranie czy w oknie Workbencha. Jednym słowem jest to z pewnością większe wyzwanie dla karty graficznej niż krowa. Wyniki dla mojej konfiguracji, przy rozdzielczości FullHD to 266,81fps (windowed) i 264.89fps (fullscreen). W tabeli poniżej obok mojej konfiguracji, przedstawiłem też 9 pozostałych.

Tabela wyników

Znowu okazuje się że z SAM 460 przegrywa X1000 z Radeonem HD 7750 (no powiedzmy remisuje), co ciekawe tym razem nie on zamyka stawkę, gdyż jeszcze gorzej wypadł R9 280. Natomiast jego kuzyn teoretycznie, najmocniejszy w rodzinie R9 280X, w dodatku zamontowany w X5000, choć wygrał z HD 7770 w AmidzeOne 500, też jakoś specjalnie nie błyszczy. Wykres jednoznacznie pokazuje, że znowu kartą, która góruje nad konkurencją jest Radeon R9 270X. Nadal jednak byłbym ostrożny czy już teraz ten model można ogłosić najwydajniejszą kartą, która będzie liderować w światku Warp 3D Nova, jeszcze długie miesiące. Niewątpliwie przydałoby się wykonać jeszcze kilka innych, znacznie bardziej złożonych testów.

Podsumowanie
Warp 3D Nova wprowadził nową erę do amigowego świata 3D. Jest zdecydowanie szybciej i lepiej. Niemniej pierwsze testy pokazują, że choć weszliśmy do innej ligi, wciąż w amigowej obsłudze akcelerowanej grafiki 3D występują pewne anomalie. Według danych technicznych, które przekładają się także na realia świata PC karta Radeon R9 280X, jest wydajniejsza od R9 270X, praktycznie w każdym benchmarku i w każdej grze. Tymczasem w przypadku Amigi jest odwrotnie, oczywiście być może jest to kwestia konkretnego podkręconego przez producenta modelu karty, tudzież innych zmiennych, bądź też po prostu zbyt mało wymagających benchmarków. Na dziś z pewnością cieszyć się mogą użytkownicy SAM 460 i potencjalni posiadacze A1222. Z tabel wynika bowiem jasno, że obliczenia grafiki w środowisku Warp 3D Nova, sa dużo mniej zależne od CPU i AmigaOne 500 z dobrą karta graficzną na pokładzie, spokojnie może konkurować z dużo droższymi konfiguracjami, takimi jak X1000 czy X5000. Niemniej należy się spodziewac, że w przypadku większego obciążenia komputera, np. przez rozbudowaną grę, gdzie dochodzą inne aspekty, typu mechanika, fizyka, dźwięk itp. nastąpi pewna korekta względem obrazu jaki wyłania się na dziś. Wszak nawet na platformach, które mają najlepsze sterowniki grafiki, dostarczane przez  ATI czy NVidię, moc CPU i innych komponentów zestawu komputerowego, ciągle ma znaczenie dla prędkości pracy zaawansowanych aplikacji 3D. Dlatego z pewnością prawdziwym testem będzie Doom 3 bądź jakaś inna duża gra 3D przeportowana z PC.

Wśród ludzi testujących nowe środowisko, którym dostarczone są na bieżąco wszelkie nowości od Hansa (W3DN) i Daytony (OpenGLES 2) są między innymi tak zaprawieni w boju developerzy, jak Hugues „HunoPPC” Nouvel czy ekipa z Entwickler-X. Z moich wiadomości wynika, że wymienione osoby już od dawna pracują nad swoimi projektami obsadzonymi w środowisku Warp 3D Nova, wydaje się, więc że taka gra jest kwestią tygodni. Życzę sobie i wszystkim czytelnikom by rzeczywiście wkrótce tak się stało i by rok 2017 był okresem rozkwitu oprogramowania dla nowego API, którego niestety na tę chwilę (marzec 2017) nie ma zbyt wiele.

O Mufa