Hlavní navigace

Grafické karty a grafické akcelerátory (28)

14. 9. 2005
Doba čtení: 11 minut

Sdílet

V dnešním pokračování seriálu o grafických kartách a grafických akcelerátorech se podíváme do daleké minulosti, kdy se pro zobrazení počítačové grafiky používaly (samozřejmě kromě tiskáren a plotterů) kromě dalších zařízení i vektorové displeje. A jelikož je počítačová grafika prakticky od svého počátku spjata s hrami, ukážeme si použití vektorové grafiky na známých hracích automatech.

Obsah

1. Vektorová grafika a vektorové displeje
2. Známé hry využívající vektorové displeje
3. Lunar Lander
4. Asteroids
5. Battlezone
6. Lunar Battle
7. Tempest
8. Odkazy na další informační zdroje Internetu
9. Obsah dalšího pokračování tohoto seriálu

1. Vektorová grafika a vektorové displeje

Vektorové displeje tvoří pravděpodobně již nadobro uzavřenou kapitolu v oblasti generování a zobrazování počítačové grafiky, což je trošku škoda, protože měly své na rastrové obrazovce nenapodobitelné kouzlo. Prakticky všechny moderní zobrazovací metody (včetně metod tiskových) jsou již založeny na rastrech (bitmapách, pixmapách) – pravděpodobně jedinou oblastí, kde se ještě pracuje přímo s vektory, jsou řezací plottery. To v žádném případě neznamená, že by zobrazování pomocí vektorů bylo ve všech případech nevýhodné, vývoj výpočetní techniky se však ubíral spíše směrem zobrazování textů (kde je vektorové zobrazení nevýhodné) a potom směrem k práci s barevnou grafikou, při kterém se vektory stávají pro popis i zobrazení neefektivními. Předchůdcem vektorových displejů byly analogové osciloskopy, které se dodnes s úspěchem používají v elektrotechnice pro měření elektrických veličin.

Volba vektorových displejů v minulosti byla logická, protože se navázalo na principy zobrazování používané u analogových počítačů, což byla zařízení složená ze (zjednodušeně řečeno) integračních, derivačních a lineárních členů. Na vstupu analogového počítače byly přivedeny různě tvarované elektrické signály (periodické i neperiodické) a na jejich výstup byl většinou zapojen osciloskop, u nějž byla buď jedna, nebo obě dvojice vychylovacích destiček řízena „programem“ v analogovém počítači. Samotný „program“ byl tvořen chuchvalcem drátů, kterými se propojovaly jednotlivé moduly počítače. S přechodem na digitální počítače byla patrná snaha o zachování alespoň stejné formy výstupu, jaký měly počítače analogové.

Mezi přednosti vektorových displejů patří už z principu jejich činnosti jednoduché zobrazení průběhů funkcí, plošných grafů a liniových schémat. Pomocí vhodně navrženého řadiče displeje (který v tomto případě musí obsahovat podporu pro takzvané display listy) lze vykreslovat i jednotlivé znaky, takže jejich popis nemusí být uložen v operační paměti počítače. Další předností jsou obecně malé nároky na kapacitu paměti a přitom velká rozlišovací schopnost, protože každý vektor může být reprezentován pomocí dvojice souřadnic, které v paměti zabírají při vhodně zvoleném kódování pouze několik bytů. Velkou přednost měly vektorové displeje (oproti rastrově orientovaným) také ve vysoké rozlišovací schopnosti, která při přesnosti až čtyř úseček na milimetr dosahovala na některých zařízeních hodnoty 4096×4096 adresovatelných bodů. Přesnost zaměření elektronového paprsku byla omezena jak přesností lineárních interpolátorů, tak i použitých D/A převodníků.

Musíme si přitom uvědomit, že stínítko monochromatické CRT obrazovky je již svou podstatou analogové (resp. není diskrétní), protože před vlastním luminoforem se nenachází, na rozdíl od obrazovky barevné, žádná dírkovaná maska (delta a inline CRT) či drátky (Trinitron CRT). Maximální rozlišení je tedy u monochromatických obrazovek dáno velikostí zrnek luminoforu a mírou rozostření elektronového paprsku, podobně jako u „analogového“ filmu. U vektorových obrazovek se samozřejmě projevují všechny neduhy technologie CRT (Cathode Ray Tube) – nelineární zkreslení, rozostření na okrajích obrazovky, citlivost k externím magnetickým polím atd.

