Vývojář: Raytracing nevyžaduje RT-cores, chystané konzole ho zvládnou bez nich
Metro Exodus je jednou z her, která podporuje raytracing, respektive hybridní rendering (rasterizace + raytracing). Dá se říct, že ve srovnání s tím, co jsme viděli dosud, jsou vizuální výsledky lepší. Na druhou stranu je celkově na hardware náročná i samotná hra jako taková, takže pokud např. na rozhýbání hry se vším všudy, jen bez raytracingu, v 1920×1080 při 60 FPS potřebujete GeForce RTX 2070, pak i přesto, že propady jsou relativně nižší, než jsme viděli při vydání Battlefield, dosahují FPS v tomto rozlišení 45. 60 FPS se po zapnutí raytracingu v 1920×1080 blíží GeForce RTX 2080 (74 -> 57 FPS) a majitelé monitorů s rozlišením 2560×1440 pro rozhýbání hry se vším všudy budou potřebovat GeForce RTX 2080 Ti v kombinaci s G-Sync, protože po zapnutí raytracingu klesnou FPS ze 73 na 52 FPS (vše dle TechSpot).
Na jednu stranu tedy lze říct, že relativní propad FPS není tak velký jako v Battlefield a vizuální dopady jsou o něco lepší, na stranu druhou jde stále o ztrátu 25-30 % FPS, která přináší vizuální posun, jenž není viditelný ve všech scénách, respektive který není vždy jednoznačně krokem k realističtějšímu dojmu. Jedna věc je, zda scéna vypadá jinak, druhá věc je, zda je více realistická. Rozhodně však lze říct, že vývojáři Metro Exodus posunuli implementaci raytracingu správným směrem (nebo alespoň správnějším než jaký jsme viděli doposud).
O to zajímavější jsou názory jednoho z inženýrů-vývojářů, který se na hře podílel, programátora renderingu Bena Archarda. Za tři klíčové prvky, které mají vliv na výkon, označil tyto:
- výpočetní výkon
- přístup k paměti
- BVH intersection testy
Třetí zmíněný prvek, BVH (Bounding Volume Hierarchy), respektive testy průniků, je to, v případě grafické architektury Nvidia Turing akcelerují specializované jednotky, RT-cores. Podle Archarda lze ale jejich přítomnost nahradit přítomností dostatečného výpočetního výkonu (výpočetní výkon jako takový je potřeba i s RT-cores, neboť ta akcelerují právě jen jeden z kroků raytracingu).
Za neméně důležitý ale Archard označil i rychlý přístup k paměti. Problémem je totiž fakt, že na rozdíl od jiných vykreslovacích technik, které obvykle vznikly a byly optimalizovány v souladu s tím, co je výhodné z hlediska hardwaru a přistupovaly ke konkrétním homogenním blokům dat v paměti, raytracing přistupuje z hlediska obsahu paměti k těmto datům zcela náhodně, takže dosavadní optimalizace k efektivním přístupům k paměti, které byly vyvinuté pro rendering, přicházejí z velké části v niveč.
Tady si dovolím malou odbočku, která však leccos vysvětluje. Zatímco na architektuře Pascal nefunguje raytracing nijak efektivně, architektura Volta přinesla velký posun a to bez ohledu na to, že neintegruje žádná RT-cores. První testy v Battlefield ukazovaly, že dokáže dosahovat výkonu překvapivě blízkého Turingu bez ohledu na „chybějící“ RT-cores. Posun mezi Pascalem a Voltou je navíc vyšší než posun mezi Voltou a Turingem. Čím je to dáno? Nvidia při návrhu Volty upravila strukturu cache takovým způsobem, aby lépe vyhovovala požadavkům raytracingu. Alespoň z dosavadních výsledků se zdá, že tato změna přinesla z hlediska minimalizace výkonnostních propadů po zapnutí raytracingu více než fyzická přítomnost RT-cores (také by se hodilo zmínit, že Turing nemá oproti Voltě navíc pouze RT-cores, ale rovněž efektivnější rasterizér a lépe vybavené Tensor-cores). Samozřejmě každá aplikace může mít různé nároky, jedna může klást větší požadavky na operace prováděné RT-cores, jiná může těžit více z optimalizované cache. Prozatím ale situace vypadá, jak bylo popsáno.
Odstavec, který jste právě dočetli, v podstatě „předvysvětluje“ Archardovo stanovisko, že příští generace konzolí může podporovat raytracing i bez přítomnost specializovaných jednotek. Pokud se toto konstatování zakládá na konkrétních vědomostech o architektuře nadcházejících konzolí, pak lze říct, že tyto konzole sice nemusejí obsahovat hardwarové jednotky, ale to ještě nemusí znamenat, že nejsou optimalizované pro raytracing. Ze všeho, co bylo dosud řečeno, to vypadá, že se s podporou pro raytracing počítá, jen nebude realizována přítomností specializovaných jednotek, ale optimalizací univerzálně využitelných částí hardwaru i pro raytracing.