Pracovní stanice, IBM PC, Silicon Graphics a začátky 3D (díl 2.)
S blížícími se devadesátými léty dostaly grafické pracovní stanice konečně potřebný výkon, abychom se mohli bavit o univerzálně použitelných řešeních i na 3D. Procesory typu RISC začaly být skloňovány uživateli napříč UNIXovým světem, nicméně velkou revolucí procházely i 3D akcelerátory. Najednou nebyl v hi-endu problém plynule zpracovávat real-time 3D s vysokým rozlišením a v CADech zas kreslit vyhlazené (antialiasované) polygony i čáry. Co už je dnes téměř zapomenuto, SGI se toho času rozhodlo přenést 3D výkon jejich stanic také do „běžných“ PC.
PC v 80. letech rozhodně nebylo primární volbou pro uživatele hledající výkonné pracovní stanice. Nicméně bylo modulární, levné a s komponentami dostupnými od nepřeberného množství společností. Výhodou byla také cena programů – u drahých UNIXových stanic byly obvykle i mnohem dražší programy všeho druhu. Na PC existovala spousta levnějších variant, což bylo zvláště výhodné, když se vezme v potaz, že i grafická stanice mohla někomu sloužit pro psaní dokumentů, tabulkové kalkulátory a další kancelářské záležitosti – tedy činnosti, které sice nejsou možná pro daný počítač primární, ale nějaký program na ně stejně potřebujete. Jen se člověk na PC musel smířit s jednoúlohovým a jednouživatelským DOSem.
Už v roce 1985 existovalo asi třicet firem zabývajících se výrobou grafických karet pro počítače typu IBM PC. Prakticky všichni se snažili nabídnout alespoň to samé, co originální grafiky od IBM, nicméně za nižší cenu. Mnozí však nabízeli také něco navíc – v tu dobu šlo především o vyšší rozlišení, případně větší množství barev. Byli i tací, jejichž karty umožňovaly akcelerovat různé 3D transformace. Nebyl to jen v minulém díle zmíněný Matrox, ale také SPEA – firma, která se v 90. letech přeměnila v divizi profesionálních karet Diamond Multimedia FireGL, aby ji následně na přelomu tisíciletí odkoupilo ATI (po spojení ATI s AMD se název změnil na FirePro a s poslední generací grafik se přechází na název Radeon Pro).
Předpokládám, že tohle se stane časem zapomenutou historií, ale už v době, kdy IBM EGA s rozlišením 640×350 a 16 barvami byla stále docela novinka, bylo možné dostat do PC grafická řešení s podporou 256 barev v rozlišeních od 640×480 po 1280×1024 (Infoworld, 1985). Bylo pouze nutné před nákupem zkontrolovat, které programy umí využít rozšířených možností takové karty, protože nešlo o univerzální standard. Každý z výrobců obvykle podporoval ty nejpoužívanější CADy a business aplikace (jen AutoCAD měl podporu pro 14 různých karet), na zbytek si uživatel musel vystačit s CGA emulací (obvykle jen vylepšenou o prokreslenější písmena v textovém režimu s vyšším rozlišením).
S nastolením standardu to v PC světě nikdy nebylo jednoduché. Šlo o extrémně konkurenční prostředí spousty menších firem a zprvu k tomu měla sílu uvnitř PC světa pouze IBM. V Silicon Graphics si nicméně řekli, že by do PC mohli přinést úspěšný 3D standard ze světa UNIXových stanic.
UNIX a RISC
Přestože ve světě PC se začalo o RISC procesorech (Reduced Instruction Set Computer) mluvit až tak v první půlce devadesátých let (s ARMem ještě jednou, později) jako o jasném nástupci tehdejších x86 procesorů, v pracovních stanicích se už tento „náboženský směr“ prosazoval dávno před tím. Naprosto odlišný typ uživatelů a ekosystém obvykle řízený celý jednou firmou umožnily úspěšný přechod na tyto procesory. Ve výsledku tedy většina pracovních stanic přešla na nějaký procesor typu RISC ještě během konce 80. let.
V případě Sunu se první počítače s procesory SPARC (Sun-4) dostaly na trh v roce 1987 a nahradily předchozí generaci založenou na procesorech Motorola 68020 (Sun-3). Uživatelé přechodem mnohdy získali i více než dvojnásobek výpočetního výkonu. Sun sice ještě pár let vydával i nějaké počítače s Motorolou a skončil u 68030, ale už bylo jasné, kde je budoucnost, a tohle bylo jen pro těch pár chudáků, co z nějakého důvodu nemohli přejít na nové procesory rovnou.
SGI na to šlo podobně a přešlo ve stejné době na RISC procesory společnosti MIPS, kterou později raději i koupilo. Ve výsledku pak postupně všichni velcí výrobci stanic měli pod palcem i vývoj vlastních (C) kompilátorů a procesorů (IBM Power, HP PA-RISC, …). Další procesory řady Motorola 68k se udržely jen v domácích počítačích, jako byly ty od Applu, Atari a Commodore (Amiga).
3D bylo téma, na které slyšel ze zákazníků kde kdo (přestože jej nepotřeboval). V reklamách na RISC počítače se tak začalo často uvádět, kolik stanice zvládne vykreslit 3D vektorů, i v případě, že vlastně nemá žádný samostatný 3D akcelerátor.
Pracovních stanic bylo kolem roku 1988 už nepřeberné množství. Pokud vás zajímají základní parametry a ceny, v Infoworldu kdysi udělali tabulku s přehledem.
SGI Professional IRIS (1987) – pracovní stanice na 3D (zdroj: reputablejournal.com)
Seriózní 3D
Prvním počítačem od SGI (Silicon Graphics) založeným na RISC procesoru MIPS (R2000 8-16 MHz) byl Professional Iris. Kromě vysokého výpočetního výkonu byly počítače SGI zajímavé i tím, že všechny měly 3D akcelerátor (zde přes čtyři velké karty). První nabízená grafika uměla kreslit v rozlišení 1280×1024 ve 256 barvách nebo 16 miliónech barev (maximálně čtyři tisíce barev pro real-time3D). Ve 3D bylo možné vykreslovat 4,5 tisíce (100pixelových) trojúhelníků za sekundu s jemným (Gouraudovým) stínováním a Z-Bufferem. Zatím však ještě bez textur a poloprůhledností.
Po roce bylo grafické řešení nahrazeno novou verzí, někdy označovanou jako Turbo, se kterou v závislosti na konfiguraci grafických desek bylo možné dosáhnout výkonu 24 až 90 tisíc polygonů za sekundu. Pro srovnání – 166MHz Pentium dohromady s 3Dfx Voodoo Graphics dokázaly vykreslovat až 120 tisíc trojúhelníků za sekundu v roce 1996, ale geometrii musel počítat procesor, takže pak už nic dalšího nezvládl. V roce 1990 se platilo 50 tisíc dolarů za SGI Professional IRIS 4D/85GTB s nejvýkonnější verzí grafiky a šlo o střední třídu v nabídce SGI.
Historicky větší dopad měla ovšem „low-end“ stanice Personal Iris představená v roce 1988. Tento maličký počítač zvládal v základní verzi vykreslit 5100 polygonů za sekundu (91 tisíc 3D vektorů za sekundu), nicméně i zde se do roka se objevila vyšší verze grafiky (Turbo) schopná vykreslit rovnou 20 tisíc polygonů za sekundu (tj. bylo možné dosáhnout 20 snímků za sekundu při vykreslování scény s tisícem polygonů).
SGI Personal IRIS 4D – grafická stanice s 3D akcelerací a velikostí průměrného PC
V roce 1989 jste zaplatili $13.500 za Personal Iris 4D/20 v oholené verzi s 8 MB operační paměti, základní 3D grafikou jen na 256 barev (16 pro real-time 3D) a pouze 14palcovým monitorem. Jakmile jste ovšem přihodili Z-Buffer, možnost vykreslit 16 miliónů barev, rychlejší procesor (4D/25), 380MB disk a 19palcový monitor, rázem jste se dostali na $34.000. Rozšíření na Turbo grafiku (jedna přídavná karta) stálo dalších $7.000.
Tuto dobou sice SGI mělo pouze jednotky procent z celého trhu UNIXových stanic, pokud však jde o stanice na 3D, SGI prodávalo tolik počítačů, co všichni ostatní dohromady.
Grafický superpočítač SGI Power Series 4D/480 (1991; zdroj: dooki.com)
Hi-end u SGI vypadal úplně jinak a stál 100 až 250 tisíc dolarů. V roce 1990 šlo o PowerSeries s až osmi procesory MIPS R3000 a grafickým systémem PowerVision VGX, který nabízel konečně spoustu technologií později hojně využívaných ve hrách. Přidána byla podpora poloprůhledností (alpha-blending s 8bitovou přesností) a s tím spojené efekty jako například mlha. Akumulační buffer zas umožňoval kreslit měkké stíny a hloubku ostrosti (byť za cenu násobně větších nároků na výkon). Především však grafická jednotka uměla hardwarově akcelerovat vykreslování textur včetně bilineární filtrace a sférického mapování. Technicky zde již nechybělo nic z toho, co potřebovaly hry jako Quake II, vydané podstatně později.
Výkon až miliónu trojúhelníků odpovídá v PC spíše roku 1999. Polygony bylo navíc možné vykreslovat s anti-aliasingem, který vyhladil jejich hrany. Extrémní fillrate 100-200 Mpix/s (tj. schopnost vykreslit až 200 miliónů pixelů za sekundu) dával možnost překreslit obrazovku 75-150x za sekundu při rozlišení 1280×1024 a 16 miliónech barev.
Textura bez filtrace (vlevo) a s bilineární filtrací (vpravo) – zdroj: proun-game.com
Problém nastal, když jste chtěli kreslit polygony s texturou (a bilineární filtrací). To rázem ten úžasný fillrate padl na 17 Mpix/s (tj. maximálně ~35 fps v rozlišení 800×600). Tedy jen dvojnásobnou hodnotu proti té, kterou měly nejrychlejší S3 Virge GX uvedené na konci roku 1996 jako levné grafické karty do PC (Virge GX mohla zvládnout i těch 17 Mpix/s, ale jen s vypnutou bilineární filtrací). Slavný PC 3D akcelerátor 3Dfx Voodoo Graphics (taktéž z roku 1996) zvládal vykreslovat rovnou 40 Mpix/s.
Rychlost zpracování textur v SGI rychle opravili a přišla vylepšená grafika PowerVision VGXT, která zvedla texturovací fillrate na mnohem zajímavějších 50 Mpix/s. To už se psal rok 1991. Vzhledem k tomu, že na těchto počítačích nevznikaly žádné komerční hry, které by podobný výkon uměly využít, užili si jej jen ti, kteří měly počítač zakoupen jako součást nějakého vojenského simulátoru. Přesto je fascinující, že už v roce 1991 někde existovaly počítače s parametry plně postačujícími pro plynulé hraní her vydaných ještě v roce 1999. Byla to doba, kdy v porevolučním Československu stál klon IBM PC s procesorem 286 a barevným monitorem přes šedesát tisíc, takže průměrný domácí uživatel si spíš hrál na nějakém „osmibitu“.
SGI IrisVision pro IBM PC a PS/2
Grafická karta IrisVision vznikla koncem 80. let na popud IBM, která si licencovala technologie SGI. Ne však pro PC, ale pro RISCové pracovní stanice IBM RS/6000 s operačním systémem AIX (varianta UNIXu). Během vývoje však inženýři z SGI zjistili, že se jim karta lépe ladí na počítačích IBM PS/2, které mají také sběrnici MCA. Pak už to byl jen krůček od toho, aby nakonec v roce 1990 vznikla i verze přímo pro klony IBM PC se 16bit ISA/AT sběrnicí.
Koncem roku 1990 byly oficiální ceny nastaveny velmi příznivě. Verze pracující s 8bitovou barevnou hloubkou (256 barev) stály $3.495 (ISA) a $3.995 (MCA). V případě MCA verze s 24bitovou barevnou hloubkou (16,7 miliónů barev) bylo nutné přitlačit – stála $4.995. V porovnání s průměrnou grafikou obyčejného PC to sice bylo pořád hodně peněz, ale v porovnání s jinými profesionálními 3D produkty šlo o mimořádně levné řešení. Něco takového nikdo nečekal, zejména pak od SGI, které si nechávalo za své počítače královsky platit.
Už v době uvedení přislíbilo sedmnáct významných firem podporu IrisVision ve svých produktech. Hlavními partnery se staly firmy Autodesk a Compaq, které grafickou kartu nabízely skrze svoje prodejní kanály. Od Compaqu jste si ji mohli koupit již integrovanou v hi-end PC pracovní stanici. Jak si v reálu tato karta vedla proti produktům Matroxu, je těžké s odstupem času a mizivými zdroji říci, nicméně její přijetí bylo velmi vřelé a někteří nezávislí pozorovatelé tvrdili, že IrisVision na platformě PC v podstatě nemá konkurenci.
Na IrisVision nebyl zajímavý jen samotný hardware. Důležitou součástí byla kompletní portace hi-level grafické knihovny IRIS GL z IRIXu na DOS. IRIS GL je přímým předchůdcem knihovny OpenGL, která pod vedením SGI vnikla v polovině 90. let. V programu jste tedy nemuseli řešit přímo, jak naplnit který registr karty, aby se něco stalo. Použili jste k tomu funkce této univerzální knihovny, která vás od samotného hardware odstínila.
SGI si dovolilo rovnou odříznout veškerý 16bitový svět. Počítalo se s vývojem pod výkonným 32bit kompilátorem Metaware C. Hardware počítače musel obsahovat minimálně procesor 386 doplněný o matematický koprocesor. Počítalo se však spíše s konfiguracemi postavenými na mnohem silnějších procesorech 486. S knihovnami IRIS GL a kvalitním kompilátorem umožňujícím práci s velkým množstvím paměti bez opruzu v podobě segmentových registrů, bylo mimo jiné možné snadněji portovat grafické programy mezi IRIXem a DOSem.
Kartu bylo samozřejmě možné s přiloženou dokumentací využít i přímo, bez IRIS GL. Hardwarové 3D akcelerace se dočkaly některé z významných DOSovských produktů. V případě Autodesku šlo o 3D Studio i AutoCAD. SGI spolu s kartou dodávalo zdarma program, který uměl načítat modely z oblíbených CADů a plynule s nimi pohybovat.
Karta IrisVision v plné variantě tak, jak se jednou objevila na ebay (zdroj: irix.cc)
Přestože IrisVision byla mimo jiné i velmi výkonným 2D akcelerátorem, neměla ani špetku kompatibility s grafickými standardy od IBM. Z toho důvodu měla verze pro ISA/AT počítače obrazový vstup i výstup (podobně jako 3Dfx Voodoo). V DOSu jste pak tedy používali nějakou obyčejnou grafiku a IrisVision přebrala vykreslování jen v případě, že byl aktivní její ovladač. Tímto způsobem bylo možné bezproblémově pracovat s jediným monitorem. Kdo chtěl monitory dva, mohl kartu přepnout do samostatného módu. Pak bylo například možné pod Windows 3.x pracovat s dvěma monitory současně a na každém mít jiný obraz. Podpora takové funkce nicméně není překvapivá – i PC pracovní stanice měly s dvoumonitorovými pracovišti dlouholetou tradici.
Z hlediska 3D výkonu karta nabídla mírně nižší výkon než „Turbo“-grafika v Personal IRIS. Během jedné sekundy zvládl geometrický koprocesor spočítat až 14 tisíc trojúhelníků, 9 tisíc čtyřúhelníků, nebo 90 tisíc 3D vektorů (wireframe). Pořád ale cena dobrého PCčka s touto grafikou byla nižší než základní model počítače Personal Iris. 3D akcelerace nikdy nebyla tak dostupná…
Konstrukce IrisVision
To, co se už dávno s klidem vejde do jediného grafického čipu, dříve znamenalo hromadu čipů rozložených přes několik karet. Konstrukce této karty je tak zajímavá, že jsem se na ní rozhodl ukázat, jak vlastně její grafická akcelerace fungovala.
Hlavní kartou je v ISA/AT verzi AGE. Ta jako jediná používá sběrnici i pro komunikaci se zbytkem počítače a ne jen jako napájení. Kromě hromady obvodů zajišťujících napojení SGI čipů na architekturu PC („glue logic“) je karta osazena dvěma velkými a důležitými čipy. Weitek XL-3132 je univerzální 32-bit matematický koprocesor s teoretickým výkonem až 20 MFLOPS (Mega Floating Operations per Second). Slouží jako výpočetní jednotka pro geometrické operace – tedy všechny 2D/3D transformace a výpočty osvětlení.
Koprocesor samozřejmě spočítá všechno, co se mu předhodí, ale něco ho musí řídit a není to program z hlavního počítače. Jednotlivé podprogramy mu předává velký čip SGI HQ1 hned vedle něj přes samostatnou RAM s mikrokódem a RAM s daty. Program se průběžně mění podle toho, co je potřeba počítat, a Weitek zde funguje jen jako tupá počítací síla.
Právě u HQ1 začínají všechny příkazy z počítače. Pokud chcete vykreslit trojrozměrnou scénu, všechny trojúhelníky (zadané 3D souřadnicemi) a jejich parametry projdou přes sběrnici karty sem, aby HQ1 spočítal pozice trojúhelníků ve 2D projekci na obrazovce a dopočítal také jejich barvy na základě nastavení světel ve scéně. Geometrické propočty přehodí na Weitek a výsledky pak posílá po kabelu dál do rasterizační části na další kartě. Přes HQ1 prochází jakékoli kreslící příkazy (včetně 2D kreslení a práce s okny), protože rasterizační část není zbytku počítače přímo přístupná. Je to takový mozek celého řešení.
Druhá karta (ARV), má na sobě VGA konektory pro vstup z jiné grafické karty a výstup na monitor. Její sběrnice se používá pouze pro napájení a veškerá data putují po konektorech nahoře. V levém horním rohu se nachází SGI čip RE (Raster Engine).
RE se stará o všechny úlohy rasterizace. Trojúhelníky sem z geometrické jednotky chodí ve formě transformovaných souřadnic jejich bodů (kde X a Y odpovídá pozici na obrazovce a Z vzdálenosti od „pozorovatele“), vypočtenými sklony hran mezi body (slope) a barvami bodů. Při rasterizaci se takto zadaný trojúhelník rozloží na úsečky (span) v jednotlivých řádcích obrazovky, do kterých zasahuje. Následně jsou tyto úsečky postupně zapsané do grafické paměti. Při jemném (Gouraudově) stínování je operace o něco složitější, protože rasterizační procesor musí spočítat počáteční a koncovou barvu dané úsečky a tyto barvy na daných pixelech interpolovat (tj. mezi počáteční a koncovou barvou bude plynulý přechod).
Grafická paměť je přímo připojena k rasterizačnímu čipu, a protože byl v roce 1990 problém mít tak rychlou paměť, RE čte a zapisuje pixely v po sobě jdoucích pěticích. Paměťové čipy jsou vidět vpravo dole od RE v matici 5×3 (~1,9 MB). Každý čip má 4bitovou datovou sběrnici a kapacitu 128 kB (= 256x1024x4 bity). Trojice čipů nad sebou dává dohromady 12 bitů na jeden pixel, kde 8 bitů udává barevnou hodnotu (256 různých barev) a 4 bity navíc jsou dodatečné informace (overlay, underlay). Jedna trojice čipů tedy pokryje při 12 bitech na pixel přesně 256×1024 pixelů obrazovky. Pět takových trojic vedle sebe znamená pětinásobné rozlišení, což vyjde přesně na 1280×1024. To rozlišení, tak oblíbené u UNIXových stanic, je ve výsledku docela pochopitelné, když se to takto přepočte.
Z čipů na kartě ARV ještě stojí za zmínku dvojice Bt431 pod čipy s nálepkou. To jsou čipy, které zajišťují hardwarově akcelerovaný kurzor myši. Každý z nich umí kreslit jeden kurzor o rozměrech až 64×64 a jedné barvě. Když se oba spojí, mohou vykreslovat jeden až trojbarevný kurzor. Kurzor myši je oddělený od zbytku vykreslovacího hardwaru. Kdyby nebyl, muselo by se při každém jeho pohybu znovu překreslit, co předtím zakrýval. Takto kurzor myši nezpomaluje žádné kreslení.
Hradlové pole Xilinx 2018 řídí zobrazovací část – tu část, která nakonec zajišťuje vygenerování obrazu pro monitor. S pomocí několika oscilátorů na kartě vytváří potřebná časování a řídící signály pro další čipy. Ty však na této kartě nejsou. V základní verzi je přidává karta MDE připojená k černým konektorům na spodku.
Přídavná karta MDE má na sobě pět čipů XPC1 a RAMDAC (digitálně-analogový převodník). Že je čipů XPC1 pět, vychází opět z organizace paměti. Tyto čipy berou obraz z video paměti (spolu s výstupem z kurzorových čipů) po pěti pixelech a postupně je posílají na RAMDAC spolu s řídícími informacemi (overlay, underlay).
RAMDAC už pouze vyplní místa, kde má být overlay, uživatelsky definovanou barvou, převede obraz na analogový VGA signál a pošle jej na výstup. Overlay je následně možné použít, pokud jde výstup do nějakého specializovaného zařízení, které chce obraz počítače zkombinovat s nějakým jiným obrazem (typicky v televizním studiu).
Zde popsaná varianta představuje základní model IrisVision, který podporuje až 256 barev pro 2D/3D statické scény. Pokud je potřeba pracovat s real-time 3D, je nutné, do stejného množství paměti nacpat dva color buffery (front, back). Takže na barvu jednoho pixelu už zbudou pouze 4 bity místo 8 (tj. max 16 různých barev). Pokud se tak děje, čipy XPC1 pošlou do RAMDACu při každém snímku barevnou hodnotu vždy pouze z aktivního bufferu a druhý ignorují (tyto buffery se střídají, aby bylo možné vždy z jednoho posílat obraz na monitor a v druhém připravovat další snímek).
Rozšířená verze
Oddělení zobrazovacích obvodů na samostatný modul mělo své opodstatnění. Tento modul lze totiž nahradit jiným a rozšířit tak možnosti na vykreslování v „true color“ (16,7 miliónech barev).
Modul MEV vypadá podstatně pokročileji, ale dělá to samé. Jen prostě v roce 1990 byl problém stíhat rychle překreslovat obrazovku v rozlišení 1280×1024 a 24 bitech na pixel. V levé části je přídavná paměť v matici 5×5 čipů (~3,1 MB). Tyto čipy přidávají dalších 5×4 bitů informace na jeden pixel k původním 3×4 bitům na hlavní kartě, což dává dohromady 32 bitů. 24 bitů je použito na barevnou hodnotu (až zmíněných 16,7 různých barev) a zbylých osm slouží pro další informace (overlay, underlay).
Čipy XPC1 byly nahrazeny sofistikovanější variantou XMAP2 (pětice čipů uprostřed), schopnou zpracovat více bitů na pixel. Vzhledem k rozšířeným módům navíc podporuje více 256barevných palet současně, nebo jednu 12bitovou paletu (4096 barev). Tyto palety jsou uloženy v externích pamětech v malých čipech vpravo od XMAP2.
Digitálně-analogové převodníky má tato karta rovnou tři (v pravém horním rohu) a každý se stará jen o jednu barevnou složku (červená, zelená, modrá). Tehdy byl prostě problém udělat tak výkonný převodník pro vysoké rozlišení a tolik barev.
Samozřejmě v případě dynamické grafiky jsou opět potřeba dva buffery, takže se 24 bitů barevné informace na pixel rozdělí na dvakrát 12 bitů. Nicméně i „pouhých“ 4096 barev již stačí na pěknou grafiku.
Dalším rozšířením je paměť pro Z-Buffer. Tedy místo, kam si rasterizační čip (RE) může chodit ověřit, zda právě vykreslovaný pixel je na dané pozici obrazovky blíže než nějaký již dříve vykreslený. V případě, že ne, může vykreslování daného pixelu přeskočit a tímto způsobem umožnit prolnutí dvou objektů do sebe. Bez paměti Z-Bufferu taková věc nebyla možná. Z-Buffer má u této karty přesnost 24 bitů, což znamená dalších 5×6 čipů (~3,8 MB). V plné konfiguraci má tedy karta dohromady 8,75 MB vlastní paměti složené ze 70 čipů.
Závěrem
SGI IrisVision byla prvním produktem, který se snažil přiblížit svět PC možnostem UNIXových grafických stanic. Nebylo to jen o hardware, ale také solidním základu v podobě knihoven IRIS GL postaveném na čistě 32bit prostředí bez pozůstatků z prvních PC. Možnosti a pohodlí při práci byly nesrovnatelné s rozhraními odvozenými od „3D akcelerátoru“ IBM Professional Graphics Controller. IrisVision sice neuměl kreslit textury, ale v jistých ohledech byl podstatně schopnější, než pozdější generace 3D akcelerátorů pro hry, které fungovaly jen jako rasterizátory. Byl totiž při své práci nezávislý na procesoru. Počítač jen nahrál 3D scénu do karty, řekl, kde je kamera („pozorovatel“) a kde jsou světla, a všechny výpočty provedla karta, aniž by tím nějak zatěžovala procesor počítače. 3D akcelerátory pro hry geometrickou jednotku vůbec neměly a vycházely z předpokladu, že Pentium už je pro všechny tyto věci dostatečně rychlé (navíc díky texturám scény nemusely mít tolik polygonů).
Udělat v roce 1990 levný a použitelný 3D akcelerátor ještě evidentně nebylo snadné. Počet obvodů a karet, ze kterých se IrisVision skládal, to jen potvrzuje. Doba, kdy se to mělo změnit, se však nezadržitelně blížila. To už ovšem nechám na příště.
Fotky karet převzaty z: The Very Unofficial IRISVISION Home Page.
1. klusacek 31.12.2018 15:57:29
Diky za zajimavy clanek a tesim se na pokracovani.
Na obrazku “Figure 6” jsem si povsiml takove pozoruhodnosti: Vypada to, ze Raster Engine provadi algoritmus pro interpolaci usecky jen na barvach a Z-hodnotach v ramci jednoho radku obrazu. Interpolaci usecek, ktere tvori hranici kresleneho trojuhelniku, provadi jeste geometry engine.
Je to specialita teto architektury, nebo to tak je obecne? Jak to maji akceleratory, ktere nemaji geometry engine, jako treba graficka karta pro SGI Indy? Zil jsem v predstave, ze procesor do ni posle 2D souradnice vrcholu trojuhelniku (a jejich Z-hodnoty a barvy v rozich) a karta provede vsechny interpolace uz sama. Pokud by ale rasterizer byl podobne konstrukce jako u Personal Iris, tak by to znamenalo ze CPU musi spocitat Z-slope a color-slope pro kazdy radek trojuhelniku a poslat rasterizeru seznam hodnot pro jednotlive radky, ktere se budou kreslit (vcetne krajich bodu v kazdem radku, protoze uz by je beztak musel spocitat).
2. swarm 31.12.2018 17:57:14
[1] Pokud to dobře chápu, v případě SGI Indy to funguje tak, že kromě těch souřadnic musíš do grafiky přidat i úplně všechny slope data spočítaná procesorem. V rasterizátoru je pak iterátor, který je schopný trojúhelník vykreslit dávkově jako hromadu spanů (v rámci pozice spanu je jedna souřadnice pro Y a pak ještě dvě X-start a X-end), které sám postupně modifikuje podle slope dat.
U prvních generací spotřebních PC 3D akcelerátorů by to mělo být stejné. Až ty, které se chlubí, že mají „triangle-setup engine“, si slope data počítají samy.
(SGI Indy tyhle věci dělá na grafice v čipu REX3, mrkni na stranu 32: https://honk.sigxcpu.org/doc/Indy/rex3.pdf )
3. swarm 1.1.2019 13:18:10
[1] … http://www.futuretech.blinkenlights.nl/i2sec4.html#4.1 <– tady máš stejnou grafiku v Indigo2. Evidentně je všechno řešeno v CPU až na samotné vykreslení spanu v rámci řádku. Na kreslení spanů je tam nicméně dle dokumentace podpora DMA, takže to nejspíš nemusíš krmit po řádku, ale dáš tam všechny spočítané řádky trojúhelníku najednou a REX3 (který řeší i přímo komunikaci s počítačem) si ho postupně přechroupe za cenu jediného kernel callu.
—
Ještě bych měl dodat, že 3D akcelerátory pro PC pak byly přece jen sofistikovanější. V programátorské dokumentaci originální S3 Virge je vidět, že stačí zadat trojúhelník pomocí předpočítaných slope dat hraničních přímek transformovaného trojúhelníku jako start a delta parametry pro X, Y, Z, případně ještě A pro alpha a U, V, W pro textury. Ta Virge je lepší, než jsem si myslel.