Mezi nevýhody patří zejména omezení celkové délky všech zobrazených vektorů, které je dáno rychlostí zhášení bodů na obrazovce. Čím vyšší je rychlost zhášení vysvícených bodů, tím kratší cestu může elektronový paprsek na stínítku vykreslit. Doba zhášení se musela volit velmi pečlivě, zvláště při podpoře dynamicky se měnících obrazů – příliš velká rychlost zhášení se projevila v nemožnosti zobrazovat komplikovanější obrazy, malá rychlost naopak způsobovala problémy při animacích (duchové, rozmazávání pohybujícího se objektu). Zhášení probíhá exponenciálně, proto se za zhasnutý bod považuje bod, jehož jas přesáhl předem stanovenou hranici, například 75%. Vektorové displeje se z výše uvedených důvodů v současné době kromě specializovaných aplikací téměř nepoužívají, kromě toho mají i několik dalších závažných nevýhod vycházejících ze způsobu vykreslování, zejména praktickou nemožnost zobrazit složitější nebo vícebarevnou grafiku s barevnými přechody. Také hlavní nevýhody rastrových displejů (tj. potřeba relativně velkého množství rychlé video paměti a přesného zaměřování paprsku na CRT obrazovce) jsou již překonány, nehledě na fakt, že moderní LCD jsou orientovány čistě rastrově a vektorovou informaci na nich nelze přímo zobrazit, zejména vinou pomalého přepínání řádků v aktivní matici tranzistorů.

Jak jsem se již několikrát zmínil v předchozích pokračováních tohoto seriálu, je možné některé řadiče vektorových displejů považovat za vůbec první grafické akcelerátory. „Grafické akcelerace“ zde bylo dosaženo použitím specializovaných elektronických obvodů, které se podílely na generování a obnovování vektorových obrazců na displeji. Vlastní řízení elektronového paprsku tedy neprováděla přímo uživatelská aplikace ani ovládací program (driver). K nutnosti vytvoření specializovaných elektronických obvodů pro vykreslování vedl především poměrně malý výpočetní výkon tehdejších procesorů (většinou osmibitových a později i šestnáctibi­tových) a také fakt, že při programovém vykreslování vektorů nesměl být procesor ve své práci přerušen – každé přerušení (například od časovače či klávesnice) by se ihned projevilo buď na tvaru vektoru, nebo na světlosti vykreslované čáry. Také se ukázalo, že obvody pro generování vektorové grafiky jsou poměrně jednoduché – většinou se jednalo o paměťové řadiče spojené s lineárními interpolátory a dvojicí digitálně analogových převodníků (DAC – Digital to Analog Converter).

Zkusme si tedy popsat, jak byl vektorově orientovaný grafický subsystém koncipován. Nejprve se pomocí paměťového bufferu (někdy nazývaného zobrazovací soubor či display list – tento název dostal s pokračujícím rozmachem počítačové grafiky několikrát jiný význam) do tohoto subsystému uložily počáteční a koncové souřadnice vektorů a následně řízení elektronového paprsku CRT obrazovky převzal k tomu určený řadič nazývaný generátor úseček – line/vector generator (u složitějších systémů byla grafická data ukládána do dvou seznamů – jeden seznam obsahoval odkazy na objekty, jejichž souřadnice byly uloženy v druhém seznamu; takto bylo jednoduše možné vykreslovat písmo). Generátor úseček obsahoval dva analogové či digitální integrátory souřadnic; jeden byl použit pro vertikální a druhý pro horizontální směr. V případě, že byl použit digitální integrátor souřadnic, se jednalo o poměrně jednoduchý lineární interpolátor s připojeným D/A převodníkem, analogový integrátor byl založený na integračním článku. Vzhledem ke konstantní době dosvitu použitého luminoforu v CRT obrazovce bylo možné zobrazit pouze omezený počet vektorů.

