5. 7. 2013

GT aliasing


Nejde ešte o 100% potvrdené informácie. Avšak napriek tomu, že work-in-progress GT6 "academy" demo beží aj vo vyššom rozlíšení 1440x1080=1.56M ako predajná a finálna verzia GT5 - 720p mód: 1280x720=921K  a 1080p mód: 1280x1080=1.38M, tak sa všetci sťažujú ma masívne množstvo artefaktov obrazu. Hranaté zuby, "mihotanie", nestabilita pixelov a čiar a to aj keď sa použil jednak hardvérový /MSAA/ a druhak softvérový SPE /MLAA/ antialiasing. Ako je možné ? Odpoveď vás asi prekvapí - je to paradoxne aj daň za kvalitnejší model nasvietenia, shaders alebo na detaily bohatších textúr !! Ale pekne poporiadku.

 "GT6 runs at 1440x1080p with MSAA 2x + MLAA. I don't know why there is so much shimmering." /pozn.technicky úplne najstaršie "GT5 demo" aka GTHD beží v 1440x1080 bez AA/

Zoberme si najprv nejakú archaickú hru bez textúr v slabomyseľnom rozlíšení 320x240 alebo niečo podobné. Zubaté až strach. Dvihneme rozlíšenie, ak nám to teda hra vtedy umožnila, na špičkových 1024x768 /CRT 4:3 pomer !!/ pridajme MSAA 2-8x a dostaneme brilantne hladký obraz. Žiadne hrany, podprahoveé mihotanie, prelievanie, poskakovanie pixelov. Pridajte však do hry textúry a sme opäť na začiatku. Šialené množstvo artefaktov, bez ohľadu na rozlíšenie alebo MSAA. Ak by ste to dokázali vyriešiť tak tam nahoďte moderné shaders /plus rendertargets/. A sme v tom opäť. Ako je to doprdele možné ?

Vaša CRT/LCD obrazovka to je istá konečná suma fyzických pixelov. Povedzme 1280x720. A na tie mapujete tie virtuálne pixely /texely/. Kolízia v mapovaní texelu na pixelu = napríklad ten shimmering. A je jedno v akom vysokom rozlíšení alebo MSAA bežíte. Chcete to mať ešte zložitejšie ? MSAA nedokáže aliasovať deferred renderery /pravdepodobne 90% dnešných hier/ a tiež vysledok výstupu shaders kódu. Takže odfiltrujete geometriu, nejako odfiltrujete textúry /bilinear, trilinear, anizo/ a potom tam náhadžete shaders /povedme odlesky na kapote/ a bum - shimmering. Nezabudnite - shader je program ktorý počíta FARBU a POLOHU texelu na vašej obrazovke. Kolízia medzi správnou polohou pixelu a texelu = artefakt. High-frequency textures aliasing.

celá plejáda pixel-texel artefaktov, viď napríklad okolitú scénu od 1:10 min, ale nájdete to v každom frejme videa

Ak teda zoberieme GT6 textúru /shader, to je fuk/ o rozlíšení 1024x1024 a ta sa relatívne ku vašej obrazovke rôzne vzďaluje a približuje a zoomuje a rotuje a stláča a deformuje. Tak vaše GPU sa snaží čo najpresnejšie tie texely napasovať na statické pixely obrazovky. Neexistuje jednoduché a pritom dokonalé riešenie aj s ohľadom na dostupný HW a ide o problém, s ktorým sa múdre hlavy trápia už niekoľko desaťročí. Ak si pozriete dobre urobený test ľubovoľnej grafickej PC karty, nádete tam kapitolu venovanú aj kvalite filtrovania textúr /najvyššou bežne dostupnou formou je anizotropné filtrovanie/. Samo AMD ten algoritmus ladí už nekonečne dlho a PS3 GPU ho zďaleka tak dobrý ako dnešné grafiky jednoducho nemá. Plus ako som povedal, riešime ďalší problém /y/ - celé veky používané MSAA sa nedá v moderných enginoch použiť na efekty aplikované práve na tie textúry. Bojujeme teda aj s aliasingom shader kódu na nedostatočne filtrovaných textúrach. V podstate akýkoľvek grafický efekt v GT6 pridaný navyše oproti GT5ke vám môže rozbiť IQ /image quality/ na cucky.

Dnes sa všetci špičkoví kóderi zhodujú, že čiste hardvérový antialiasing je mŕtvy /MSAA/ a budúcnosť sú sofistikované softvérové postupy. Vidíme to už v tejto generácií konzol a prakticky každá PS3 only hra od SONY first parties používa nejaké custom riešenie /God of War, Killzone, GT, Resistance, LBP/. Problémom GT6 teda nie je rozlíšenie obrazu ale príliš veľa obrazových texel kalkulácií na pixel a limity viac ako 7 rokov starej grafickej karty. Ak viete, kde sa máte pozerať, tak identické "grafické chyby" nájdete aj v každej PC hre a je jedno v akej ninja vysokej kvalite vám to beží. Pozriem a vidím. Netreba však prepadať panike. Existujú postupy ako pixel-texel problémy v slušnej podobe prekonať. Po pravde tých riešení vzniká denne asi desať. Hyperbola. Chce to však "trošku" výkonnejší HW, lepšie API a nové programovacie postupy. Prípadná PS4 verzia GT6ky bude mať o dosť hladší obraz bez do očí bijúcich artefaktov ako PS3 aj keď si to porovnáte v tomto istom fyzickom rozlíšení spomenutom na začiatku.