Na progu rewolucji - część druga

Utworzono: 15 kwietnia 2018
Autor: tbxx
Odsłon:

379

Po słowniczku technicznym w części pierwszej, dziś prezentacja pierwszych zawodników: Sega Dreamcast & Sony PlayStation 2.

Część pierwsza - ta o technologiach i efektach graficznych na konsolach szóstej generacji  ->LINK<-

 

Sega Dreamcast (27.11.1998)

Po kompletnej klapie, jaką była sprzedaży konsoli Saturn, inżynierowie koncernu Sega ochoczo przystąpili do pracy nad konsolą 6 generacji stawiając sobie jasne cele: prosta architektura, łatwość programowania oraz niskie koszty produkcji.  W początkowej fazie pracowano nad dwoma projektami – w USA „Black Belt” oparty na procesorze PowerPC603e z układem graficznym 3DFX, oraz w Japonii „Dural” opartym na procesorze Hitachi SH-4 z układem graficznym NEC Power VR 2. Mimo większego zaawansowania prac nad amerykańskim projektem oraz pozytywnych opinii programistów w ostateczności zdecydowano się na rozwiązania opracowywane w Japonii. Tak, więc sercem konsoli został 32 bitowy procesor SH-4 (następca układu zastosowanego w Saturnie) o taktowaniu 200MHz. Mimo 32 bitowej architektury, procesor ten posiada jedynie 16 bitowe instrukcje, dzięki czemu może wykonywać je po dwie naraz jednocześnie.  W układzie procesora znalazła miejsce także 64 bitowa jednostka zmiennoprzecinkowa o wydajności 1.4 GFLOPS ( 1.4x10^9 operacji zmiennoprzecinkowych na sekundę), czyli 14 razy szybsza od podobnej jednostki w konsoli Nintendo 64. Na drugi z interesujących nas układów nazwany „Holly” składały się trzy elementy – procesor graficzny NEC Power VR 2, Tile Accelerator (przyspieszacz kafelkowy) oraz kontroler urządzeń zewnętrznych. Pod względem pamięci oddano do dyspozycji programistów 16MB pamięci RAM, 8MB pamięci video oraz 2MB pamięci audio. Całość mogła pracować pod kontrolą autorskiego systemu operacyjnego (oferując duże możliwości okupione większą trudnością programowania) lub wczytywanego z płyty systemu Windows CE (mniejsze możliwości przy łatwiejszym do opanowania programowaniu). Pod względem architektury Dreamcast stanowi pewien krok w tył w stosunku do konsoli Nintendo 64 – układ graficzny nie potrafi transformować ani oświetlać polygonów.

 

Możliwości układu Power VR2

Zaprojektowany przez NEC układ graficzny obsługuje trzy rodzaje prymitywów: trójkąty, ciągi trójkątów oraz czworokąty. W dziedzinie teksturowania układ może się pochwalić obsługą faktur o maksymalnej rozdzielczości 1024x1024 z paletyzacją (4 i 8 bit) oraz bez paletyzacji (16bit). Tekstury nakładane są z korekcją perspektywy i mogą być poddane filtrowaniu dwuliniowemu, trójliniowemu oraz anizotropowemu. Z nowoczesnych funkcji Dreamcast obsługuje także kompresję tekstur VQ. Mimo iż konsola obsługuje efekty wymagające więcej niż jednej warstwy tekstur, układ graficzny nie oferuje funkcji multiteksturowania.  Z dodatkowych funkcji Power VR2 oferuje między innymi cieniowanie gourada, modyfikator objętościowy (umożliwiający uzyskanie objętościowych cieni oraz oświetlenia), mapowanie normalnych (wymaga dwóch przebiegów renderingu), dwa rodzaje mgły (tablicowy oraz obliczany oddzielnie dla każdego wierzchołka), wygładzanie krawędziowe oraz wygładzanie pełnoekranowe.

Szczególną uwagę chciałbym zwrócić na dwa efekty:

- filtrowanie anizotropowe, którego opisu nie znajdziemy w podręczniku dla programistów (system operacyjny Sega). Podręcznik ten zwraca uwagę na zbyt duże obciążenie układu podczas filtrowania tróliniowego i zaleca używania go jedynie w wymagających tego sytuacjach, w pozostałych przypadkach powinno używać się filtrowania dwuliniowego.  Z kolei w podręczniku dla programistów systemu Windows CE jako najbardziej obciążające układ wymienione zostało filtrowanie anizotropowe, podejrzewam więc, że w tym pierwszym przypadku popełniono błąd, gdyż filtrowanie to możemy zaobserwować w niektórych grach.

- mapowanie normalnych, które praktycznie możemy zaobserwować w jednej pozycji – Shenmue II. Związane jest to ze skomplikowaną obsługą map normalnych na konsoli Dreamcast. Ponieważ kompresja VQ nie nadaje się do redukcji rozmiaru map normalnych, a nieskompresowane tekstury odpowiedniej, jakości zajmują zbyt dużą ilość pamięci, dlatego też układ Power VR2 używa specyficznego systemu kodowania wymagającego użycia funkcji trygonometrycznych. Ponieważ obliczenia te należą do jednych z najbardziej wymagających, stosowanie mapowania normalnych na konsoli Dreamcast staje się bardzo nieopłacalne.

 

Na oddzielną uwagę zasługuje jednostka nazwana Tile Accelerator (przyspieszacz kafelkowy). Konsola Sega Dreamcast, jako jedyna nie renderuje na raz całej sceny 3D – całość zawsze jest dzielona na „kafelki” o rozmiarze 32x32 piksele i w takiej postaci jest przesyłana do renderingu przez układ Power VR2. Poza dzieleniem obrazu na części, Tile Accelerator dysponując własnym buforem ”Z” usuwa przed dalszą obróbką niewidoczne polygony oraz piksele oferując przy tym precyzję niespotykaną na pozostałych konsolach szóstej generacji. Kolejnymi zaletami układu jest niskie zapotrzebowanie na pamięć bufora „Z” – 4KB (gdzie przy pełnej rozdzielczości 640x480 potrzeba aż 1200KB) oraz pamięć podręczną tekstury (texture cache) – w tym wypadku o pojemności 1KB. Do wad „przyspieszacza” należy zaliczyć z kolei konieczność załadowania do pamięci video położenia wszystkich wierzchołków danej sceny – 40 bajtów na polygon. 

Tile Accelerator optymalnie pracuje w rozdzielczości 640x480 i taka jest domyślna rozdzielczość wyświetlanego obrazu. Gotowa wyrenderowana scena standardowo wyświetlana jest z przeplotem (480i) a dodatkowo większość najlepszych tytułów po podłączeniu konsoli kablem VGA do monitora potrafi wyświetlić obraz bez przeplotu (480p).

 

Wydajność w grach

 

