8. Karty graficzne

8.1. Podstawowe definicje i parametry kart graficznych

Jednym z istotnych parametrów karty graficznej jest maksymalna rozdzielczość wyświetlanego obrazu. Pierwsze karty graficzne pracowały z rozdzielczością 640x480 pikseli. Obecnie rozdzielczości wyświetlanego obrazu daleko przekraczają 1600x1200 pikseli. Pola obrazowe dla poszczególnych rozdzielczości są przedstawione na rysunku 39.

 
Rys. 39. Pole obrazowe dla różnych rozdzielczości kart graficznych

Kolory w poszczególnych rozwiązaniach kart graficznych były różnie reprezentowane. Zwykle na reprezentację koloru przypadała określona, ograniczona liczba bitów (Tabela 11).

Tabela 11. Reprezentacja kolorów

Liczba bitów Opis Liczba kolorów Bajtów na piksel
4-bit Standard VGA 16 0.5
8-bit 256-colour mode 256 1.0
16-bit High colour 65,536 2.0
24-bit True colour 16,777,216 3.0

W przypadku reprezentacji kolorów przez 4, czy 8 bitów była wykorzystywana tak zwana paleta kolorów. Przedzielanie tak małej liczby bitów do bezpośredniej reprezentacji koloru mija się z celem. Obraz byłby nieakceptowalnej jakości. Zamiast tego zastosowano inne podejście. Wybierano 16, bądź 256 kolorów tworząc właśnie paletę. Paleta mogła być zbudowana z dowolnych kolorów z wszystkich 16 milionów. Tak więc można było użyć każdego z kolorów, ale jeden wyświetlany obraz mógł zawierać jedynie 16, czy 256 wybranych (tworzących paletę). Tryb high colour używa dwóch bajtów do reprezentacji koloru piksela. Pięć z nich przypada na kolor niebieski, pięć na czerwony i sześć na zielony. Oznacza to możliwość użycia 32 różnych odcieni niebieskiego, 32 czerwonego i 64 zielonego. Redukuje to dokładność wyświetlania barw, ale ta redukcja nie jest duża. Wielu ludzi nie jest w stanie odróżnić tego trybu od trybu true colour. W trybie true colour do reprezentacji koloru piksela jest przeznaczone trzy bajty. Zatem można wyświetlić 256 poziomów każdego z kolorów. Daje to możliwość wyświetlenia 16.7 miliona kolorów. W zasadzie oko ludzkie nie jest w stanie odróżnić więcej niż 16 milionów kolorów, więc ten tryb nie wprowadza już ograniczeń.
W kartach graficznych wykorzystywane są nieco inne, dedykowane im moduły pamięci. Moduły te są zwykle szybsze niż te używane w pamięciach RAM. Niektóre rodzaje pamięci graficznych, używane dawniej, są przedstawione w tabeli 12. Standardy VRAM i WRAM umożliwiały jednoczesny odczyt i zapis danych. 

Tabela 12. Typy pamięci używane w kartach graficznych

  EDO VRAM WRAM SDRAM SGRAM RDRAM
Maks. przepustowość (MBps) 400 400 960 800 800 600
Dwu lub jedno
portowa
jedno-portowa dwu-portowa dwu-portowa jedno-portowa jedno-portowa jedno-portowa
Typowa szerokość szyny danych 64     64     64     64     64     8
Szybkość (typowa) 50-60ns 50-60ns 50-60ns 10-15ns 8-10ns 330MHz szybkość zegara

 

We współczesnych kartach stosowane są moduły pamięci oznaczane jako GDDR i optymalizowane do współpracy z kartami graficznymi. Najnowsze pamięci GDDR6 operują w trybie QDR (cztery transfery na cykl zegara), przez co przy takim samym taktowaniu, w odniesieniu do GDDR5, są w stanie zapewnić dwukrotnie wyższą przepustowość (Tabela 13).

Tabela 13. Porównanie pamięci GDDR5 i GDDR6
 

Karta graficzna może pracować w trybie 2D (dwuwymiarowym) lub 3D (trójwymiarowym). Jeśli chodzi o tryb 2D to obecnie wszystkie karty graficzne na rynku używają podobnych, bardzo dobrze zoptymalizowanych rozwiązań. Tu nie zostało wiele do poprawiania, tryb ten ma pełną akcelerację sprzętową i nie wymaga już udoskonaleń. Możliwe rozdzielczości w trybie 2D dla różnych ilości pamięci są przedstawione w tabeli 14.
Sygnał do monitora może być doprowadzony w postaci analogowej lub cyfrowej (Rys. 40). W tym pierwszym przypadku sygnał jest zamieniany z postaci cyfrowej do analogowej przez układ RAMDAC (przetwornik cyfrowo-analogowy) umieszczony na karcie graficznej. Od szybkości działania tego przetwornika zależą maksymalne możliwe do uzyskania częstotliwości odświeżania monitora. Jeśli układ ten jest kiepskiej jakości, wpływa też na jakość wyświetlanego obrazu. Wad tych nie ma złącze cyfrowe. W tym przypadku do monitora jest przekazywany bezpośrednio sygnał cyfrowy.  

