Warp 3D dla „Wysp Południowych”

W 1996 roku firma 3DFX wypuściła na rynek produkt, który na zawsze odmienił sposób wyświetlania grafiki trójwymiarowej. Karty Voodoo, które na początku pełniły jedynie rolę dodatkowego akceleratora grafiki do już zamontowanego chipu graficznego 2D, wprowadziły graczy w zachwyt. Branżowe pisma rozpisywały się na temat fantastycznej płynności Quake czy Tomb Ridera, które przy tym nie traciły na jakości obrazu, a wręcz przeciwnie wyglądały zdecydowanie lepiej. Śladem 3DFX, poszły inne firmy hardware’owe i wkrótce potem rynek pecetów zalała fala kart graficznych wyposażonych w sprzętową akcelerację 3D.

Środowisko amigowe nie mogło przejść obojętnie wobec rewolucji związanej z wyświetlaniem grafiki, czyli tematem, który jeszcze w latach 80-tych był głównym atutem przyjaciółki”. Dominująca w tamtym czasie na amirynku firma Phase 5 dosyć szybko wypuściła kartę CyberVision 3D. Ludzie z Pahse 5 zapomnieli, jednak że sam chip 3D to nie wszystko. Magazyn Amiga pisał więc zgorzkniale, że jest to chyba jedyna na świecie karta 3D bez sterownika wspomagającego trójwymiarową grafikę. Po premierze akceleratorów z procesorami PPC, na rynku pojawiły się kolejne karty 3D w postaci CyberVision PPC i BVision PPC (wyposażone w chip Permedia 2). Ponieważ Phase 5 dalej nie potrafił stworzyć software’owego środowiska obsługi 3D, zakupił od firmy Apple licencję na bibliotekę Rave 3D, jednak jak pokazało życie i to posunięcie okazało się klapą.

Jak to już wcześniej w przypadku produktów Phase 5 bywało, sytuację musiała ratować firma trzecia. Tym razem zbawcą okazał się Hyperion, tworząc środowisko Warp 3D. Pamiętam swoje niesamowite doznania, kiedy pierwszy raz na mojej Amidze z BVision PPC uruchomiłem akcelerowanego Descenta. Nieziemska jak na amigowe gry 3D płynność i znakomita (jak to mi się wtedy wydawało) grafika – po zbliżeniu do ścian piksele nie zamieniały się już w wielkie płyty chodnikowe”. Dzisiaj oczywiście można to odbierać z przymrużeniem oka, ale w latach 90-tych takie rzeczy wzbudzały prawdziwy zachwyt.

W latach 1998 – 2001 Warp 3D rozwijał się dosyć intensywnie. Powstały cztery wersje biblioteki, pozwalające na obsługę kart na chipach S3 Virge, Permedia 2 i Voodo 3/4/5 oraz współpracę ze środowiskiem MiniGL. Potem Hyperion podpisał umowę na rozwój AmigaOS 4 i sprawy związane z Warp 3D odeszły na dalszy plan. Początkowo zapowiadano co prawda zupełnie nowe środowisko Warp 3D Nova. Jednak ostatecznie usunięto ten element z planów rozwoju systemu i skończyło się na Warp 3D 5 ze wsparciem dla kart Radeon 7000, 7200 i 7500, które zadebiutowało w 2005 r. Rok później rozszerzono listę obsługiwanych kart o Radeony 9000, 9200 i 9250. Od tego momentu minęło wiele długich lat, kiedy w temacie grafiki 3D panował kompletny zastój. Hyperion uznał (zresztą słusznie), że środowisko Warp 3D jest już zbyt przestarzałe jak na możliwości współczesnych kart graficznych i postanowił, że systemem obsługi grafiki 3D w AmigaOS 4.2 będzie Gallium. Pakiet Warp 3D został uznany za zbędny balast i powędrował w ręce firmy A-EON Technology.

Historia rozwoju środowiska Warp 3D