Celkový počet vektorů samozřejmě závisel na jejich celkové délce a na také vzájemné návaznosti. Optimální proto bylo vykreslování vzájemně pospojovaných vrcholů, tj. polyčar – v minulosti bylo z tohoto důvodu navrženo několik programových metod, které prováděly uspořádání vykreslovaných dat podle jejich vzájemné polohy, to však již vyžadovalo spolupráci s mikroprocesorem počítače. Rychlost překreslování se podle typu luminoforu pohybovala od třiceti do šedesáti snímků za sekundu, mnohdy se rychlost zobrazení snímků měnila v závislosti na celkové délce vektorů ve scéně.

U některých vektorově orientovaných grafických subsystémů bylo možné vykreslovat i jednotlivé body – stačilo zadat vektor, u nějž se souřadnice počátečního bodu rovnaly souřadnicím bodu posledního. Vzhledem k delší době, kterou elektronový paprsek strávil při vykreslování bodů (mezitím se totiž musely z display listu načíst souřadnice dalších bodů či úseček a inicializovat integrátory souřadnic) byl bod na obrazovce rozmazán/rozostřen do charakteristického tvaru (splat – stopa). Toho bylo využito při vytváření grafických efektů u některých dále popsaných her. Rozmazání a další grafické efekty dosažitelné s vektorovou grafikou není možné přesně ukázat na rastrových displejích – i to je důvod, proč si někteří lidé i dnes staví či opravují starší vektorové displeje. Jedná se, podobně jako u elektronkových zesilovačů a dalších překonaných technologií, o jiným způsobem nenapodobitelný „feel“.

2. Známé hry využívající vektorové displeje

Vektorové displeje se po určitou dobu používaly i v hracích automatech. Přímo pro tento typ zobrazení přitom vzniklo několik her, které se nesmazatelně zapsaly do historie počítačů. Tyto hry budou popsány v dalších kapitolách, spolu s „falešnými“ screenshoty, tj. screenshoty provedenými z rastrové obrazovky :-), na níž byl zobrazen výstup z emulátoru hracího automatu.

Ve třetí kapitole bude popsána hra přistání na měsíci -Lunar Lander. Značně zjednodušená verze této hry u nás byla v minulosti „naprogramována“ pro papírový počítač z abíčka. V kapitole čtvrté je také popsána hra z vesmíru – tentokrát jde o akčnější hru Asteroids, která byla v několika verzích dostupná i pro více hráčů. V další kapitole je popsána jedna z prvních 3D her – Battlezone. Následuje hra Lunar Battle, která je popsána v šesté kapitole a konečně v kapitole sedmé je popsána další trojrozměrná (resp. spíše „trojrozměrná“) hra Tempest. Většina dále popsaných her je implementována pomocí procesoru 6502 nebo 65C02 firmy MOS Technologies. Tato řada procesorů byla použita i ve známých domácích osmibitových počítačích Atari a Commodore – bližší informace jsou uvedeny v odkazech na konci článku.

3. Lunar Lander

Úkolem hráče ve hře Lunar Lander je přistání se sondou na Měsíci. Sonda je ovládána pomocí trojice trysek. Dvě trysky jsou krajní s menším výkonem a slouží k natáčení sondy, třetí tryska má největší výkon a slouží k brždění nebo letu směrem vpřed. Na měsíčním povrchu se nachází několik plošin, na které lze přistát (přistání mimo plošiny není možné), každá plošina je podle své velikosti ohodnocena číslem, kterým se vynásobí skóre v případě hladkého přistání. Aby vše nebylo jednoduché a hráč byl nucen řízení sondy pečlivě naplánovat, má sonda také omezené množství paliva. Zajímavé přitom je, že palivo se „čerpalo“ před startem hry vhazováním mincí. Méně zkušený hráč samozřejmě spotřeboval více paliva než profík, takže si musel připlatit :-). Tato hra vyniká především perfektním zpracováním dynamiky pohybu sondy, přičemž všechny potřebné údaje (vektor rychlosti a výška) jsou neustále zobrazovány. Také je nápaditá změna měřítka pohledu při přiblížení se k měsíčnímu povrchu.

GFX 28-1

Obrázek 1: První screenshot ze hry Lunar Lander – začátek hry

GFX 28-2

Obrázek 2: Screenshot ze hry Lunar Lander – průběh hry

GFX 28-3

