Grafické subsystémy počítačů

18. 6. 2009
Doba čtení: 10 minut

Sdílet

V dnešním pokračování seriálu o architekturách počítačů si popíšeme základní principy generování obrazu na rastrových i vektorových displejích. Ukážeme si, jakým způsobem byly vytvářeny grafické subsystémy počítačů v minulosti a jaký vliv mají tyto architektury na moderní grafické akcelerátory.

Obsah

1. Pseudografika
2. Vektorová grafika a vektorové displeje
3. Přímé generování rastrového obrazu
4. Hra Pong
5. Grafické režimy využívající framebuffer
6. Systém SuperPaint
7. Herní konzole Atari 2600
8. Literatura a odkazy na Internetu

1. Pseudografika

Předchůdcem počítačů vybavených plnohodnotnými grafickými subsystémy byly počítače, které sice neumožňovaly práci ve skutečném grafickém režimu, ale byly vybaveny výstupem na televizi či počítačový monitor, což jsou již z principu své práce rastrová zařízení, na nichž se obraz vykresluje po jednotlivých řádcích. Omezení grafického výstupu tedy nebylo zapříčiněno vlastnostmi samotných výstupních zařízení, ale spíše tím, že k nim byly připojeny počítače s jednoduchou architekturou a/nebo s omezenou kapacitou operační paměti, ve které již nezbylo místo pro plnohodnotnou obrazovou paměť. Představitelem těchto počítačů z osmibitové éry je například známý Sinclair ZX80 popsaný podrobněji v navazující části tohoto seriálu. Jednoduché grafické obrazce však bylo možné i na takovýchto typech počítačů vytvářet, a to pomocí specializovaných znaků, které se typicky nacházely mimo standardní část ASCII kódu, tj. na pozicích 0–31 a 128–255 (u ZX80 a ZX81 byla situace mírně odlišná, neboť tento počítač nepoužíval ASCII znakovou sadu – viz první obrázek).

pc6601

Obrázek 1: Znaková sada používaná u počítače Sinclair ZX80. Z prvních osmi znaků a jejich inverzních variant lze vytvářet jednoduché černobílé obrazce s rozlišením 64×48 pixelů.

Znaková sada obsahovala mimo běžného repertoáru (malá a velká abeceda, číslice apod.) většinou i různé rámečky, čtverce a obdélníky, horizontální, vertikální a diagonální části úseček apod., což může být pro některé aplikace dostatečné – ostatně například Teletext používá velmi podobným způsobem vytvářenou pseudografiku dodnes. Pseudografika se ovšem používala i na těch počítačích, u nichž byl podporován plnohodnotný grafický výstup se skutečným framebufferem. Zde se využívalo možnosti uživatelské změny znakové sady (grafické podoby znaků bývaly umístěny přímo v operační paměti, do které měl přístup i mikroprocesor, popř. byly mapovány do adresového prostoru mikroprocesoru) a barevného výstupu jednotlivých znaků.

pc6602

Obrázek 2: Hra Caverns of Khafka, která využívá pro zobrazení herního pole pseudografický re­žim.

Předností tohoto způsobu tvorby grafiky byla rychlost zpracování, takže své uplatnění tento režim našel především v počítačových hrách. Uveďme si malý příklad – pokud byla hra vykreslována v pseudografickém režimu, jenž dovoloval zobrazit 40×24 znaků, každý o velikosti 8×8 pixelů, měla celá obrazová paměť velikost pouhých 960 bajtů. Rastrový obrázek se stejnou hrou by však musel mít rozlišení 320×192 pixelů, což již představuje řádově větší objem paměti, se kterou musí mikroprocesor manipulovat.

pc6603

Obrázek 3: Známá hra Boulder Dash byla na osmibitových počítačích Atari taktéž provozována v pseudografickém režimu, který mj. umožňoval plynulý posuv (scrolling) herního pole do všech stran.

2. Vektorová grafika a vektorové displeje