Przedpremierowe zapowiedzi odnośnie konsoli Dreamcast określały maksymalną wydajność na poziomie trzech milionów polygonów na sekundę przy milionie polygonów na sekundę możliwych do osiągnięcia w trakcie gry. Już premierowe pozycje udowodniły, że koncern Sega nie rzuca słów na wiatr. Tytuły takie jak „Virtua Fighter 3”, czy też najlepiej sprzedająca się pozycja na Dreamcasta – „Sonic Adventure” wydajnością zbliżyły się do obiecanego „miliona”. Zdecydowana większość przygotowanych w pierwszym okresie życia konsoli tytułów (w dużej mierze konwersje z PC, PSX i N64) oferowały wydajność na poziomie 500-800 tys. polygonów na sekundę. Oczywiście oferując przy tym wyższą rozdzielczość, stabilniejszą płynność animacji, lepsze tektury oraz efekty specjalne. „Miliona” nie udało się także przebić najwyżej ocenianej grze szóstej generacji – „Soul Calibur”. Mimo iż tytuł ten na konsoli Dreamcast prezentował się znacznie lepiej niż wersja na automaty Arcade, zadowalał się jedynie skromnymi 600-700 tys. polygonów na sekundę. Na bicie rekordów posiadacze „Makaronów” musieli czekać do końca 1999r. Dokładnie 29 grudnia 1999r. na rynku japońskim ukazała się gra „Shenmue” wyświetlająca maksymalne przewidziane 3 miliony. Gdyby oczywiście przyznawano takie nagrody – „Shenmue” otrzymałoby statuetkę za „największą liczbę polygonów w grze do 1999r”. Fakt ten pozwolił zweryfikować wydajność konsoli określając maksymalną wydajność na 6 milionów polygonów przy 3 milionach podczas gry. Skoro już jesteśmy przy fikcyjnych statuetkach, kolejną dla konsoli Dreamcast otrzymałaby gra „Le Mans 24 Hours” tym razem wyświetlając największą liczbę polygonów w grze do 2000r. – całe 5 milionów. Przy czym znajdują się osoby kwestionujące tą liczbę – problem stanowi objętość pamięci, jaką powinny zajmować dane wierzchołków, która nie pozostawiłaby zbyt wiele miejsca na dane tekstur. Aczkolwiek wyliczenia nie uwzględniają możliwości obsługi ciągów polygonów, traktując każdy z nich jako osobny obiekt. A skoro już jesteśmy przy wyliczeniach związanych z objętością pamięci zajmowaną przez dane wierzchołków – graniczna wartość została obliczona na około 7 milionów (w tym wypadku wyświetlany obraz byłby pozbawiony tekstur).  Ostatecznie dalsze bicie rekordów wydajności nie miało sensu i późniejsze gry (od 2000r.) oferowały wydajność na poziomie 2-3 milionów polygonów. Jak ciekawostkę chciałbym jeszcze zaprezentować grę „Sports Jam” z 2001r. wyświetlającą najbardziej dopakowaną polygonami (18'357) postać „gracza”.

 

Sony PlayStation 2 (4.03.2000)

Po niewątpliwym sukcesie pierwszego PlayStation, inżynierowie Sony za wszelką cenę chcieli udowodnić, że zwycięstwo nowicjusza w branży nie było przypadkowe. Prace nad drugą konsolą Sony rozpoczęły się już w 1997r., gdy koncern Toshiba zaproponował zaprojektowanie procesora głównego oraz układu graficznego. Wysoki stopień skomplikowania procesora, oraz wysoko podniesiona poprzeczka odnośnie jego wydajności znacząco wydłużyła czas projektowania układu. Z pierwszą specyfikacją „Emotion Engine” (gdyż tak nazwano procesor główny PlayStation 2) czytelnicy tygodnika „Microprocessor Report” mogli zapoznać się 19 kwietnia 1999r. W rzeczywistości Emotion Engine jest układem wieloprocesorowym, na który składają się:

- 128bitowy procesor główny oparty na architekturze MIPS III z elementami architektury MIPS IV. Procesor standardowo obsługuje na raz dwie 64bitowe instrukcje, przy czym inżynierowie Sony wzbogacili układ o obsługę 128bitowych instrukcji multimedialnych. Procesor posiada też własną jednostkę zmiennoprzecinkową o wydajności 0.7GFLOPS.

- układ wektorowy VU0 – specjalny wysokowydajny koprocesor matematyczny, mający w założeniach wspomagać procesor główny w obliczeniach związanych ze sztuczną inteligencją oraz fizyką obiektów. Układ możemy programować w trybie pośrednim (za pomocą instrukcji języka „C” wysyłanych przez procesor główny) oraz bezpośrednim używając niskopoziomowych instrukcji assemblera. VU0 posiada 4kB własnej pamięci na instrukcje oraz 4kB pamięci na dane.

- układ wektorowy VU1 – pod względem budowy jest bardzo podobny do VU1, a zasadnicza różnica sprowadza się do jego przeznaczenia. Układ ten ma za zadnie przetwarzać dane grafiki, które następnie za pomącą układu interfejsu grafiki (GIF) są przesyłane do układu renderującego (graficznego). Do podstawowych funkcji VU1 możemy zaliczyć transformację, oświetlanie wierzchołków, oraz wycinanie niewidocznych polygonów.  Z niespotykanych nigdzie indziej możliwości VU1 potrafi także obsługiwać powierzchnie Béziera. VU1 posiada 16kB własnej pamięci na instrukcje oraz 16kB pamięci na dane.

 

Obydwa układy VU0 oraz VU1 przeprowadzają operacje zmiennoprzecinkowe o łącznej wydajności 5.5GFLOPS, dzięki czemu cały układ Emotion Engine może się pochwalić wydajnością 6.2GFLOPS (62x szybciej od Nintendo 64 oraz prawie 4.5x szybciej od Sega Dreamcast)

 

- procesor obrazu dekodujący MPEG 2 – czyli układ odpowiedzialny za przetwarzanie video zapisanego w formacie DVD.

 

Wraz z Emotion Engine opracowano również bardzo wydajny układ graficzny „Graphics Synthesizer”. PlayStation 2 to druga po Sega Dreamcast konsola szóstej generacji, której układ grafiki nie potrafi transformować ani oświetlać polygonów. Dodatkowo inżynierowie Sony tak bardzo wzięli do siebie negatywne opinie na temat pierwszego PlayStation odnośnie grafiki 2D, mówiące konsola nie radzi sobie z grafiką 2D, dlatego też układ GS wyposażono w aż 16 jednostek rysujących piksele, czyniąc PS2 najszybciej zapełniającą ekran punktami konsolą szóstej generacji (w pewnym sensie szybszą nawet od PS4, – która rysuje piksele ok. 3.5x szybciej, ale przez większą rozdzielczość 2x wolniej zapełnia cały ekran). Natomiast układ ten w pewnym sensie nie potrafi rysować tekstur - 8 z 16 jednostek rysujących piksele możemy użyć do rysowania faktur wypełniających polygony. Układ w jednym przebiegu potrafi nałożyć tylko jedną teksturę, oraz nie obsługuje ich kompresji.  Pod względem efektów graficznych Graphics Synthesizer prezentuje się podobnie do układu RCP konsoli Nintendo 64 oczywiście pomijając kwestie transformacji i oświetlenia wierzchołków, oraz jego reprogramowalność. Graphics Synthesizer wyposażono w jedynie 4MB (na szczęście bardzo szybkiej) pamięci. Standardową rozdzielczością PlayStation 2 jest 640x480 z przeplotem, istnieje jednak możliwość wysyłania sygnału bez przeplotu (480p) oraz wysokiej rozdzielczości z przeplotem (1080i) za pomocą kabla component.

Konsola PlayStation 2 posiada w swojej konstrukcji także procesor swojej poprzedniczki, tym razem obsługujący komunikację z urządzeniami zewnętrznymi oraz zapewniający kompatybilność wsteczną (za dźwięk w PlayStation2 odpowiada podwójny układ z PlayStation). Całości konstrukcji dopełnia 32MB pamięci RAM.

 

Wydajność w grach

W przypadku pierwszego PlayStation obietnice Sony odnośnie wydajności konsoli nie znalazły pokrycia w rzeczywistości.  A jak było w przypadku PS2? Według zapowiedzi konsola miała mieć wydajność aż 20 razy większą od konkurencji w postaci Sega Dreamcast, oferując maksymalnie 60 milionów polygonów na sekundę przy 20 milionach możliwych do uzyskania w grach. Jak mówi pewna pani w jednej z reklam – „Sprawdzam!” Pierwsze gry prezentowały wydajność na poziomie 2-3 milionów polygonów na sekundę, co było wynikiem porównywalnym z aktualnie wydawanymi pozycjami na konsolę konkurencji. Natomiast na minus wyróżniała się słaba jakość tekstur oraz brak wygładzania krawędzi – pojawiły się głosy stwierdzające, że mimo zapewnień Sony układ graficzny nie oferuje tej funkcji, z czym oczywiście nie zgadzał się producent konsoli. W rzeczywistości Graphics Synthesizer oferuje odpowiednią funkcję wygładzania, aczkolwiek wymaga do tego odpowiednio posortowanych polygonów, przy czym należy stworzyć odpowiednią procedurę sortującą dla układu VU1. Sytuacji za wydajnością nie poprawiła także najlepiej sprzedająca się gra ekskluzywna na PS2 czyli Gran Turismo 3 (kwiecień 2001) wyświetlając około 5 milionów wielokątów na sekundę. Wydana w listopadzie 2001r. najlepiej oceniana gra ekskluzywna na drugą konsolę Sony – Metal Gear Solid 2 również nie zachwycała pod względem grafiki. Gdy już wydawało się, że nie ma szans na lepsze wyniki, do pracy wzięli się magicy z Naughty Dog, wypuszczając 3 grudnia 2001, jak się później okazało najbardziej dopakowaną polygonami grę na PS2 – Jak & Daxter , które mogło się pochwalić aż 15 milionami wielokątów na sekundę. Niestety „statuetkę” za najbardziej dopakowaną polygonami grę do 2001r. otrzymała pozycją na konsolę konkurencji, która wynik również 15 milionów polygonów na sekundę uzyskała dwa tygodnie wcześniej. Wynik ten osiągnięto dokonując pewnych cięć w pozostałych aspektach graficznych – stosując jedną warstwę 16 kolorowych tekstur w niskiej rozdzielczości oraz jedno globalne źródło oświetlenia. Korzystając z dużych możliwości konsoli w dziedzinie grafiki 2D do podkręcenia wizualiów użyto sporej ilości efektów cząsteczkowych. Widząc problemy twórców gier, w 2002 roku Sony rozesłało kolejne instrukcje usprawniające tworzenie kolejnych pozycji na PS2. Jedną z bolączek konsoli była słaba jakość tekstur spowodowana małą ilością dostępnej pamięci video – przy standardowej rozdzielczości 640x480 podwójny bufor obrazu wraz z buforem Z zajmował 3600kB, pozostawiając jedynie 496kB pamięci na wszystkie pozostałem tekstury wraz z ich mip-mapami. Inżynierowie Sony zalecali, więc zmniejszenie rozdzielczości do 512x448 dla systemu NTSC oraz 512x512 dla systemu PAL, przy czym możliwość uzyskania obrazu w trybie 480p nadal wymagała używania pełnej rozdzielczości. Kolejnym zabiegiem odciążającym pamięć miała być paletyzacja tekstur, czyli używanie 16 lub 256 kolorowych faktur z zapisanymi oddzielnie paletami. Bardziej zaawansowani twórcy mogli wykorzystać triki umożliwiające bezpośrednie wykorzystanie tekstur znajdujących się w pamięci głównej konsoli, używając skomplikowanych technik synchronizacji przesyłania danych geometrii wraz z teksturami do układu graficznego. W 2003 roku powstał dokument pt. „How far have we got?” w którym znajdowało się podsumowanie analiz wydajności w grach z ostatnich dwóch lat. W dokumencie tym znajdziemy wiele ciekawych informacji, takich jak:

- ponad 60% wyświetla 25/30 klatek animacji na sekundę, lub mniej

- 95% gier używa pełnej rozdzielczości 640x480

- średni poziom wykorzystania układu VU0 wynosi 2%, przy 8% maksimum

- średni poziom wykorzystania układu VU1 wynosi 56%

- gry w większości przypadków wyświetlają od 2 do 5 milionów polygonów na sekundę.

Obok podsumowania znajdziemy też kolejne porady zalecające używania układu VU0, oraz pełnego wykorzystania VU1, jednocześnie zdając sobie sprawę z ograniczeń programu wynikających z niewielkich rozmiarów dostępnej dla nich pamięci.

W kolejnych latach twórcy gier bardziej skupiali się, na jakości wyświetlanej grafiki, wykorzystując dostępne możliwości konsoli, gdzie np. w grze „Zone of the Enders 2” użyto największej ilości efektów cząsteczkowych podczas szóstej generacji. Próbowano również uzyskać za pomocą układu VU1 uzyskać efekty dostępne na bardziej zaawansowanych konsolach, dzięki czemu w grze „Matrix: Path of Neo” mogliśmy podziwiać mapowanie normalnych (na konsoli Sony efekt ten wymagał aż czterech przejść renderingu).

 

 

Część trzecia - ta o konsolach GameCube oraz Xbox ->LINK<-

12 komentarzy dla “Na progu rewolucji - część druga

    1. "ciągi trójkątów"- czym one są?
      Było w części pierwszej - generalnie chodzi o łańcuch trójkątów/polygonów połączonych jeden za drugim wspólnym bokiem - w ten sposób oszczędza się pamięć i moc obliczeniową. 1 polygon = 3 wierzchołki, jak dokleisz drugi, to wystarczy przeliczać/zapamiętywać tylko 4 wierzchołki, doklejając kolejny tylko 5 wierzchołków...

    1. Niestety ten świetny tekst, jest przy okazji tak męczący, że większość czytelników nie dotrwa do połowy. No ale jak się już powiedziało "A" to trzeba też powiedzieć "B" i będą jeszcze 2 części artykułu.

    1. Dokładnie, wartość merytoryczna fenomenalna, zdecydowanie warto zapoznać się z całym artykułem.

  1. A ja nie miałem wrażenia że art jest nóżący, wręcz przeciwnie, nie ma tu lania wody tylko same konkrety, które w jasny i klarowny sposób opisują zagadnienia techniczne konsol poprzednich generacji.
    To bardzo dobry artykuł który zbiera w jednym miejscu dużo ciekawych informacji dog. konstrukcji i działania konsol PS2 i Sega Dreamcast.
    Już nie mogę się doczekać podobnego zestawienia informacji ale w odniesieniu do Nintendo Gamecube i pierwszego Xboxa.
    Ciekawi mnie która z tych wszystkich konsol tak na prawdę miała najlepszą i najmocniejszą architekturę.
    Obstawiam Xboxa ale okaże się w praniu czy nie jestem w błędzie.
    Dobra robota i dziękuję autorowi

    1. "Ciekawi mnie która z tych wszystkich konsol tak na prawdę miała najlepszą i najmocniejszą architekturę."
      Odpowiedź na to pytanie nie będzie taka posta;)

  2. Może nie ale na pewno rzucisz na to nieco więcej światła.
    W przeszłości grałem na Dreamcaście, PS2, Gacku i Xboxie (w niektóre gry z tego ostatniego gram nawet teraz dzięki wstecznej na Xbox One) i według moich obserwacji tak na oko wydaje mi się że to wygląda tak:
    1. Xbox
    2. Gamecube
    3. PS2
    4. Dreamcast
    Ale wnioskując po tym co piszesz że to nie takie proste domyślam się że coś Xbox miał "lepsze" ale też i coś "gorsze" 🙂
    No nic tymbardziej czekam na kolejny Twój art.

    1. Kazda konsola miala cos unikalnego i lepszego, ale w wielu przypadkach developerom nie chcialo sie wykorzystywac specjalnych mozliwosci konsoli i przez to pojawialy sie takie niedopracowane porty przez ktore wielu graczy sugerowalo ze taka czy inna konsola jest lepsza bo dana gra wyglada na tej platformie lepiej. Xbox na pewno ma mocne konie pod maska w CPU i shadery... i to jest jego najwieksza sila. Na GC jak mnie pamiec nie myli to znow efekty wody wygladaly miazdzaco w niektorych grach. Zgadzam sie z tbxxem ze ciezko wskazac jednoznacznie najlepsza konsole z tamtej generacji. Mozna jedynie oceniac to jak niektorym developerom udalo sie wyciskac ostatnie soki z konkretnych maszyn i pokazac to co najlepsze udalo sie dla danej konsoli zrobic. Z pewnoscia nie sugerowalbym sie jednak porownaniami tytulow multiplatformowych.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Ładowanie