« Architektura Nintendo 64 (index)

Architektura Nintendo 64

Chapter 4: Grafika


Spis Treści

  1. Architektura
    1. Reality Signal Processor
    2. Reality Display Processor
    3. Pozostałe kroki
  2. Szybka demonstracja
    1. Przetwarzanie Wierzchołków
    2. Przetwarzanie pikseli
  3. Projekty
  4. Współczesne oznaczanie widocznych wierzchołków
  5. Sekrety i ograniczenia
    1. Zastoje Potoku
    2. Pamięć tekstur
  6. Uniwersalne wyjście wideo

To, co widzisz na ekranie, jest wytwarzane przez ogromny chip, zaprojektowany przez Silicon Graphics zwany Reality Co-Processor działający z prędkością 62.5 MHz. Ten pakiet zawiera wiele obwodów, więc nie martw się, jeśli masz trudności ze śledzeniem, podsystem graficzny ma bardzo złożoną strukturę!

Ten projekt opiera się na filozofii, że GPU nie ma być 'prostym' rasteryzatorem jak u konkurenta. Zamiast tego, powinien być również w stanie przyśpieszyć obliczenia geometrii (odciążając CPU) a do tego potrzebne będzie więcej obwodów.

Architektura

Ten chip jest podzielony na trzy główne moduły, z których dwa są używane do przetwarzania grafiki:

Reality Signal Processor

Image
Architektura Reality Signal Processor (RSP).

Znany również jako RSP to tylko inny pakiet CPU składający się z:

Aby korzystać z tego modułu, CPU przechowuje w pamięci RAM serię poleceń o nazwie Lista wyświetlania wraz z danymi, które będą manipulowane, następnie RSP odczytuje listę i wykonuje wymagane operacje. Dostępne funkcje obejmują transformacje geometrii (takie jak projekcja perspektywy), przycinanie i oświetlenie.

Wydaje się to proste, ale w jaki sposób wykonuje te operacje? Oto interesująca część: W przeciwieństwie do konkurentów (PS1 i Saturn), silnik geometrii nie jest stałofunkcyjny. Zamiast tego, RSP zawiera trochę pamięci (4 KB dla instrukcji i 4 KB dla danych) do przechowywania mikrokodu : Mały program, z nie więcej niż 1000 instrukcjami, który wdraża potok graficzny. Innymi słowy, ukierunkowuje on Scalar Unit, w jaki sposób powinien operować danymi graficznymi. Mikrokod jest dostarczany przez CPU podczas jego pracy.

Nintendo dostarczył różne mikrokody do wyboru z i, podobnie jak tryby tła SNES-a, każdy z nich wykorzystuje zasoby w inny sposób.

Reality Display Processor

Image
Architektura Reality Display Processor (RDP).

Po zakończeniu przetwarzania danych wielokątów RSP rozpocznie wysyłanie poleceń rasteryzacji do następnego modułu, RDP, aby narysować klatkę. Te polecenia są wysyłane za pomocą dedykowanej magistrali o nazwie XBUS lub za pośrednictwem głównej RAM.

RDP jest kolejnym procesorem (tym razem z ustaloną funkcją), który zawiera wiele silników do rasteryzacji, mapowania tekstur na nasze wielokąty, mieszania kolorów i utworzenie nowej klatki.

Może przetwarzać trójkąty lub prostokąty jako prymitywy, te ostatnie są przydatne do rysowania sprite'ów. Potok rasteryzacji RDP zawiera następujące bloki:

RDP zapewnia cztery różne tryby działania, każdy tryb łączy te bloki w różny sposób w celu optymalizacji określonych operacji.

Ponieważ ten moduł stale aktualizuje bufor klatki, obsługuje RAM bardzo różnie: Pamiętasz o nietypowym 9-bitowym 'bajcie'? Dziewiąty bit jest używany do obliczeń związanych z buforem klatki (buforowanie głębi i antyaliasing) i może być obsługiwany tylko przez interfejs pamięci.

Pozostałe kroki

Powstała klatka musi zostać wysłana do Kodera Wideo, żeby wyświetlić ją na ekranie (DMA i komponent Interfejsu Wideo są niezbędne do osiągnięcia tego).