Zcela odlišný princip vykreslování grafiky je použitý u vektorových displejů. Zatímco u pseudografiky či dále popsané rastrové grafiky je obraz na monitoru vykreslován po jednotlivých řádcích (na horizontální a vertikální vychylovací cívky je přiváděn pravidelný pilový signál, obraz je získáván modulací intenzity elektronového paprsku či trojice paprsků), je princip vektorového displeje založen na přímém ovlivňování směru elektronového paprsku změnami napětí na horizontálních a vertikálních vychylovacích cívkách (vektorové displeje jsou založeny vždy na technologii katodové trubice – CRT). Vektorové displeje byly v minulosti používány především na analogových počítačích, které však s dnešními počítači nemají prakticky nic společného (nejedná se o von Neumannovu architekturu). Ovšem některé vlastnosti vektorových displejů, především malé nároky na kapacitu operační paměti pro uložení grafické informace, lákaly i tvůrce herních automatů a herních konzolí. Například známá hra Asteroids či Lunar Lander byla vybavena vektorovým displejem, stejně jako slavná domácí herní konzole Vectrex (zajímavé je, že pro tuto konzoli dodnes vznikají zajímavé hry i další aplikace).

pc6604

Obrázek 4: Herní konzole Vectrex (jedná se o 3D model, nikoli fotografii).

Vzhledem k tomu, že u vektorových displejů je velmi těžké pracovat s barevným obrazem a celková složitost obrázků (přesněji řečeno počet a délka vykreslených vektorů) je omezena rychlostí vykreslování i dosvitem luminoforu obrazovky, nedočkaly se vektorové displeje většího a trvalejšího rozšíření a spolu se zvyšující se kapacitou operačních pamětí se postupně přešlo téměř výhradně na rastrovou grafiku, což mj. umožnilo tvůrcům domácích počítačů implementovat výstup grafické informace na běžném televizoru pomocí VF modulátoru.

pc6605

Obrázek 5: Plošný spoj herní konzole Vectrex. Můžeme zde vidět jak zvukový čip AY-3–8912 (varianta již dříve popsaného čipu AY-3–8910), tak i slavný mikroprocesor Motorola 6809, který je mnohými znalci považovaný za nejlepší osmibitový mikroprocesor (disponuje téměř ortogonální instrukční sadou, dvěma zásobníky, instrukcí pro násobení a při jeho obvodovém návrhu byla použita ruční optimalizace až na úroveň jednotlivých hradel).

3. Přímé generování rastrového obrazu

Zajímavý mezistupeň mezi pseudografikou a plnohodnotnou rastrovou grafikou představují systémy, které používají přímé generování rastrového obrazu bez použití framebufferu (obrazové paměti). Elektronový paprsek je v tomto případě při vykreslování obrazu ovlivňován programově. Teoreticky je sice možné přímé řízení intenzity paprsku (či trojice paprsků u barevné obrazovky), to by však bylo možné pouze v případě velmi přesného časování – i malé časové odchylky při změně barvy paprsku by totiž znamenaly, že se jednotlivé obrazové řádky navzájem posunou. Z tohoto důvodu byla většina systémů s přímým generováním rastrového obrazu vybavena malým bufferem (vyrovnávací pamětí či posuvným registrem) o takové kapacitě, aby se do ní daly uložit barvy pixelů pro jeden jediný obrazový řádek. Postupné načítání hodnot z tohoto bufferu bylo řešeno hardwarově (každé paměťové místo bylo například vybaveno dalším hradlem, přičemž vždy jen jedno hradlo bylo otevřené), ovšem zápis musel být prováděn programově, a to tak rychle, aby elektronový paprsek „nepředběhl“ program a nezačal znovu vykreslovat pixely určené pro předchozí obrazový řádek.

pc6606

Obrázek 6: Hra Outlaw pro herní konzoli Atari 2600, která nebyla vybavena plnohodnotným framebufferem. Tato hra je určená pro dva hráče, což bylo na těchto herních konzolích obvyklé – kapacita operační paměti byla minimální a i výkon mikroprocesoru nedostačoval pro implementaci dostatečně kvalitního počítačem řízeného protihráče.

Tento způsob vytváření rastrové grafiky sice na první pohled vypadá složitě (minimálně kvůli nárokům na přesnost časování při zápisu do jednořádkového bufferu), na druhou stranu však přináší velkou flexibilitu. Zatímco jakákoli změna ve framebufferu (obrazové paměti) většinou znamenala nutnost přesunu relativně velkých bloků paměti, byla tvorba podobného efektu na systému bez framebufferu velmi jednoduchá a neznamenala větší zátěž pro mikroprocesor, než při generování statického obrázku. Proto jsou například hry určené pro herní konzoli Atari 2600 (která tímto systémem tvorby grafiky disponovala) mnohdy plné pohybujících se objektů, protože mikroprocesor byl zatížen prakticky stejně jak při neustálém vytváření jedné neměnné scény, tak i při tvorbě scény, ve které se objekty pohybují. Možná by bylo zajímavé podobný grafický subsystém vytvořit s využitím soudobých komponent, protože dnešní mikroprocesory mají více než dostatečný výpočetní výkon pro programovou tvorbu grafiky a dobře navržený systém přerušení by mohl zajistit potřebnou kooperaci mezi podprogramem určeným pro vykreslování a zbylými aplikacemi.