W tym momencie w zasadzie powinienem zakończyć artykuł, traktując go jako wspominkowy materiał historyczny. Życie amigowca potrafi jednak zaskakiwać i okazuje się, że Warp 3D wcale nie przeszedł do lamusa historii (Warp 3D Nova zresztą również). Niestety pracę nad AmigaOS 4.2 a co za tym idzie nad Gallium, niesamowicie się przeciągają, tymczasem użytkowników Amig One wyposażonych w Radeony HD systematycznie przybywało. Ciśnienie tego środowiska na jakiekolwiek 3D (sam jako posiadacz X1000 musiałem znosić brak wsparcia 3D przez 3.5 roku) cały czas rosło. Dodatkowo dochodziła kwestia software, które jak wiadomo w realiach amigowych jest na wagę złota i po prostu grzechem jest marnowanie dotychczasowego dorobku. Ten w przypadku oprogramowania zgodnego z obowiązującym od lat standardem obsługi 3D, wcale nie jest taki mały jak by się to pozornie wydawało. A-EON podjął więc decyzję o rozpoczęciu prac nad Warp 3D dla Radeonów HD z serii 5000 i 6000. Decyzję tę hucznie odtrąbiono, jednak zwykły użytkownik jak dotąd nie miał okazji zapoznać się z efektami prac i wydaje się, że z uwagi na fakt iż karty te znikły z rynku, temat umarł śmiercią naturalną”. Inaczej było z kartami Southern Islands (Radeony HD 7000 i Radeony R9), tutaj prace toczyły się w całkowitej tajemnicy, tak że niemal do samego końca nie wiadomo było czy te chipy również będą obsługiwane przez Warp 3D. Wiadomość o wypuszczeniu biblioteki, która po niemal dekadzie zastoju, w zakresie 3D otwiera przed amigowcami drzwi do zupełnie nowej generacji kart graficznych, gruchnęła więc niczym grom z jasnego nieba. W dodatku miało to miejsce 1 kwietnia. Na szczęście okazało się, że nie jest to ponury Prima Aprillisowy żart, tylko rzeczywistość, którą mam przyjemność opisać.

Warp3D_SI w sklepie Amistore

Aby lepiej zrozumieć jak duży krok technologiczny nastąpił na polu obsługi 3D w AmigaOS przedstawię porównanie dwóch kart, których miałem przyjemność używać. Pierwsza to Radeon 9000 Pro, który do niedawna był najszybszą kartą 3D obsługiwaną przez AmigaOS, druga to aktualnie użytkowany przeze mnie Radeon R9 270. Radeon 900 Pro zadebiutował 18 lipca 2002, R9 270 to produkt, który trafił do sprzedaży w październiku 2014 roku. Obie karty dzielą więc długie lata, a przyjmując standardy informatyczne wręcz wieki. Radeon 9000 Pro był wykonany w procesie technologicznym 150nm i zawierał około 40 milionów tranzystorów, wartości dla R9 270 to 28nm i 2.8 miliarda tranzystorów. Kosmicznych różnic obu kart graficznych jest więcej (szczegółowo przedstawiam je w tabeli), jednak nie przekładają się one aż w tak dużym stopniu na to, co widzimy na ekranach naszych Amig. Warp 3D był bowiem świetnym rozwiązaniem w latach 90-tych kiedy to na Amidze panowały karty oparte na chipach S3Virge czy Permedia 2. Dzisiaj jednak jest już tylko zestawem różnego rodzaju wąskich gardeł i jednym wielkim hamulcem ręcznym, który nie pozwala rozwinąć skrzydeł współczesnym chipom graficznym.

Radeon 9000 Pro vs. R9 270 – tabela porównawcza

Dużym atutem Warp 3D_SI (Southern Islands) jest kompatybilność wsteczna, którą udało się zachować pomimo istotnych różnic Radeonów HD 7000 z konstrukcjami sprzed nastu lat. Ze 100% powodzeniem udało mi się przetestować wszystkie dema i intra scenowe (około 40 pozycji). Niemal równie dobrze przebiegły testy z grami i emulatorami. W tym przypadku na kilkadziesiąt przetestowanych pozycji problemy z przekłamaniami grafiki napotkałem jedynie przy grze DukeNukem 3D uruchomionej w trybie 16 bądź 32-bitowym. Nie jest to jednak problem nie do pokonania, gdyż w DN3D możemy grać w trybie 8-bitowym (wówczas prawdopodobnie gra nie korzysta z akceleracji 3D), bez najmniejszych kłopotów. Stosunkowo najmniejsza zgodność jest z drobnymi demkami, które znajdziemy w katalogu demo/misc na serwerze OS4Depot. Przy czym mówiąc najmniejsza, mam tutaj na myśli kompatybilność na poziomie 85% – 90%. Najmniej liczną grupą softu wspieraną przez W3D jest oprogramowanie użytkowe. W zasadzie z rzeczy, które znajdują się na moim twardym dysku kojarzę tylko dwa programy. Pierwszy Blender działa bezproblemowo, niestety drugi Lode Paint wyświetla jedynie okno z czarnym ekranem.

Sulaco – demo scenowe dla WarpOS i Warp3D, uruchomione na A1 X1000 z kartą Radeon R9 270

