Historie grafik v noteboocích: pixel shaders a IGP
Seznam kapitol
Nedávno jsme se věnovali začátku rivality mezi společnostmi ATI a NVIDIA. 3D už měl každý čip a od herních se oddělily profesionální varianty pro 3D/CAD nasazení. Dnes se podíváme na první grafické čipy s pixel shadery a na část historie se podíváme znovu z opačného konce spektra – integrovaných grafik.
Minulý díl byl hlavně o ustálení vývojového cyklu a začátku rivality mezi společnostmi ATI a NVIDIA. 3D už měl každý čip a od herních se oddělily profesionální varianty pro 3D/CAD nasazení. Dnes zabrousím trochu dál k představení prvních grafických čipů s pixel shadery, abych se následně vrátil v čase a část historie prošel znovu z opačného konce spektra – integrovaných grafik.
Je právě podzim roku 2002 a ATI ohlašuje revoluci v 3D akcelerátorech. Přichází s Radeonem 9700, čipem s plnou podporou Pixel a Vertex Shaderu ve verzi 2.0, a tedy i podporou nového rozhraní DirectX 9.0. ATI se povedlo nabídnout technologicky velmi vyspělý a také hodně rychlý čip a povedlo se jí to několik měsíců před nasazením obdobného produktu u Nvidie, což se pozitivně podepsalo jak na ziscích, tak na nárůstu podílu na trhu.
V rámci téhož tiskového prohlášení došlo k představení ještě jednoho významného produktu. Tentokrát však pro notebooky – šlo o ATI Mobility Radeon 9000 Pro.
Odbočka: co jsou to shadery
Doposud měly všechny mobilní grafiky pevně zadrátované funkce, které mohly být využity. Jejich implementace se později označovala jako fixed-function pipeline. Grafický čip tedy spočítal potřebnou geometrii scény, vypočítal osvětlení a na jednotlivé polygony mohl vykreslit textury v různých režimech. Polygony mohly být celé zprůhledněné pomocí konstanty, nebo byla jejich průhlednost určena maskou (samostatnou texturou, kde například světlost každého bodu odpovídá stupni průhlednosti). Textury bylo možné na polygonech kombinovat (multitexturing) s různou vazbou. Například tak, že se obě textury (resp. RGB hodnoty jejich bodů) sečetly, odečetly, případně zprůměrovaly váženým průměrem. Pokud jste nějakou funkci nevyužili, tak se prostě v pipeline přeskočila.
Pominu-li pro zjednodušení různé předchůdce Pixel Shaderu (např. Nvidia Register Combiner), byla první grafickou kartou s jeho využitelnou podporou v desktopech GeForce 3. U ní byla část provádějící multitexturing rozšířena několika registry a možností vykonat na každém pixelu až dvanáct úkonu kombinujících až čtyři zdrojové textury a osm konstant. Šlo o Pixel Shader 1.1.
U Radeonu 8500, resp. dále popisovaného Mobility Radeonu 9000 je použit Pixel Shader (PS) 1.4, který zmíněnou jednotku ještě rozšiřuje a dokáže na pixelu provést až 22 úkonů, kde jsou navíc oddělená texturová data od koordinátů (šest míchání textur, osm adresací textur a osm konstant). Pokud tedy byl shaderový program složitější, mohla jej grafika s PS 1.4 vykonat v jednom cyklu, zatímco grafika s PS 1.1 již potřebovala dva cykly.
Vertex Shader (VS) je podobná komponenta. Jen nepracuje na úrovni pixelů, nýbrž vertexů – tedy jednotlivých bodů, které jsou pospojovány do polygonů tvořících scénu. Pomocí VS je možné provádět různé operace s pozicí vertexu, jeho barvou/světlostí a texturovými koordináty.
Z dnešního pohledu jsou Shadery 1.x velmi primitivní a šlo pouze o malý krůček k plně programovatelným GPU. Nicméně šla s nimi vytvořit celá řada působivých efektů.