pc6607

Obrázek 7: Hra Frogger ve verzi pro herní konzoli Atari 2600 vypadá – s ohledem na schopnosti této konzole – velmi pěkně.

4. Hra Pong

Historie moderní rastrové počítačové grafiky sahá až do roku 1966, kdy známý investor Nolan Bushnel najal mladého inženýra Ala Alcorna, aby pro něj vytvořil závodní hru (jednalo by se o první hru tohoto typu na světě). Po několika týdnech vývoje se ukázalo, že se při tehdejší úrovni integrace elektronických obvodů jedná o příliš ambiciózní projekt, protože výsledný produkt by byl velký a především drahý. Al Alcorn tedy místo implementačně komplikované závodní hry vytvořil vlastní kopii hry Pong, která se stala velmi úspěšným titulem a velkou měrou přispěla k dalšímu vývoji herních automatů a posléze i domácích herních konzolí (nejdůležitější byl fakt, že se i další firmy začaly o toto odvětví zajímat, což pozitivně přispělo k vývoji dalších technologií, na jejichž konci stojí moderní osobní počítače). Automat s touto hrou sice pro vykreslování herní scény používal rastrový displej (běžnou černobílou televizní obrazovku), ovšem dnes zcela běžný framebuffer, tj. obrazová paměť, ve které je uložena předloha vykreslovaného rastrového obrázku, zde nebyl implementován – namísto toho se obraz generoval v sadě integrovaných obvodů řízených přesným hodinovým signálem, tj. ve své podstatě systémem popsaným v předchozí kapitole.

pc6608

Obrázek 8: Hra Pong ve variantě z  roku 1972.

5. Grafické systémy využívající framebuffer

Další vývoj grafických subsystémů směřoval nezadržitelně k využití skutečného framebufferu, tj. obrazové paměti (video paměti), ve které je uložena kopie rastrového obrázku zobrazovaného na monitoru. Do framebufferu, založeného většinou na běžné dynamické paměti, má buď přímo či nepřímo přístup i mikroprocesor, který může na základě programu měnit jeho obsah. Navíc jsou z framebufferu pravidelně čteny informace elektronickým obvodem (většinou jedním čipem), který se – z velké části nezávisle na mikroprocesoru – stará o zobrazování grafiky. Tento čip musel umět odpojit mikroprocesor od vstupů framebufferu (aby nedošlo při kolizi během čtení a současného zápisu do obrazové paměti), generovat potřebné adresy a posléze přečtené informace posílat do řadiče displeje. Takto pojatým framebufferem byla vybavena podstatná část domácích osmibitových mikropočítačů i počítačů osobních. Technické detaily o těchto počítačích (resp. o vybraných modelech) si uvedeme v navazující části tohoto seriálu.

pc6609

Obrázek 9: Počítač Apple II, který svým majitelům nabídl možnosti barevného obrazu.

pc6610

Obrázek 10: Grafické schopnosti počítače Apple II nejsou sice z dnešního pohledu nijak oslňující, ale ve své době představovaly malou revoluci.

6. Systém SuperPaint

V letech 1972 až 1973 byl navržen a vytvořen další počítačový systém (jak hardware, tak i příslušné programové vybavení), který poměrně zásadním způsobem ovlivnil další vývoj moderních grafických karet, především díky použití framebufferu. Tentokrát se však nejednalo o systém, u něhož by byla rozhodující celková cena (to byl případ výše popsané hry Pong), ale zejména jeho možnosti. Jednalo se o počítačový systém nazvaný SuperPaint, který byl vytvořený ve známém PARCu (Xeroc Palo Alto Research Center). Tento systém byl kromě výkonných čipů vybavený i poměrně vyspělým kreslicím programem, který používal pro vykreslování i úschovu grafické informace přímo framebuffer (zde se jednalo o paměť sdílenou mezi procesorem i čipy, které se staraly o vykreslování). Kromě vytváření statických rastrových obrázků bylo možné získávat snímky z video vstupu a různým způsobem je upravovat a kombinovat s nakreslenou bitmapou. Celý systém byl na svou dobu velmi dobře vybavený, například ve framebufferu mohl být uložený rastrový obrázek se šestnácti miliony barev (na osobních počítačích jsme na grafický režim s podobnými vlastnostmi čekali další téměř dvě desetiletí). Pro kreslení se používal tablet a dokonce byla k dispozici funkce pro zvětšení části obrázku (což je, i když se to dnes nezdá, poměrně náročná operace). Programové vybavení tohoto počítačového systému je předchůdcem všech moderních rastrových editorů i animačních programů. Někteří jeho tvůrci, například Alvy Ray Smith, později spoluzakládali známé studio Industrial Light and Magic (ILM) a o několik let později i Pixar.