Teoretyczne maksymalne możliwości to 24-bitowa głębokość kolorów (16,8 milionów kolorów) i rozdzielczość 640x480 (lub 720x576 w regionie PAL). Wymieniam to jako 'teoretyczne', ponieważ korzystanie z maksymalnych możliwości może być zasobożerne, programiści będą skłaniać się do korzystania z gorszych trybów, aby uwolnić wystarczającą ilość zasobów dla innych usług.

Szybka demonstracja

Umieśćmy wszystkie poprzednie wyjaśnienia w perspektywie. Użyję w tym celu Super Mario 64, aby pokazać, w skrócie, jak komponowana jest klatka:

Przetwarzanie Wierzchołków

Image
Widok naszej sceny złożony z prymitywów. Aby zaoszczędzić ilość wielokątów, niektóre znaki są modelowane za pomocą duszków (quads)

Początkowo nasze zasoby (modele 3D itp.) znajdują się w pamięci ROM kartridża, jednak aby utrzymać stałą przepustowość, musimy najpierw skopiować je do pamięci RAM. W niektórych przypadkach można znaleźć dane wstępnie skompresowane w kartridżu, więc procesor musi je dekompresować przed ich użyciem.

Kiedy to zostanie zrobione, nadszedł czas, aby stworzyć scenerię za pomocą naszych modeli. Procesor może samodzielnie przeprowadzić cały potok, ale to może zająć wieki, wiele zadań jest więc delegowanych do RCP. CPU zamiast tego wyśle polecenia do RCP. Zadania te są realizowane w następujący sposób:

  1. Utwórz Listę Wyświetlania, która zawiera operacje, które mają być wykonane przez RSP i przechowaj je w pamięci RAM.
  2. Wskaż RSP, gdzie znajduje się lista wyświetlania.
  3. Wyślij mikrokod do RSP, aby uruchomić Scalar Unit.

Później, RSP rozpocznie wykonywanie pierwszej serii zadań, a wynik zostanie wysłany do RDP w formie poleceń rasteryzacji.

Przetwarzanie pikseli

Image
Wyrenderowana ramka (Tada!).

Dotychczas udało nam się przetworzyć nasze dane i zastosować na nich pewne efekty, ale nadal potrzebujemy:

Jak się możecie domyślać, zadania te są wykonywane przez RDP. Aby to wykonać, tekstury muszą zostać skopiowane z pamięci RAM do TMEM przy użyciu DMA.

RDP ma stały potok, ale możemy wybrać optymalny tryb działania na podstawie bieżącego zadania w celu poprawy ilości klatek na sekundę.

Gdy RDP zakończy przetwarzanie danych, zapisze ostateczną bitmapę do bufora klatki w pamięci RAM. Następnie procesor musi przenieść nową ramkę do Interfejsu Wideo (VI), najlepiej za pomocą DMA. Z kolei VI przekaże go do Enkodera Wideo w celu wyświetlenia na telewizorze.

Projekty

Oto kilka przykładów poprzednich projektów 2D dla Super Nintendo, które zostały przeprojektowane dla nowej ery 3D, są interaktywne, więc zachęcam Cię do ich sprawdzenia!

3D model 3D model 3D model
Model interaktywny dostępny w nowoczesnej edycji
The Legend of Zelda: Ocarina of Time (1998).
704 wierzchołków.

3D model 3D model 3D model
Model interaktywny dostępny w nowoczesnej edycji
Kirby 64: The Crystal Shards (2000).
516 wierzchołków.

Współczesne oznaczanie widocznych wierzchołków

Jeśli przeczytałeś o poprzednich konsolach, napotkałeś niekończący się problem dotyczący widoczności wierzchołków i możesz teraz myśleć, że sortowanie wielokątów jest jedynym sposobem na wyjście z tego. Cóż, po raz pierwszy w tej serii, RDP oferuje podejście oparte na sprzęcie o nazwie buforowanie Z (ang. Z-buffering). W skrócie RDP przydziela dodatkowy bufor o nazwie Bufor Z w pamięci. Ma on takie same wymiary jak bufor klatki, ale zamiast przechowywać wartości RGB, każdy wpis zawiera głębokość (wartość Z) najbliższego piksela względem kamery.