Tabela 14. Możliwe tryby wideo 2D dla różnych ilości pamięci

Pamięć Rozdzielczość Głębia kolorów Liczba kolorów
1MB

1024x768

800x600

8-bit

16-bit

256

65,536

2MB

1024x768

1280x1024

800x600

8-bit
16-bit
24-bit

256
65,536

16.7 milionów

4MB     1024x768 24-bit 16.7 milionów
6MB 1280x1024 24-bit  16.7 milionów
8MB 1600x1200 32-bit 16.7 milionów

 Rys. 40. Sposób doprowadzenia sygnału z karty graficznej do monitora

Wciąż dużym wyzwaniem dla kart graficznych jest implementacja trybu 3D. Do osiągnięcia pełnego realizmu sporo jeszcze brakuje. Na początku większość obliczeń związanych z grafiką 3D wykonywał procesor główny (Rys. 41). Później coraz więcej obliczeń przejmował procesor karty graficznej. Jest to bardzo rozbudowana jednostka, której moc obliczeniowa może obecnie nawet przewyższać moc obliczeniową CPU (dlatego starano się wykorzystać karty graficzne również w obliczeniach ogólnych). 

 Rys. 41. Rozdzielenie zadań związanych z wyświetlaniem obrazu 3D pomiędzy kartę graficzną i CPU

Niektóre z możliwości obliczeniowych współczesnych kart graficznych związanych ze scenami trójwymiarowymi są przedstawione poniżej:
•    Gourand Shading – ten algorytm nakłada na obiekty 3D realistycznie wyglądające oświetlenie. 
•    Clipping – operacja ta wskazuje, które obiekty na scenie są widoczne, pozostałe obiekty są pomijane w obliczeniach.
•    Lighting – obiekty na scenie zawsze są oświetlone źródłami światła, które są rozmieszczone gdzieś w przestrzeni. Cienie, kolory, odbicia światła i inne efekty są dodawane do obiektów uwzględniając ich pozycję i pozycją oświetlających ich źródeł światła.
•    Transparency – niektóre obiekty są przezroczyste lub półprzezroczyste. Obliczenia wskazują, które obiekty mają być widoczne, np. przez półprzezroczystą szybę drzwi.
•    Teksture Mapping – w celu, aby obiekty wyglądały realistycznie należy na ich powierzchnię nałożyć rysunki (tekstury). Na przykład ściana w większości przypadków nie jest obiektem litym i gładkim. Może ona być zbudowana z cegieł, czy drewna. Teksture mapping pozwala obiektom wyglądać bardziej realistycznie, a nie być tylko płaskimi, gładkimi. W rzeczywistości istnieje kilka technik nakładania tekstur.
•    Dihtering – jest to proces mieszania małej liczby kolorów w taki sposób, aby wykreować iluzję postrzegania większej liczby kolorów. 
•    Fogging – efekt ten pozwala na rozmycie obiektów, które są daleko na scenie. Pozwala to uzyskać większy realizm sceny, jednocześnie dalekie obiekty są rozmyte, co pozwala na szybsze obliczenia (wymagają mniejszej dokładności).
•    Filtering – jest wiele odmian filtrów, które mogą służyć do polepszenia obrazu, czy wygładzenia tekstur.  
•    Bufering – bufory pamięci są używane do wielu zadań podczas skomplikowanych obliczeń. 
Karty graficzne (a szczególnie tryb 3D) stanowią obecnie jeden z najszybciej rozwijających się segmentów rynku PC. Oprogramowanie powstaje przez lata. Jego producenci nie mogliby nadążyć za szybko zmieniającym się hardware’m. Dlatego powstały nakładki programowe – API (ang. application programing interface). Oprogramowanie używa API do tworzenia grafiki, a domeną sterownika karty jest transkrypcja komend API na język sprzętowy karty. Istnieje wiele takich API. Najbardziej znane to DirectX, OpenGL, Direct3D, Farenhait.
Karty graficzne mają ogromny potencjał obliczeniowy. Od dawna próbowano wykorzystać ten potencjał również w obliczeniach ogólnego przeznaczenia. Powstały różne standardy, które to umożliwiały. Najbardziej znanymi są OpenCL i NvidiaCUDA. Powstanie tych standardów umożliwiła unifikacja jednostek obliczeniowych karty graficznej.