pc6611

Obrázek 11: Systém SuperPaint z let 1972 a 1973.

7. Herní konzole Atari 2600

Dalším poměrně významným mezníkem v oblasti grafiky byl vznik domácí herní konzole Atari 2600. Princip tvorby grafiky na tomto systému jsme si popsali již ve třetí kapitole – není zde použit plnohodnotný framebuffer, ale „pouze“ pole klopných obvodů, do kterých lze uložit informace o barvách pixelů na jednom obrazovém řádku. Po obvodové stránce je Atari 2600 navrženo přísně minimalisticky, aby ji bylo možné nabízet za co nejnižší cenu. Na plošném spoji můžeme kromě několika aktivních a pasivních součástek s nízkou integrací najít tři důležité čipy – mikroprocesor MOS 6507 (což je varianta již dříve popsaného mikroprocesoru MOS 6502 se zmenšenou šířkou adresové sběrnice), kombinovaný obvod MOS 6532 (obsahující paměť RAM, časovač a vstupně/výstupní porty) a především zákaznický obvod TIA, který se staral o vytváření grafiky i zvuků. Kapacita paměti RAM byla rovna pouhým 128 bajtům, do kterých se započítává i kapacita zásobníku, paměť ROM byla umístěna v zasunovacích cartridgích s hrami a aplikacemi (kapacita této paměti se pohybovala v rozsahu 4 kB až 32 kB, ovšem vyšší kapacitu bylo nutné rozdělit do několika banků, protože adresová sběrnice mikroprocesoru byla snížena na pouhých 13 bitů). I s těmito velmi skromnými prostředky vzniklo pro tuto herní konzoli několik tisíc her, z nichž mnohé se proslavily svou kvalitou (PacMan, Frogger), jiné se zase řadí mezi nejhorší hry, které kdy byly vyrobeny (E.T., Caster's Revenge).

pc6612

Obrázek 12: Herní konzole Atari 2600.

pc6613

Obrázek 13: Schéma zapojení herní konzole Atari 2600.

bitcoin_skoleni

8. Literatura a odkazy na Internetu

  1. IBM Corporation:
    8514a Graphics Adapter – A Specification,
    IBM Corporation, 1992
  2. Henry Fuchs
    http://en.wiki­pedia.org/wiki/Hen­ry_Fuchs
  3. PixelFlow: The Realization
    http://www.cs­.unc.edu/~jp/PxFl-hwws97.pdf
  4. Atari TIA
    http://www.ata­rihq.com/danb/ti­a.shtml
  5. TIA Playfield
    http://www.ata­rihq.com/danb/TI­A/Playfield.shtml
  6. Atari Inc.:
    ANTIC C012296 (NTSC) Revision D
    Atari Incorporated, Sunnyvale CA, 1982
  7. Atari Inc.:
    GTIA C014805 (NTSC) Revision A
    Atari Incorporated, Sunnyvale CA, 1982
  8. A Short History of Computer Graphics
    http://cs.fit­.edu/~wds/clas­ses/graphics/His­tory/history/his­tory.html
  9. SuperPaint
    http://en.wiki­pedia.org/wiki/Su­perPaint
  10. Alvy Ray Smith
    http://en.wiki­pedia.org/wiki/Al­vy_Ray_Smith
pc6614

Obrázek 14: Hra Battlezone pro herní konzoli Atari 2600 patřila mezi první hry, které se snažily navodit iluzi trojrozměrného prostoru. Zajímavé je, že původní „automatová“ verze této hry používala vektorový displej a traduje se, že existovala i speciální verze pro armádu USA (jednalo by se tak o jeden z prvních digitálních trenažérů).

pc6615

Obrázek 15: Nechvalně proslulá „nehratelná“ hra E.T. určená pro herní konzoli Atari 2600.

Autor článku

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