Quake II RTX: ray tracingová laboratoř
5.2.2020, Jan Vítek, recenze
Dnes se podíváme i z praktického hlediska na téma ray tracingu ve hře Quake II. Ta má svou éru již dávno za sebou, ovšem právě kvůli její celkové nenáročnosti se mohli vývojáři slušně rozšoupnout s implementací ray tracingu.
Kapitoly článku:
- Quake II RTX: ray tracingová laboratoř
- Platforma NVIDIA RTX
- Quake II RTX a path tracing
- Ray tracing hry Quake II RTX v praxi
- Je o co stát?
- Nastavení grafiky: škálování rozlišení a šum
- Nastavení grafiky: odrazy a lomy světla vs. hloubka
V nastavení grafiky se nejprve ubezpečíme, že máme jako renderer zvolen rtx a ne prosté API OpenGL a pak si můžeme zvolit rozlišení, zapnout čítač snímkovací frekvence, změnit úhel pohledu a v resolution scaling si můžeme zapnout dynamické nastavení rozlišení renderovacího obrazu s cílem docílit jisté snímkovací frekvence. Anebo můžeme zvolit fixní rozlišení, přičemž na to se hned podíváme.
Máme tu ale ještě ostatní nastavení, kde je TAA (Temporal Anti-Aliasing), využití globálního osvícení scény, hloubka odrazů a lomů světla, respektive počet počítaných paprsků (1 až 8), security cameras ukáže na monitorech ve hře aktuální dění zabírané kamerami a pak je tu několik jasných voleb: caustics (získaný nádech světla, které prošlo zbarveným sklem), god rays (volumetrické světlo), bloom (světelná aura), denoiser (odstranění šumu), textures (zapnutí/vypnutí textur), thick glass refraction (lámání světla v tlustých sklech), projection (cylindrical/perspective pro majitele širokoúhlých monitorů) a nakonec je to podpora více GPU a GPU profiler, který nám právě na obrazovce ukáže, co a jak dlouho při vykreslování snímků trvá (viz 4. kapitola).
Škálování rozlišení vs. OpenGL, šum a Photo Mode
Škálování rozlišení dokáže značně ovlivnit výsledek, přičemž hra se ve výchozím nastavení bude snažit udržet 60 FPS tak, že nastaví rozlišení mezi 50 a 100 %. My si ale můžeme manuálně nastavit až 200 %, přičemž jeden by očekával, že renderované scény budou dostatečně ostré právě už na 100 %, ale to neplatí a příčinu mohou ukázat následující screenshoty zabírající stále stejnou scénu.
Quake II pod OpenGL - klikněte pro zvětšení -
Nejdříve tu máme jen pro další ukázku původní verzi hry renderovanou pod OpenGL, která zcela postrádá textury ve vyšším rozlišení a je také velice odlišně nasvícená, až se ani nezdá, že jde ve skutečnosti o prostor s otevřeným stropem pod volným nebem.
Dále tu máme už RTX verzi, ovšem bez finálního odstranění šumu v obrazu, který je skutečně velice výrazný a pokud si uvědomíme, že pouze pomocí následného odstraňování šumu máme dostat následující výsledek, není pak ani divu, že můžeme přitom přijít o detaily, respektive to přispěje k celkově rozmazanému výsledku. Pokud zapneme bez redukce šumu 200% rozlišení, pak se rozdíl na obrazovce neukáže, neboť ta takové rozlišení pochopitelně nemá jak ukázat, ovšem algoritmy pro denoising pak s ním mohou pracovat a ve výsledku zobrazit mnohem lepší výsledek. Ukazují to dva následující obrázky.
100% rozlišení - klikněte pro zvětšení -
200% rozlišení - klikněte pro zvětšení -
Můžete si rozkliknout snímky v plném rozlišení, anebo se podívat na následující výřezy, kde je vidět to podstatné. Nastavení rozlišení na 200 % nám prostě zajistí pěkně ostrý výstup, který je jinak ve 100% rozlišení znatelně rozmazaný i pro oko, které do té doby nevidělo lepší nastavení. Problém je však ten, že i v tak staré a nenáročné hře bude 200% rozlišení s RTX představovat obrovskou zátěž a na snímku nahoře můžeme dobře vidět, jak se snímkovací frekvence propadla na nehratelných 15 FPS.
100% rozlišení - detail
200% rozlišení - detail
Nakonec ještě ukážeme stejnou scénu zachycenou s využitím fotografického režimu, který nevyužívá vyhlazování, ale aproximaci z mnoha stále stejných a dokola renderovaných snímků, a to s tím, že zde máme zrovna zaostřeno na onen sloup s displeji.
fotografický režim - klikněte pro zvětšení -
Po zobrazení plné verze snímku zjistíte, že ostrost podání a detaily jsou někde mezi 100 a 200% rozlišením s vyhlazováním. Je to vcelku pochopitelné, když se podíváme na jiné části obrazu, které ještě zdaleka nebyly zbaveny šumu, a to byl daný snímek tvořen přibližně devět sekund, což nám při 58 FPS dělá cca 500 vykreslených snímků, což odpovídá výchozímu nastavení. Pokud tak někdo bude potřebovat kvalitnější výstup z foto režimu, může si v menu nastavit až 8000 snímků. Přibližně 3000 ovšem už stačí na výstup bez přehnaného šumu, ovšem s rostoucím počtem bohužel roste i počet artefaktů, které vypadají jako shluk vadných pixelů či subpixelů.
A že můžeme v Photo Mode dosáhnout velice slušné ostrosti i na 100% rozlišení, na to ukáže následující výřez, v němž už bylo zaostřeno na vzdálenější zelené obrazovky. Šum je opět stále velice patrný, ale ostrost je daleko lepší než při běhu hry s využitím denoiseru.
fotografický režim - detail
Právě to tak ukazuje na jednu z ne příliš často zmiňovaných nevýhod ray tracingu či path tracingu pro rendering veškeré grafiky: je třeba se zbavit šumu, což znamená neostrý výsledek.