W pierwotnej wersji tekstu jaka ukazała się w Amigazynie 4/2015 napisałem, iż z racji tego, że na Amigę One X1000 nie powstała dedykowana biblioteka powerpc.library (takowa działa jedynie na starszych modelach A1) nie byłem w stanie przetestować starszych gier 3D dla WarpOS, takich jak Wipeout 2097, Heetic II czy Shogo. Sytuacja uległa zmianie i dzisiaj za sprawą projektu ReWarp emulacja powerpc.library, jak i warp3Dppc.library jest już możliwa. Jednakowoż o ile ta pierwsza biblioteka przy sofcie płaskim sprawuje się całkiem nieźle, o tyle skuteczność Wapr3Dppc.library pozostawia wiele do życzenia. Podczas moich testów z powodzeniem uruchomiłem kilka dem scenowych, niestety, jeśli chodzi o wspomnianą trójkę gier komercyjnych, to choć każda z nich ruszyła, to na dalszym etapie problemy z wyświetlaniem grafiki były tak duże, że uniemożliwiały jakąkolwiek rozgrywkę. Na szczęście nowsze komercyjne gry Hyperionu takie jak Quake 2 czy Descent Freescape istnieją także w natywnych wersjach dla AmigaOS 4 i nie ma z nimi problemu. W tym miejscu muszę jednak napisać o innej niedogodności, która nie tyle jest związana z samym Warp 3D, co z układem Southern Islands. Mianowicie AMD zdecydowało o usunięciu z tej generacji kart (i wszystkich nowszych) wsparcia dla przestarzałego trybu wyświetlania grafiki 16-bit big endian. Oznacza to problemy z aplikacjami cygnixowymi (działa jedynie tryb okienkowy, który jest bardzo wolny). Oczywiście autor AmiCygnixa wie o tych niedogodnościach i pracuje nad skutecznym rozwiązaniem. Po więcej szczegółów na ten temat odsyłam do Amigazynu 1/2017, w którym zamieszczam spory artykuł dedykowany AmiCygnixowi.

Gigabyte R9 270 – jedna z mocniejszych lart rodziny Southern Island

Prędkość działania to element, który najbardziej ekscytuje zapalonych graczy. Jak już wspominałem wcześniej Radeony R9 i HD 7xxx od chipów Rv 2xx (Radeon 9000, 9200, 9250) dzieli technologiczna przepaść i współczesne karty powinny zapewniać przynajmniej kilkudziesięciokrotnie lepszą wydajność. To jest jednak tylko teoria, która z amigowymi realiami ma mało wspólnego. Warp 3D_SI nie powstał po to, by pokazywać dziką moc najnowszych radków a po to, by zapewnić kompatybilność wsteczną. Moc ma pokazać dopiero Warp 3D Nova, który posiada wsparcie dla nowych technologii. Mimo wszystko amigowiec użytkujący kartę z rodziny Wysp Południowych jest jednocześnie posiadaczem najszybszego klasycznego Warp3D, jakie powstało w historii AmigaOS. Już pierwsza publiczna wersja oznaczona numerem 1.8 oferowała na mojej X1000 kilkukrotnie lepszą wydajność w gach od tego, co notowałem w czasach posiadania Amigi One XE i Radeon 9000Pro. Pojawienie się W3D_SI na Amistore nie oznaczało, że autor spoczął na laurach, cały czas bowiem trwały pracę nad optymalizacją działania sterownika. W chwili, gdy piszę te słowa obowiązująca wersja to 1.14, możliwe, że w przyszłości pojawią się kolejne w ramach pakietu Enhancer Software, choć nie ma co ukrywać, że cel kompatybilności wstecznej został osiągnięty, a jeśli chodzi o śrubowanie wydajności to jedynym sensownym priorytetem jest rozwój Warp3D Nova.

Po premierze najnowszej odsłony W3D ulubionymi benchmarkami amigowców stały się gra Quake III i mały programik demonstracyjny Cow3D. Aktualnie Quake III uruchomiony w rozdzielczości 1280×1024 działa na moim Radeonie R9 270 z prędkością 73fps (mocniejsza karta, taka jak np. R9 280x, daje tutaj niewielkie przyspieszenie na poziomie kilku fps), co oznacza około 40% progres w porównaniu do pierwszej publicznej wersji sterownika. Program Cow3D działa na mojej konfiguracji z prędkością 170fps (w przypadku Amigi One X5000 jest to już wynik na poziomie powyżej 300fps), co daje wzrost o blisko 100% w stosunku do wersji wypuszczonej 1 kwietnia. Powyższe przykłady pokazują, że optymalizacje w różnym stopniu przyczyniają się do działania konkretnych aplikacji. Quake III w dużej mierze korzysta ze środowiska MiniGL (które jest równie przestarzałe co Warp 3D i by uzyskać co więcej potrzebne są tutaj optymalizacje), dlatego przyspieszenie jest mniejsze. Cow3D działa w oparciu o czyste Warp 3D, bez pośrednictwa MiniGL, zatem efekty postępów prac Hansa de Ruitera są tutaj zdecydowanie lepiej widoczne, choć nie mogą się równać z wynikami dla Warp3D Nova, ale o tym napiszę już w kolejnym artykule.

