Naděje na trhu s 3D grafikou

Poslední tři roky znamenaly v grafickém průmyslu období velké konsolidace, během kterého zaniklo hned několik tradič...


Poslední tři roky znamenaly v grafickém průmyslu období velké konsolidace,
během kterého zaniklo hned několik tradičních výrobců čipů i grafických karet.
Společnosti S3, která byla výrobcem čipů pro karty střední a nižší třídy, se na
trhu s novou řadou Savage příliš nevedlo. S3 byla nakonec koupena firmou VIA,
tedy výrobcem čipsetů a v poslední době též procesorů Cyrix III. Společnost STB
se sloučila s firmou 3dfx, která si v letech 1996-98 získala reputaci svými
čipsety Voodoo a Voodoo2. 3dfx tak posléze uvedla své Voodoo3 nikoliv jako
technologii, ale jako produkt, jehož výrobu zajišťovaly právě kapacity STB
(nacházející se převážně v Mexiku). Voodoo3 bylo však přes vysoký výkon již v
době svého uvedení v některých směrech zastaralé a postupné odkládání nové
technologie (čip VSA100), která se navíc po uvedení ukázala jako příliš drahá,
způsobilo, že 3dfx se dostalo do vážných potíží. Ty nakonec vyvrcholily
odkoupením společností nVidia, která se tak zbavila svého tradičního konkurenta
a navíc získala veškeré ochranné známky a technologie. Přežijí silní
V současné době tak přežívá na trhu jen několik tradičních značek (ATI,
Matrox), případně výrobců, kteří používají technologie dodané nVidií. Hlavním
konkurentem a společností číslo dvě je právě kanadské ATI, které má již dlouhá
léta silnou pozici zejména v oblasti OEM, multimediálních grafických karet a na
mobilním trhu. Své pozice si nadále i přes absenci skutečně výkonných
technologií drží firma Matrox. Karty tohoto výrobce jsou už tradičně oblíbené
především v oblasti 2D grafiky a zpracování videa.
Nová konkurence se možná objevuje v podobě čipů PowerVR Kyro II, kterou vyrábí
STMicroelectronics (dříve SGS-Thomson Microelectronics). Čipy Kyro používají
technologii tile based rendering, která umožňuje rychlé vykreslování náročné
grafiky při mnohem menším nároku na výkon čipu či rychlost paměti. Jedná se o
nástupce kdysi poměrně úspěšných přídavných akcelerátorů PowerVR, které svého
času konkurovaly čipům 3dfx Voodoo. Dominantní postavení má však dnes v tomto
segmentu trhu firma nVidia a právě jejím technologiím se budeme věnovat v tomto
článku především.

Trocha historie
Když v roce 1993 vznikla společnost nVidia, byla 3D grafika na PC spíše hudbou
budoucnosti. Mezi poslední výkřiky módy patřil standard MPC2, grafika byla
obvykle 256barevná a grafické akcelerátory bojovaly s funkcemi pro urychlení
dvojrozměrného GUI. Po neúspěchu prvního produktu, čipu STG2000, který spojoval
funkce akcelerace 2D a 3D grafiky a PCI zvukové karty, se společnost spojila s
Microsoftem a rozhodla se své budoucí akcelerátory stavět "na míru" tehdy se
rodícímu 3D API (application programming interface) Direct3D. Rozhodnutí sice
zpočátku znamenalo pro nVidii mírnou konkurenční nevýhodu, ale od uvedení čipu
TNT v roce 1998 se změnilo naopak v největší devizu. Např. Alex St. Jones, člen
vývojového týmu DirectX, kdysi prohlásil: "NVidia má v DX týmu více lidí než
samotný Microsoft." Partnerství nVidie a Mircosoftu se již delší dobu netýká
pouze vývoje rozhraní Direct3D. NVidia je hlavním partnerem, který pracuje na
vývoji hardwaru pro novou konzoli Xbox. Kromě grafického subsystému
(postaveného na technologii GeForce3) vyvíjí a dodává i zvukový procesor a
čipset konzole. Své zkušenosti s vývojem čipsetu pro x86 platformu hodlá
společnost v budoucnu zúročit a chystá se vyvinout čipset s podporou DDR paměti
a integrovanou grafikou určený pro běžná PC. Zatímco dříve směřovala produkce
firmy zejména k náročným uživatelům (či hráčům), v posledním roce nVidia
představila nové produkty, které útočí i na další trhy. Pro notebooky byla
uvedena GeForce2 Go první výkonný 3D čip pro mobilní počítače, odvozený z čipu
GeForce2 MX. Ten pro změnu útočí na trhy Matroxu díky funkci TwinView, která
umožňuje připojení dvou monitorů k jedné grafické kartě (Matrox jako první
nabídl analogické řešení pro spotřebitelský trh u karty G400 DualHead). Podobný
produkt ostatně nabízí nově i ATI v podobě karty Radeon VE.

