Technologie: nVidia GeForce 7800 GTX
22.6.2005, Zdeněk Kabát, článek
Další evoluce v grafickém je světě je na pořadu dne. Nová rodina GeForce 7 je uvedena představením hi-endového čipu GeForce 7800GTX, který kromě masivního paralelismu vyniká i pokročilou architekturou.
Kapitoly článku:
- Technologie: nVidia GeForce 7800 GTX
- GeForce 7800 GTX - specifikace a technologie
- Jádro G70 - architektura 3D pipeline
- Vertex a pixel pipeline, ROP
- Optimalizované shadery, HDR, transparentní AA
- Grafická karta, spotřeba a závěr
Optimalizované MADD operace
Na začátku článku jsem se oháněl čísly, která vyjadřují výkon GeForce 7800 GTX v GFlops. Pokud je vám záhadou, jak nVidia k tak vysokým číslům došla, tak část tajemství tkví v optimalizaci instrukce MADD v pixel shaderu. Jedná se o multiply ADD, vynásobení dvou čísel a přičtení třetího, což je údajně jedna z nejvíce využívaných instrukcí v grafických aplikacích. Proto nVidia přidala druhou MADD jednotku na druhý shader a dokáže tedy tuto instrukci provést během jediného cyklu!
Podle určitého testu shaderů dokáže GeForce 7800GTX provést až 20,63 miliardy instrukcí za sekundu, což dává celkový výkon 165 GFlops při frekvenci 430MHz. Srovnání s Radeonem X850XT PE je více než zajímavé - ten při 520MHz zvládá 8,31 miliardy instrukcí, tedy celkem 67 GFlops. Vcelku zajímavé.
Zde je ještě tabulka s několika čísly vztahujícím se k shaderům nové grafické karty:
Používané datové formáty
Velmi často se lze u nových grafických karet setkat s různými označeními pro datové formáty barevných, ale i jiných informací. Ty jsou následující:
- U8 (8-bit celé číslo) - celé číslo uložené v 8 bitech (1 Byte), hodnoty 0 až 255 transformované do rozsahu 0.0-1.0
- FP16 (16-bit desetinné číslo) - desetinné číslo uložené v 16 bitech (2 Byty), 1 popisný bit, 11 bitů vlastní číslo, 5 bitů exponent, rozsah +/- 2^11
- FP32 (32-bit desetinné číslo) - desetinné číslo uložené ve 32 bitech (4 Byty), 1 popisný bit, 23 bitů vlastní číslo, 7 bitů exponent, rozsah +/- 2^23
Do těchto formátů jsou poté převáděny grafické informace a v praxi se setkáváte s čísly jinými. Konkrétně když se jedná o 128-bitovou hloubku pipeline, jedná se o vektorová data se čtyřmi složkami ve formátu FP32. Podobně pak 64-bitová hloubka znamená 4-složkový vektor FP16 (RGBA), nebo 2-složkový vektor souřadnic (UV). S těmito formáty poté počítá HDR, které si vysvětlíme dále.
Pro HDR se již ale nepoužívá standardní "windowsovský" formát sRGB, protože je pro jeho účely nedostatečný. Byl proto vyvinut tzv. OpenEXR (formát FP16), který má mnohem širší využití a kapacity. Je vhodný např. pro blending, stínování, texturování a filtrování v případech, kdy se operuje s barvami, hlavně jejich jasem (viz níže).
High Dynamic Range (HDR)
Dříve bylo kompletní osvětlení počítáno v 32-bitové hloubce barev (8-bit na kanál - U8), což v sobě skýtá mnohá omezení. Abychom tato omezení obešli, začala se používat vyšší výpočetní hloubka barev, tedy FP16 nebo FP32. To sice klade vyšší nároky na GPU, ale obrazový výsledek je neporovnatelný. Vertex a Pixel shadery počítají již prakticky jen se 32-bitovými desetinnými čísly.
High Dynamic Range neznamená nic jiného než velký rozsah zobrazovaných barev, a to rozsah jasu. Dynamický rozsah lze spočítat jako logaritmus poměru maximální a minimální intenzity světla a uvádí se v decibelech. Lidské oko vnímá rozsah do 14 dB, ale standardní 32-bitové barvy (U8) nabízejí jen poměr jasu 255:1, tedy 2,4 dB. Formát OpenEXR v FP16 má dynamický rozsah 12,0 dB.
Engine pro HDR zahrnuje několik různých faktorů. Pro jeho použití je třeba znát odrazivost povrchů, která může být uložena např. ve formě textury, pro kterou se pak napíše nějaký konkrétní program do pixel shaderu. Dále se používají efekty jako již zmíněný bloom a motion blur, dále např. depth of field (rozmazávání oblastí na které "není zaostřeno"). Výsledný obraz pak vypadá, jako když fotíte s dlouhou expozicí proti oknu - kolem okna je kontrast velmi vysoký, zatímco oblasti kolem jsou tmavé.
HDR se používá pro výpočet jasu v místech, kde je v reálném světě vidět prudké světlo, které má případně vliv i na okolní objekty. Konkrétní příklad výhodnosti HDR je pak ten, že když si vezmete danou scénu a osvětlíte ji, následně jas 10x zesílíte a opět 10x zeslabíte, dostanete prakticky tmu, protože grafický čip je nucen zaokrouhlovat. Při použití HDR dostanete naprosto stejné barvy. Více ostatně vidíte na přiložených obrázcích.
HDR dokáží v tuto chvíli využít Far Cry (patch 1.3) a Splinter Cell: Chaos Theory.
Transparentní anti-aliasing
GeForce 7 přichází ještě s jednou zajímavou věcí, a tou je transparentní anti-aliasing. Klasický anti-aliasing má tu nevýhodu, že za pomoci současných metod neumí vyhlazovat transparentní textury. Nejčastěji to je tráva, listí stromů, ploty a jiné objekty, které mají velmi jednoduchou geometrii, a proto se místo jejich modelování použije transparentní (průhledná) textura. Protože anti-aliasing, který používá nVidia (Multisampling) bere v úvahu jen okraje polygonů, nejsou obsahy transparentních textur vyhlazeny.
Proto se nyní objevuje transparentní adaptivní Supersampling a Multisampling, který má za úkol tento neduh napravit. Bere v úvahu alpha složku dané textury, která určuje její průhlednost a když takový objekt najde, použije na něj anti-aliasing, i když se jedná o vnitřní část nějaké textury. Supersampling je v tomto případě efektivnější a přesnější, ovšem dopad na výkon je vyšší. Více na obrázcích.