Kam se poděli kouzelníci z Future Crew? Vyvíjejí špičkové 3D karty a high-tech hardware!
Suomen Tasavalta nebo také Finská republika. Kromě čtyř hradů se může také pochlubit největším počtem počítačů připojených k Internetu v přepočtu na 1000 obyvatel. Snad proto odtud pochází tolik talentovaných lidí počítačového světa.
Před mnoha lety (když byla 386 ještě slušným počítačem) zažilo Finsko největší rozvoj demoscény. Skupinky mladých nadšených programátorů, grafiků a hudebníků tvořily krátké programy (dema), které přinášely množství neuvěřitelných efektů. Kromě důkladné znalosti hardwaru a assembleru byl potřeba především dobrý nápad. Klasikou žánru se stalo demo Second Reality (tuším z roku 1992) finské skupiny Future Crew. Z řady jmen zmíním především dvě – Sami Tammilehto (zakladatel skupiny) a Mika Tuomi (jeden z programátorů). Oba nyní patří do finského týmu Bitboys a náplní jejich práce je návrh hardwarově implementovaných algoritmů. Kromě jiného se specializují na návrh jádra grafických čipů.
Napříč minulostí …
První grafický čip vznikl ve spolupráci s firmou TriTech Microelectronics. Jmenuje se Pyramid3D a práce na jeho vývoji byly zahájeny už v roce 1993, což byla z hlediska spotřební 3D grafiky doba naprostého temna. Bylo třeba navrhnout a implementovat celý postup tvorby a vizualizace trojrozměrné scény s ohledem na cílové aplikace zaměřené na renderování v reálném čase – počítačové hry, některé systémy CAD nebo vizualizační programy typu 3D Studio. Vývoj byl úspěšně dokončen roku 1996. Výsledkem byl kombinovaný 2D/3D grafický čip, který nekladl důraz ani tak na rychlost (srovnatelnou s pozdějším Voodoo Graphics), ale především na vizuální kvalitu. Ve své kategorii to byl snad vůbec první grafický čip, který podporoval multi-texturing nebo bump-mapping (použitý postup dokonce licencoval Microsoft a začlenil jej do DirectX 6). Vznikly také ovladače pro Windows 95/NT (vlastní aplikační rozhraní, DirectX a OpenGL).
… do blízké budoucnosti
Neméně zajímavý je současný projekt Bitboys – jádro kombinovaného 2D/3D grafického čipu Glaze3D. Zvláštní jsou na něm především dvě věci – zatraceně vysoká rychlost a skutečnost, že jako „křemík" zatím neexistuje, ovladače, běžící aplikace a výsledky výkonnostních testů však ano. Řešení druhé záhady se nazývá PCIBuilder a vrátím se k němu později, nyní k rychlosti.
Za dlouhá léta jsem si už zvykl brát odhadovaný výkon se značnou rezervou. V praxi se totiž ukazuje, že současné 3D akcelerátory jsou už tak rychlé, že je jim nebude stačit ani nová generace procesorů Pentium II. S rostoucím množstvím detailů (více polygonů a kvalitních textur) začíná být úzkým hrdlem také sběrnice PCI a dokonce i AGP, navíc se na přenosu dat stále podílí procesor.
Z tohoto pohledu vyznívá zvláštně skutečnost, že ať si vezmete jakýkoliv současný spotřební grafický 3D čip, měl by být Glaze3D vždy nejméně čtyřikrát rychlejší. Jedná se však o předběžná čísla, architektura jádra je totiž škálovatelná, takže s většími náklady lze vyrábět i grafické čipy dvakrát tak rychlé. Takový výkon už naráží na všehny výše uvedené problémy a je zajímavé sledovat, jak se s nimi Bitboys hodlají vypořádat.
První řešení je stále obvyklejší – integrovaný triangle setup engine, který od procesoru přebírá řadu náročných výpočtů souvisejících s geometrií scény a její transformací. Velký výkon také přináší nutnost zpřístupnit a zpracovat velké množství dat, běžně přes 6 GB/s, což jsou zatím schopny zvládnout pouze paměti DirectRDRAM. Bude však možné použít i běžné paměti SGRAM nebo SDRAM. Snad nejzajímavější je však možnost zpracovat najednou (tedy při jednom průchodu scénou) až čtyři textury při použití trilineárního filtrování. O co vlastně jde. Když si vezmete dobře vypadající hru (Unreal apod.) je jeden obraz (snímek) vykreslován několikrát. Nejprve (při prvním průchodu) jsou naneseny tzv. light-maps, tedy textury osvětlení, při druhém průchodu textury povrchu a ve třetím průchodu jsou např. aplikovány efekty mlhy nebo kouře. Obecně platí, že čím lepší kvalita, tím vyšší počet průchodů. Pokud jsou použity tři průchody, znamená to tedy, že ve většině případů je každý polygon poslán a zpracován celkem třikrát, což je (až na několik málo případů) zbytečné. Navíc je tu také opakované čtení a zápis do Z-bufferu. Pomineme-li netradiční řešení použité u čipu PowerVR, byl prvním průkopníkem čipset Voodoo2, jehož dvě oddělené texturovací jednotky byly schopny zpracovat dvě textury zároveň. Glaze3D tedy nabízí dvakrát tolik a navíc s trilineárním filtrováním (což jinak znamená další průchod navíc). Snížení objemu přenášených dat a vyšší rychlost jsou zřejmé. Stejně jako u Voodoo2 je k dispozici režim SLI.
Glaze3D se právě nachází ve fázi posledních úprav a ladění výkonu, začínají rovněž první licenční jednání. Podle optimistického termínu budou první grafické čipy založené na Glaze3D k dispozici začátkem příštího roku. Ovladače mají dostupné pro operační systémy Windows 95/98/NT (DirectX a OpenGL, oba v posledních verzích, tedy DirectX 6 a OpenGL 1.2).
Na papíře vypadá Glaze3D velmi nadějně – bezkonkurenční výkon a škálovatelná architektura, která umožňuje výrobci přizpůsobit výkon a cenu vlastním potřebám. Jedna věc je však něco navrhnout, druhá věc je to prosadit. Velmi mě překvapilo, jak málo informací je k dispozici z jiných zdrojů než od Bitboys (průměrný počet prstů na jedné lidské ruce by měl stačit), navíc výsledky licenčních jednání jsou stále neznámé. Zatím vidím dvě možnosti. Buď se Bitboys podaří najít ochotného výrobce a první referenční karty ukáží, jak se vlastně věci mají, nebo se na celou věc zase rychle zapomene (což při současném stavu nebude problém) a Glaze3D skončí tam, co Pyramid3D – jako zajímavý experiment, který se však nepodařilo dotáhnout do smysluplného konce. A to by byla škoda.
Neexistence nevylučuje funkčnost
Glaze3D je stále jenom návrh, přesto už existují ovladače a probíhají výkonnostní testy. Řešení se nazývá PCIBuilder. Představte si dva počítače. V jednom je zasunuta PCI karta (má tedy přiřazené IRQ, rozsah adres apod.). Ta však slouží pouze jako atrapa, její chování je kompletně řízeno programem běžícím na druhém počítači, se kterým je karta propojena.
PCIBuilder umožňuje simulovat libovolný druh PCI karty, lze přitom použít jazyky jako C, C++ nebo dokonce Visual Basic, což je oproti Verilogu značný pokrok, ať už v jednoduchosti nebo rychlosti.
Hlavní výhodou je však zkrácení celé doby potřebné na vývoj. Běžný postup spočívá v tom, že po dokončení návrhu jsou zhotoveny první prototypy a začíná testování, upravování a psaní ovladačů, které jsou pro první externí testy k dispozici většinou ve stavu alfa-verze. PCIBuilder umožňuje psát ovladače současně s návrhem hardwaru a především lze relativně snadno provádět změny v návrhu a řadu testů bez nutnosti pokaždé vyrobit nový čip. Bitboys právě používají PCIBuilder při vývoji jádra Glaze3D, více informací můžete nalézt na jejich domovské stránce www.bitboys.fi. PCIBuilder by měl být dostupný už tento rok.