GeForce3: IQ místo hrubé síly
V současném světě 3D grafiky existují dva hlavní způsoby, kterými lze dosáhnout
dobrých výsledků. Je to buď metoda hrubé síly tedy prosté zvyšování výpočetního
výkonu, nebo "chytré" technologie, které nejen dokáží zvýšit výkon, ale otevřou
i zcela nové možnosti. GeForce3 od firmy nVidia je "chytré" GPU znamená to mimo
jiné, že "hrubý" výkon je prakticky shodný s přecházející GeForce2 GTS. Přesto
GF3 obsahuje víc než dvojnásobné množství tranzistorů oproti svému předchůdci a
v náročných podmínkách nabízí výrazně vyšší výkon. Nové obvody tedy nejsou na
čipu samoúčelné a slouží k obsluze funkcí, které napomáhají využít dostupný
hrubý výkon mnohem efektivněji.

GeForce3
Jedním z hlavních omezení, kterými trpí grafické karty, je příliš pomalá paměť.
Technologie LMA (lightspeed memory architecture) řeší právě tento problém tedy
problém přílišného zatížení paměti na grafické kartě.
Problém, který dostala do vínku rodina čipů GeForce, souvisí paradoxně s T&L.
Funkce Transformation & Lightning totiž sice umožnily zpracování mnohem
komplexnější geometrie, ovšem stejnou geometrií je zároveň výrazně zatížen port
AGP. Řešení, které nabízí GeForce3 a potažmo i DirectX 8, se nazývá higher
order surfaces (HOS). V podstatě se jedná o to, že 3D model již nemusí být
definován pouze jako soustava polygonů (verticí), ale jeho jednotlivé části
mohou být popsány křivkami, které procházejí několika "kontrolními" body
zakřivený povrch s několika kontrolními body se nazývá "spline". Velmi
zjednodušeně řečeno: Pomocí HOS je možné vytvořit i poměrně složité tvary
formou matematických vzorců namísto stovek trojúhelníků a verticí. GeForce3 si
tyto vzorce sice následně převede na klasickou trojúhelníkovou geometrii, to se
však děje plně hardwarově uvnitř GPU, a tudíž bez dalšího zatížení procesoru či
sběrnice.

Příliš mnoho pixelů
Vedle sběrnice AGP je dalším úzkým hrdlem vlastní paměť grafické karty. Ta
slouží k ukládání mnoha informací vedle obrazovkového bufferu (tedy paměti,
která obsahuje kopie právě zobrazovaného snímku) a údajů o geometrii 3D scény
je to Z-buffer (paměť která obsahuje data o vzdálenosti jednotlivých objektů ve
scéně), paměť pro textury (bitmapy tvořící povrch objektů) a další informace.
Podstatná ovšem není pouze otázka, co vše se právě v paměti nachází. Mnohem
důležitější je, jak často se do paměti přistupuje a jakým způsobem se data
načítají zde totiž vzniká hlavní rychlostní omezení současných grafických karet.
K výpočtu jednoho pixelu je potřeba načíst předchozí barevnou hodnotu pixelu,
následně načíst hloubku a získat údaje o textuře pro daný pixel. Po vypočtení
barevné hodnoty pixelu je tato opět zapsána do paměti, spolu s novou hodnotou
hloubky. Grafický procesor přitom ovšem počítá i mnohé pixely, které posléze
nebudou zobrazeny, protože je zakryje objekt v popředí. Poměr vypočítaných a
skutečně zobrazených pixelů se nazývá "depth complexity" a v současných
aplikacích (např. hrách) mívá hodnotu 2 až 2,5 to znamená, že na dva zobrazené
pixely jich musí být spočteno až pět. Pokud budeme provádět 32bitové
renderování s klasickou architekturou (TNT2, GeForce), jsou pro každý údaj
třeba 4 bajty.
5,8 GB/s v rozlišení 1 600 x x 1 200 bodů je velká zátěž i pro nejvýkonnější
karty s rychlou pamětí DDR. V současné době je obtížné, ne-li nemožné vyrobit
za přijatelnou cenu rychlejší typy DDR pamětí, a tak ke slovu přicházejí
konstrukční změny, které zefektivňují využití paměti prvenství v tomto směru
patří ovšem ATI, které se o něco podobného pokusilo s Radeonem.

