TMU, anizotropní filtrace a PRT
Kapitoly článků
Texturovací jednotky a anizotropní filtrace
Funkční stránka texturovacích jednotek se již řadu let nemění. Z tohoto hlediska byla nejvýznamnější změnou podpora FP16 filtrace s příchodem čipu R600 roku 2007. Tím však ATI (zřejmě s očekáváním striktních požadavků ze strany DirectX 10) s implementací FP16 filtraci v plném výkonu velmi výrazně přestřelila požadavky tehdejších her. Dá se říct, že s výjimkou 3D Marků se požadavky na FP16 filtraci textur (oproti Int8) až dosud vyskytují jen sporadicky, byť mírně stoupají. Počínaje čipem RV770 (až doposud) tedy texturovací jednotky podporují FP16 filtraci s poloviční rychlostí oproti Int8.
Co se však neustále vyvíjí, je kvalita anizotropní filtrace. S čipem R520 začala ATI odstraňovat úhlové optimalizace, které ve hrách se složitějšími povrchy měly za následek nestejnoměrnou úroveň filtrace textur, které byly nakloněné pod různými úhly (každá pak byla jinak ostrá). Tento trend zakončil čip Cypress (HD 5800), který úhlové optimalizace definitivně odstranil. Generace HD 6000 následně řešila plynulost mezi jednotlivými úrovněmi filtrace.
Texturovací jednotka architektury GCN pokračuje ve stávajícím trendu, tentokrát však byl cílem upravený kernel filtru, který by efektivněji potlačoval jev zvaný shimmering („zrnění“ na texturách s detaily na vysokých frekvencích typicky při pomalém pohybu). Úhlová nezávislost samozřejmě zůstala.
AMD nám dala příslib sníženého shimmeringu bez negativního dopadu na ostrost a výkon. Výsledek anizotropní filtrace má být na pohled nerozeznatelný od referenčního rasterizéru, což samo o sobě zní poměrně lákavě (pokud to výsledky potvrdí, byla by GCN první architekturou, která je podobné kvalitativní úrovně schopná).
Video výše ukazuje rozdíl v Direct3D AF testeru mezi Radeonem HD 6970 a novým HD 7970. Můžete si všimnout poklesu moire (vysokofrekvenční šum) v přechodu na první mipmapu (přechod do červeně vyznačené části). Přestože je určité zlepšení patrné i na komprimovaném videu, přikládáme screenshot i v bezztrátovém formátu PNG (plus srovnání s předchozími generacemi ATI a AMD):
ATI R520 (X1000) | ATI R600 (HD 2000) | ATI RV770 (HD 3000) |
---|---|---|
AMD Cypress (HD 5000) | AMD Cayman (HD 6000) | AMD Tahiti (HD 7000) |
Partially Resident Textures (PRT)
Dříve než se podíváme, co to vlastně PRT je, se v krátkosti vraťme nějaký rok zpět. Jedním z největších datových objemů, který (až na výjimky) musely od svého prvopočátku držet grafické karty v paměti, byly textury. Postupem času kapacita paměti narůstala a umožňovala použití stále větších a detailnějších textur. Podívejte se na tempo, jakým objem paměti rostl:
rok | grafická karta | paměť |
---|---|---|
1995 | Matrox Mystique | 2 MB |
1996 | 3Dfx Voodoo | 4 MB |
1997 | 3Dfx Voodoo 2 | 8-12 MB |
1998 | Nvidia RIVA TNT | 16 MB |
1999 | ATi Rage 128 | 32 MB |
2000 | Nvidia GeForce 2 | 64 MB |
2001 | ATI Radeon 8500 | 64-128 MB |
2002 | Matrox Parhelia 512 | 128 MB |
2003 | ATI Radeon 9800 PRO | 128-256 MB |
2004 | Nvidia GeForce 6800 Ultra | 256 MB |
2005 | ATI Radeon X1800 XT | 512 MB |
2006 | Nvidia GeForce 8800 GTX | 768 MB |
2007 | ATI Radeon HD 2900 XT | 512-1024 MB |
2008 | Nvidia GeForce GTX 280 | 1024 MB |
2009 | AMD Radeon HD 5870 | 1024 MB |
2010 | Nvidia GeForce GTX 480 | 1536 MB |
2011 | AMD Radeon HD 6970 | 2048 MB |
2012 | AMD Radeon HD 7970 | 3072 MB |
Možná jste si všimli, že mezi lety 1995 a 2000 narostla každým rokem kapacita paměti na dvojnásobek. Efektivní nárůst byl ještě vyšší, protože právě v této době probíhal rychlý vývoj kompresních algoritmů. Za posledních 10 let se ale růst zpomalil a v průměru odpovídá zdvojnásobení kapacity za více než dva roky.
Subjektivně se může zdát, že rozdíl mezi ročním a dvouletým intervalem není nijak razantní, ale kdyby trend 90. let pokračoval dosud, měly by současné karty čtvrt terabajtu paměti (asi 100× víc než mají).
Hardware se sice v tomto směru vyvíjí pomaleji, ale software nic nebrzdí a může rozlišení textur navyšovat stále stejným tempem. Jenže to kvůli limitované kapacitě grafické paměti možné není. Systémové paměti je ale dostatek a navíc je i mnohonásobně levnější (při současných cenách je možné sehnat 16 GB běžných 1333MHz modulů pod 2000 Kč včetně daně). Problém je ale v tom, že ačkoli technologii na texturing z operační paměti máme (Intel představil tzv. AGP texturing již před 14 lety), je v případě velkých textur její použitelnost omezená. Datová propustnost a především latence systémové sběrnice jsou mnohonásobně vyšší, než u lokální grafické paměti.
S nápadem na řešení (nazvaným Megatexture) přišel v roce 2006 John Carmack. Vyšel z prostého faktu, že v grafické paměti nemusí být gigantická textura umístěna celá. Stačí, pokud budou dostupné pouze ty části, které se skutečně použijí pro rendering. Řekneme-li to zjednodušeně, textura je rozdělena jako šachovnice a pouze ty části (čtverce), které budou třeba, se uloží do paměti grafické karty.
Tento princip v hlavní myšlence kopíruje princip fungování texturové cache v GPU, do které se samozřejmě také nevejde celá textura (má kapacitu typicky 8-16 KB), ale pouze ty části (texely), se kterými se právě pracuje.
Technologie PRT je v podstatě hardwarově akcelerovanou alternativou Carmackovy Megatexture.
AMD Tech Day, Mnichov (8. prosince)