Obrázek 3: Screenshot ze hry Lunar Lander – průběh hry

GFX 28-4

Obrázek 4: Screenshot ze hry Lunar Lander – krátce před přistáním

GFX 28-5

Obrázek 5: Screenshot ze hry Lunar Lander – (kupodivu) hladké přistání

4. Asteroids

Hra Asteroids se v mnohém podobá předchozí hře (a to i použitým hardwarem). I zde se hráč pohybuje ve vesmíru, tentokrát však v raketě ve volném prostoru, kde nepůsobí gravitace. Raketa je ovládána stejným způsobem jako sonda v předchozí hře, tj. pomocí trojice trysek, přidána je i možnost střelby, kdy se střílí ve směru natočení. Princip hry je stejně jednoduchý jako v předchozím případě: kromě rakety se na obrazovce nacházejí i meteority, do kterých samozřejmě nesmí raketa narazit. Do meteoritů je však možné střílet, a drolit je tak na menší kousky. Po třetím zásahu ty nejmenší kousky zmizí. Úkolem hráče je zlikvidovat všechny meteority a postoupit do dalšího kola. Po určité době se na obrazovce objevuje i nepřátelské UFO, které po hráčově raketce střílí – i to je samozřejmě možné pomocí hyperúčinných vraždomatických superstřel (to jsou ty mrňavé tečičky na obrazovce) zlikvidovat. Tato velmi úspěšná hra byla od svého vzniku mnohokrát zkopírována a existuje snad na všechny dostupné platformy. Příkladem může být pokračování této hry, které se jmenovalo Asteroids Deluxe, nebo unixová hra XPilot.

GFX 28-6

Obrázek 6: Screenshot ze hry Asteroids – začátek hry

GFX 28-7

Obrázek 7: Screenshot ze hry Asteroids – průběh hry

GFX 28-8

Obrázek 8: Screenshot ze hry Asteroids Deluxe

GFX 28-9

Obrázek 9: Screenshot ze hry Asteroids Deluxe

GFX 28-10

Obrázek 10: Screenshot ze hry Asteroids Deluxe

5. Battlezone

Hra Battlezone je zajímavá především tím, že se pravděpodobně jedná o první hru, která zobrazovala hrací prostor ve 3D. Úkolem hráče v této hře je zlikvidovat tanky, které se volně pohybují po krajině. Bližší popis ovládání této hry je vcelku zbytečný, variací na dané téma existuje bezpočet, včetně Wolfensteina 3D, Dooma a Quaka. Za povšimnutí však stojí níže uvedený screenshot. Otexturované plochy samozřejmě nejsou na vektorovém displeji zobrazeny pomocí elektronového paprsku, jedná se pouze o nálepky na obrazovce. Zajímavější je, že samotné hrací pole je zobrazeno pomocí zeleného luminoforu a skóre v horní části obrazovky luminoforem červeným. Kombinace barev však není možná, obrazovka je opravdu rozdělena na dvě monochromatic­ké části.

GFX 28-11

Obrázek 11: Screenshot ze hry Battlezone

6. Lunar Battle

Tato hra je ve své podstatě okopírovanou hrou Asteroids, tentokrát však již v barevné grafice (celkově se pracovalo s osmi barvami) a s poněkud zajímavěji vypadajícími objekty.

GFX 28-12

Obrázek 12: Screenshot ze hry Battlezone

GFX 28-13

Obrázek 13: Screenshot ze hry Battlezone

7. Tempest

Opět se jedná o hru, která pro zobrazování používá barevný vektorový displej. Pozdější variace této hry pro rastrové displeje je známá pod jménem Gyrrus.

GFX 28-14

Obrázek 14: Screenshot ze hry Tempest

8. Odkazy na další informační zdroje Internetu

O vektorových displejích i hrách určených pro vektorové displeje existuje na Internetu poměrně velké množství informačních zdrojů, takže níže uvedené odkazy tvoří pouze zlomek všech dostupných stránek.

CS24 tip temata

9. Obsah dalšího pokračování tohoto seriálu

Vektorovým displejům se budeme věnovat i v dalším pokračování tohoto seriálu, ukážeme si jednoduché programové řízení těchto displejů, například pomocí klasické VGA karty.

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.