Křížový řadič paměti
Křížový řadič paměti (neboli crossbar memory controller) má za úkol právě
zefektivnění čtení a zápisu z a do paměti grafické karty. Přestože je paměť na
grafické kartě datově nejpropustnější část počítače, je tato propustnost běžně
využita maximálně z 50 %. Problém je v tom, že klasický 128bitový řadič paměti
DDR získává data v "balíčcích" o velikosti 256 bitů. Mohlo by se zdát, že
přenesení většího množství dat najednou (což je právě specialita DDR) je
výhodou, jenže například v případě velmi složité geometrie je tomu spíše
naopak. Pokud budete mít velmi malý trojúhelník, například o velikosti pouhých
dvou pixelů, budete pro jeho načtení jeho barevné či Z hodnoty potřebovat pouze
32 bitů. Celý trojúhelník má tedy 64 bitů, ovšem konvenční řadič musí načíst
256 bitů současně 3/4 přenosové kapacity jsou tak při této operaci promrhány.
Řadič paměti na GeForce3 se proto skládá ze čtyř nezávislých řadičů, které
mohou komunikovat jak mezi sebou, tak nezávisle s pamětí i s vlastním GPU. To
umožňuje načíst individuální dávky dat o velikosti 64bitů nebo využít celou
kapacitu sběrnice současně a načíst "klasických" 256 bitů. Efektivní hloubka
Poslední oblastí, kde si GF3 dokáže "ušetřit" práci, je hloubková "Z"
informace. Jak jsme již zmínili, Z je jedním z typických žroutů přenosové
kapacity. V novém čipu nVidie je proto Z informace bezeztrátově komprimována v
poměru 4 : 1. Komprese se provádí zcela transparentně (tedy aniž by to
ovlivnilo běh programů) a čistě hardwarově v reálném čase slouží k tomu
speciální obvody v GPU.
Další úspora spočívá v předvídání Z informace pomocí tzv. "Z-occlusion
culling". V podstatě se jedná o to, že informace o tom, zda bude pixel vidět či
nikoliv, je k dispozici dříve než pixel samotný a pokud bude pixel zakryt, jeho
výpočet se přeskakuje. Tímto způsobem lze v současných aplikacích ušetřit až 50
% výkonu.
Zatímco klasické "pevné" T&L má na starosti transformaci (rotace, zvětšení,
zmenšení, posuv) a nasvícení daných 3D modelů a scény, vertex shader dokáže 3D
modely sám na základě zadaných dat či podmínek modifikovat. To znamená nejen
další odlehčení procesoru, ale zejména možnost vytvářet mnohem lépe vyhlížející
3D grafiku, plynulejší animace a zajímavější efekty. Mimo jiné tak lze věrněji
modelovat živé tvory jednak díky 32 současně dostupným matricím (staré čipy
nabízely 2 až 4 matrice) a jednak přes tzv. "keyframe animation" tedy přes
automatické dopočítávání mezisnímků (podobnou technologii keyframe
interpolation představila v minulém roce i ATI). V úvahu přicházejí i efekty,
jako je výškově omezená mlha (doposud byla omezena vzdáleností), vlnící se
vzduch, případně různé opakující se deformace 3D postav a objektů (dýchání,
vlajka ve větru). Jednou z možností je např. morphing tedy nikoliv morphing
textur (ten nabízel už například Atari Jaguar v roce 1993), ale morphing 3D
objektů, dále motion blur, hloubka pole či možnost nasvícení 3D modelu zevnitř.

Pixel shader
Vlastní vykreslování (rendering) na grafických kartách bylo až doposud
definováno určitou množinou dostupných funkcí (jako je například stařičké
bilineární filtrování či novější per-pixel efekty známé z GeForce2). NfiniteFX
engine, jak nVidia nazývá programovatelný pixel shader GeForce3, ovšem vedle
těchto "pevných" efektů umožňuje i tvorbu vlastních, které by se svým způsobem
daly přirovnat k filtrům z grafických programů. Pixel shader lze programovat na
úrovni strojového kódu, a vytvářet tak různé efekty například "kreslený" vzhled
3D grafiky.

Potíže
GeForce3 je na jednu stranu nádhernou ukázkou moderních technologií.
Dvojnásobný počet tranzistorů byl tentokrát využit výhradně na přidání nových
funkcí, programovatelnost a zejména zefektivnění toho, co již GPU nabízely. To
všechno má ale i několik dost podstatných háčků. Funkce jako programovatelný
pixel shader či vertex shader jsou podporovány až v nových DirectX 8, a tak je
budeme moci ocenit teprve postupem času. Nejprve se totiž musejí přizpůsobit
sami tvůrci programů a musí vzniknout dostatečně široká základna uživatelů
GeForce3 i dalších čipů s obdobnými funkcemi (připravovaný nástupce Radeonu od
ATI bude zřejmě kvalitní konkurencí).
Karty s čipem GeForce3 a 64 MB paměti DDR mají být na trh uvedeny v cenovém
rozmezí 500-600 dolarů. Díky této ceně se u nás budou majitelé počítat spíše na
desítky. Doufejme, že se co nejdříve dočkáme čipu NV-17 jakési "odlehčené"
verze GF3 ("GeForce3 MX"), která bude dostupnější i běžným uživatelům.

32bitové renderování s klasickou architekturou
Pokud budeme provádět 32bitové renderování s klasickou architekturou (TNT2,
GeForce), jsou pro každý údaj třeba 4 bajty:
Tento výpočet předpokládá, že budeme aplikovat pouze jeden 32bitový texel pro
každý obrazový bod (texely pro bilineární filtrování jsou v texturové
vyrovnávací paměti). 20 bajtů se nemusí zdát mnoho, ale pokud musíte vypočítat
každý snímek de facto 2,5krát (depth complexity) při vysokém rozlišení, situace
se začne rapidně měnit.
Přestavme si situaci při rozlišení 1 024 x 768 bodů:
Zcela fatální pak bude situace při rozlišení 1 600 x 1 200 bodů:
* Depth complexity je poměr vypočítaných a skutečně zobrazených pixelů. V
současných hrách mívá hodnotu 2 až 2,5.
1 0708 / pah









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.