Quake III – klasyczna gra pod kontrolą Warp3D-SI

Bez względu na to, jak by nie oceniać przytoczonych przeze mnie liczb. Należy pamiętać, że te wyniki pokazują wystarczającą moc by AmigaOne X1000 poradziła sobie z całym dotychczasowym softem 3D stworzonym dla AmigaOS. By móc komfortowo pograć w Quake III wcale nie potrzeba setek fps (zresztą gra ma opcję ogranicznika na poziomie 85fps, właśnie po to by grało się lepiej). Trzecia część Quake nie jest już oczywiście najbardziej zaawansowaną technicznie grą 3D dla Amigi. Istnieją pozycje działające w oparciu o bardziej rozbudowany silnik jak np. Return To Castle Wolfenstein czy seria Jedi Knight. Swego czasu spędziłem przy Jedi Academy dobre kilkanaście godzin i zapewniam, że produkt jest jak najbardziej grywalny na mojej konfiguracji. Pamiętam, że w czasach panowania Amigi One G4 XE i Radeonów 9000, powstało na AmigaOS 4 kilka gier, które mógłbym określić mianem sztuka dla sztuki”. Jedną z nich był bez wątpienia Neverball (zwłaszcza w ostatniej wersji 1.5.4). Od biedy można było tutaj popróbować swych sił na pierwszych kilku poziomach. Potem gdy levele się komplikowały a na ekranie pojawiało się więcej obiektów, obserwowaliśmy już tylko slideshow i o żadnej rozrywce nie mogło być mowy. Innym tytułem dostarczającym podobnych wrażeń był Super Tux Kart. Gra była specjalnie optymalizowana powstała nawet dedykowana amigowa wersja z okrojoną grafiką, jednak wszystkie te zabiegi nie pozwoliły na to, by móc na ówczesnym hardware pograć zupełnie płynnie. Teraz to wszystko się zmieniło i w obie te pozycje mogę spokojnie grać na mojej Amidze.

Jest jeszcze jedna rzecz, która odróżnia dzisiejsze Warp 3D od tego sprzed lat – znikoma wrażliwość na zmianę rozdzielczości. Kiedyś zwiększenie rozdzielczości danej gry 3D powodowało spadek prędkości działania w trybie astronomicznym W Quake III grało się albo w 640×480, albo najwyżej w 800×600. Przy większych rozdziałkach było już tak wolno, że gra nie miałaby sensu. Teraz spokojnie można się bawić ustawiając 1280×1024 czy inną maksymalną rozdzielczość, na którą pozwala monitor. Spadek prędkości działania w porównaniu do 640×480 będzie co najwyżej kilkuprocentowy. Ta zasada obowiązuje nie tylko w przypadku Q3, ale dla niemal wszystkich innych tytułów.

Jedi Academy – Gwiezden Wojny na Amidze

Podsumowując Warp 3D dla rodziny Southern Islands, to jedna z najlepszych wiadomości, jakie pojawiły się w 2015 roku w świecie AmigaOS 4. Przerywa wieloletni zastój w rozwoju 3D na Amigę. Posiadaczom najnowszych modeli A1 czy SAM 460 skazanym dotychczas wyłącznie na grafikę 2D (z wyjątkiem tych, którzy zdecydowali się włożyć Radeona 9xxx w przestarzałe sloty PCI), daje nowego pałera i otwiera przed nimi bogatą bazę oprogramowania wykorzystującego akcelerowaną grafikę 3D. Gracze mogą wreszcie czerpać przyjemność z tytułów, które wcześniej ze względu na zbyt niską moc obliczeniową starszego hardware’u, były całkowicie niegrywalne. Małym cieniem kładzie się, mimo wszystko ciągle dosyć niewielkie wykorzystanie potencjału mocy nowych Radeonów, oraz fakt, że po raz pierwszy w historii istnienia Warp 3D, trzeba za niego płacić (nie tyle za główną bibliotekę, która ciągle jest składnikiem systemu tylko za dedykowaną pod bibliotekę W3d_SI.library). Mimo wszystko uważam, że ci, którzy na taki wydatek się zdecydują nie będą żałować, zwłaszcza że pomimo iż od roku mamy na rynku Warp3D Nova, wciąż przenoszone są na nasze podwórko tytuły wykorzystujące klasyczne Warp3D. Zapewne w najbliższym czasie będzie się to stopniowo zmieniać, dlatego warto przyjrzeć się nowej generacji sterowników 3D z dopiskiem Nova, które zrecenzuję wkrótce.

O Mufa