Gdy RDP dokonuje rasteryzacji wektorów, wartość z nowego piksela porównywana jest z odpowiednią wartością w buforze Z. Jeśli nowy piksel zawiera mniejszą wartość 'z' oznacza to, że nowy piksel jest umieszczony przed poprzednim, więc jest nakładany na bufor ramki i z-bufor jest również zaktualizowany. W przeciwnym razie piksel zostaje odrzucony.

Ogółem jest to bardzo pożądane uzupełnienie: Programiści nie muszą już martwić się implementacją opartych na oprogramowaniu metod sortowania wielokątów, które zużywają wiele zasobów procesora. Jednakże bufor Z nie zachowa Cię przed używaniem niepotrzebnej geometrii (odrzuconej lub przesadzonej, obie zużywając zasoby). W tym celu silniki gier mogą wybrać dodanie algorytmu wycinania okluzji w celu odrzucenia zasłoniętej geometrii tak szybko, jak to możliwe.

Sekrety i ograniczenia

SGI zainwestowało wiele technologii do tego systemu. Była to jednak konsola przeznaczona dla gospodarstw domowych i jako taka musiała utrzymać swoje koszty na niskim poziomie. Niektóre trudne decyzje doprowadziły do trudności dla programistów:

Zastoje Potoku

Ze względu na ogromną liczbę komponentów i operacji w potoku graficznym, RCP był w końcu bardzo podatny na przestoje: niepożądana sytuacja, w której komponenty pozostają na biegu jałowym przez znaczne okresy, ponieważ wymagane dane są opóźnione z tyłu potoku.

Będzie to zawsze skutkowało degradacją wydajności i będzie należało do zadań programisty unikanie ich. Jednakże żeby ułatwić pracę, niektóre procesory takie jak Scalar Unit implementują funkcję o nazwie Bypassing, która umożliwia wykonywanie podobnych instrukcji w szybszym tempie, pomijając niektóre etapy wykonania, które można pominąć.

Na przykład, jeśli musimy obliczyć sekwencyjne instrukcje ADD, nie ma potrzeby zapisywania wyników z powrotem do rejestru, a następnie odczytywania go z powrotem za każdym razem, gdy ADD zostanie zakończony. Zamiast tego możemy nadal używać tego samego rejestru dla wszystkich sum i wykonać zapis po zakończeniu ostatniego ADD.

Pamięć tekstur

RDP opiera się na 4 KB TMEM (Pamięć Tekstur) jako na pojedynczym źródle ładowania tekstur. Niestety w praktyce 4 KB okazało się niewystarczające dla tekstur o wysokiej rozdzielczości. Ponadto w przypadku stosowania mipmappingu dostępna ilość pamięci zostaje zmniejszona do połowy.

W rezultacie niektóre gry używały pojedynczych kolorów z cieniowaniem Gouraud (jak Super Mario 64) a inne opierały się na teksturach wstępnie przeliczonych (np. tam, gdzie trzeba było mieszać wiele warstw).

Uniwersalne wyjście wideo

Nintendo nadal używało 'uniwersalnego' portu Multi Out znalezionego na jego poprzedniku, zła wiadomość jest taka, że nie wysyła już on sygnału RGB! Wygląda na to, że jest to kolejny środek pozwalający zaoszczędzić koszty, ponieważ RGB i tak nie było używane w poprzedniej konsoli.

Dobrą wiadomością jest to, że trzy linie nadal mogą zostać zrekonstruowane w pierwszych wersjach poprzez dolutowanie niektórych kabli i zainstalowanie niedrogiego wzmacniacza sygnału. Wynika to z faktu, że cyfrowo-analogowy przetwornik wideo przesyła sygnał RGB do enkodera wideo. Jednak późniejsze wersje płyty głównej połączyły oba chipy, więc jedyną pozostałą opcją jest obejście przetwornika C/A i enkodera razem z niestandardowym obwodem, który eksponuje te sygnały.


Previous: 3. CPU

Next: 5. Dźwięk


Rodrigo Copetti © 2026 RSS Feed

Przełącz na wersję nowoczesną

Strona Główna · Artykuły · Wsparcie · O autorze · O stronie