22/03/20

PlayStation 5 - raytracing


Aj v najnovších hrách nie je možné si nevšimnúť s akými problémami stále bojujú pri spracovaní tieňov. Letíte nad krajinou a vidíte zreteľne hranicu, perimeter, od ktorej to engine proste zareže. Beháte po zemí a sledujete tie koktavé kaskády tieňov meniace kvalitu nedôstojným spôsobom. Tiene sú veľmi náročné na systémové prostriedky mašiny. Ľahko zložia na kolená aj 1000 eurové PC GPU alebo ninja CPU. Dvojica najčastejších techník na ich zvládnutie sú shadow mapping a shadow volumes. Tá prvá je menej technicky náročná ale devastuje úložný priestor, RAM, zbernice a fillrate. Ide v podstate o balík textúr. Ten druhý postup zas zabije vaše CPU, lebo sa pri ňom exaktne presne ráta priestor, do ktorého svetlo nemá vstúpiť. Tieto tiene sú teda presnejšie, krajšie ale výpočetne nenažrané. Môžte ich kombinovať. Môžte použiť aj SDF tiene. Môžte rasterizáciu znasilňovať na iks spôsobov. Vždy to bude iba o hrubej aproximácii s prudko narastajúcou komplexnosťou pri čiastkovom riešení každej banality. V istom bode, ak na to HW má, je vhodnejšie použiť raytracing.

naraz to na PS5 mať nebudete, pekne selektívne

Raytracing /RT/ pritom s tieňami, priame alebo nepriame, vlastne nemá ani nič spoločne. Vznikajú pri jeho použití zadarmo, všade, blízko aj ďaleko a vždy vo výbornej kvalite. Čo je to za zázrak ? Predstavte si hernú scénu. Neosvetlenú. Hádžete tam lúče /raytracing/. Veľa, milióny, miliardy. Letia, odrážajú sa, vždy patrične oslabené podľa vlastnosti materiálu. Tam kde na pixel nedopadne nič alebo málo - ostane pôvodná, úplne alebo čiastočne neosvetlená plocha. A to je všetko. Raytraceované tiene sú vlastne absenciou svetla a vznikajú zadarmo. Geniálne. Pri rasterizáci spracujete scénu vždy minimálne dvakrát. Raz ju nasvietite a potom sa trápite s tieňami. Raytracing to zvláda v jednom priechode a tiene vôbec nerieši.

Grafické karty od Nvidia už prvú generáciu raytracingu úspešne zavádzajú a tlačia sa aj do DirectX špecifikácií. AMD sa na to chystá skočiť v podobe konzol 9. generácie. Je AMD riešenie diametrálne odlišné od NVidia ? Podľa dostupnej dokumentácie sú doslova rovnaké, mínus pár detailov okolo časovej koherencie s keškami. Obe majú raytrace jednotky úzko zviazané s CU /shader engine, registre/ a s textúrovacími jednotkami TMU. Obe akcelerujú BVH / bounding volume hierarchy/, teda uľahčujú traverzovanie lúča scénou vynechaním objektov, ktoré lúč arbitrárne nemusí testovať.

Nvidia pri NV 2080 Ti udáva textúrovací výkon na úrovni 420Gtex/sec a RT výkon zas s cifrou 10 Grays/sec. Index ratio 1:10. Pri XSX si texture fillrate vypočítame takto: 52 x CU x 4 TMU na jednu CU krát 1.825Ghz = 379.6GTex/sec. Veľmi blízko tej 2080TI. Ideme ďalej. Microsoft udáva, že XSX zvládne 380 miliárd BHV operácií za sekundu. Kauzalita s výkonom TMU je "čiste náhodná" a ide o tvrdý limit ako vidíte. Odhad pri XSX s použitím NV prepočtu je, že zvládne 9 Grays/s. Ani PS5 nenechám bokom: 36 CU x 4 TMU na CU krát 2.23Ghz = 321GTex/sec a teoretických 7.6Grays. Pre porovnanie - pri non super NV 2070 udáva Nvidia 5.6Gray/s. Ak vás to teda poteší, tak má PS5 RT výkon niekde okolo hladkej NV2080. Dostatočné na trochu blbnutia s reflexiami alebo s lokálnymi tieňami.

PS5 a XSX sú prvou generáciou konzol s prvogeneračným AMD RT. Musíte byť zhovievaví aj Mark Cerny dobre vie, že RT je v tejto fáze viac gimmick ako plnohodnotná fičúra. Na raytracing použiteľný pre nasvietenie, reflexie, proste všetko naraz čo to len dá - potrebujete aspoň 50 TFLOP GPU so zodpovedajúcím zázemím /shader engines, fillrate, extrémne rýchla RAM, kešky/. Je možné sa k tomu dostať o cca 7 rokov pri zdvojnásobení RT výkonu každé tri roky, bez navýšenia ceny a s prechodom do rutinérskeho mainstreamu.  Možno to však o 7 rokov nebude raytracing ale photon mapping, iný typ globálneho nasvietenia so všetkými finesami sko v skutočnom svete. Najbližšie roky budú o fyzickom vytláčaní rasterizácie z hardvéru a hľadaní konsenzu čo ju nahradí.

No comments:

Post a Comment

**** pre vloženie hypertextového odkazu do komentára použi CSS kód: hyperlink ****