Tehnologia RTX: ce este, cum funcţionează şi cum ar putea influenţa dezvoltarea jocurilor video

Vă mai aduceţi aminte când aţi avut ocazia prima oară să rulaţi un joc pentru PC cu ajutorul unui accelerator 3D? Diferenţele dintre versiunea renderizată software, “2D” dacă vreţi, a unui titlu precum clasicul Quake şi acelaşi joc redat cu ajutorul unui accelerator 3D precum bătrânul 3dfx Voodoo erau imense, ca de la cer la pământ, poate mai mari chiar decât atunci când s-a trecut de la display-urile monocrome (CGA) la cele color (EGA si, mai apoi, VGA).

Sfârşitul anilor ’90 a marcat o nouă bornă în evoluţia graficii redate în timp real cu ajutorul unui PC, NVIDIA lansând GeForce 256, primul GPU (graphics processing unit) din lume, un cip capabil să realizeze operaţiunile de tip T&L (transform & lighting) accelerate prin intermediul hardware-ului propriu-zis, ridicând sarcini solicitante de pe “umerii” procesorului.

Impactul vizual nu a putut fi neglijat, facilităţile oferite de o asemenea tehnologie permiţând utilizarea mai frecventă a rezoluţiilor mai mari (faţă de obişnuitele 640x480 şi 800x600 de la acea vreme), precum şi a afişării cu o adâncime de culoare de 32 biţi, cu un spectru de culori mult mai generos decât cel aferent unei redări în 16 biţi (peste 16 milioane de culori, faţă de doar 65536), fără pierderi semnificative de performanţă. De altfel, acest pas şi-a lăsat amprenta mai ales asupra performanţei, “rescriind regulile” pentru dezvoltatorii de jocuri, cipul video începând să fie folosit pentru a îndeplini sarcini care, până atunci, depindeau exclusiv de procesor.

La doar doi ani după acest moment, NVIDIA a rescris din nou “regulile jocului”, lansând cipurile din familia GeForce 3. Acestea au permis, pentru prima oară în istorie, programarea la nivel de pixel şi vertex a shaderilor (efecte aplicate peste anumite obiecte texturate, ca o descriere foarte simplistă, cum ar fi modul în care strălucesc anumite suprafeţe metalice). Această nouă evoluţie tehnologică a fost repede adoptată de întreaga industrie, un cip grafic NVIDIA cu facilităţi asemănătoare fiind implementat şi în prima generaţie de console Xbox.

Am compus această scurtă introducere tocmai pentru a scoate în evidenţă aceste momente cruciale din istoria graficii 3D pe PC, dar şi faptul că, de la introducerea pixel şi vertex shaderilor programabili, nu am mai avut parte decât de evoluţii ale acestor tehnologii, nu şi de revoluţionarea completă a acestor concepte. Până acum.

RAY TRACING VS. RASTERIZATION

Este de ajuns să arunci o privire împrejur, în lumea reală, ca să înţelegi, în mare, cum funcţioneaza propagarea luminii: sursele de iluminare emit “raze” de lumină, care, în funcţie de materialele cu care “se intersectează”, pot fi reflectate în alte direcţii, iar în porţiunile în care acestea nu reuşesc să ajungă îşi fac apariţia ceea ce numim “umbre”.

Iar, în ceea ce priveşte grafica 3D computerizată, niciun element nu conferă o doză de credibilitate mai sporită decât o iluminare redată într-un mod realist. În acest scop, pe principiile descrise mai sus, a luat naştere tehnica de renderizare Ray Tracing, ce se foloseşte de “raze” de “lumină virtuală” pentru a ilumina, într-o manieră realistă, scenele 3D. Această metodă de abordare a renderizării unei imagini tridimensionale este însă deosebit de costisitoare din punct de vedere hardware, imposibil de folosit într-un context ce se desfăşoară în timp real.

Cu alte cuvinte, pentru a obţine o imagine cât mai apropiată de realitate, realizatorii unor scene 3D statice îşi pot permite să “cheltuie timp”, existând şi situaţii când renderizarea unor astfel de proiecte poate lua ore întregi, în funcţie de complexitatea lucrurilor afişate, chiar şi pe configuraţii hardware mult peste medie. Când deja e nevoie de grafică 3D în mişcare, cu un asemenea nivel de precizie a detaliilor (cum ar fi efectele speciale din anumite filme), se folosesc adevărate ferme de renderizare, zeci sau sute de computere lucrând împreună pentru a obţine efectul dorit, cadru cu cadru (un film rulează de obicei cu 24 de cadre pe secundă).

Aplicarea unui astfel de scenariu într-un joc video, unde în majoritatea cazurilor jucătorul poate schimba perspectiva de oricâte ori doreşte, şi care trebuie să menţină un framerate minim de măcar 30 de cadre pe secundă, este considerată imposibilă, mai ales în condiţiile în care gamerii nu au acces la ferme de renderizare şi, de foarte multe ori, nici măcar la hardware individual de top.

Astfel, s-a ajuns la un compromis, o tehnică de renderizare numita “rasterization”, care simplifică mult “datele problemei”. Ca o explicaţie nu neapărat exactă, însă pe înţelesul tuturor, aşa-numitul “rasterization” proiectează o scenă 3D într-un plan bidimensional, aferent suprafeţei de afişare a unui ecran, calculele necesare pentru iluminarea şi redarea imaginii rezultate fiind astfel mult mai simplu de realizat şi, implicit, mult mai “accesibile” pentru hardware-ul ce se regăseşte în mod curent în computerele noastre de zi cu zi. Rezultatele dobândite astfel nu sunt nici pe departe la fel de realiste, dar sunt suficient de rapid de obţinut pentru a putea fi folosite într-un mediu redat în timp real, caracteristic jocurilor video.

NVIDIA RTX: RAY TRACING “HIBRID”

Aici intră în scena noua arhitectură Turing folosită de proaspăt lansata gama de plăci video NVIDIA GeForce RTX. Prin intermediul acestei noi generaţii, inginerii de la NVIDIA şi-au propus să realizeze “imposibilul” şi să aducă beneficiile vizuale caracteristice unei renderizări de tip Ray Tracing în cadrul jocurilor video actuale şi viitoare. Pentru a atinge acest obiectiv, s-a recurs la o politică de “hibridizare”, prin intermediul căreia “scheletul” unei scene tridimensionale este afişat în continuare prin intermediul “tradiţionalului” rasterization, calculele caracteristice redării anumitor porţiuni (cum ar fi reflexiile sau umbrele) fiind însă realizate prin Ray Tracing, cu o precizie mult peste standardele cu care am fost obişnuiţi până acum.

RTX OFF RTX ON

Spre exemplu, să ne oprim un pic asupra reflexiilor din jocuri, care se regăsesc din plin pe suprafeţe gen apă, bălţi, oglinzi etc. Până la apariţia RTX, producătorii de jocuri au avut la dispoziţie o sumedenie de tehnici alternative de a realiza acest gen de efecte, cum ar fi cele simpliste, precum cube mapping-ul (reflexia unui cub prerenderizat, ale cărui texturi de pe feţele interioare încearcă să reproducă mediul înconjurător), sau mai complexe, cum ar fi “render to texture”, un proces de renderizare suplimentar, aplicat însă suprafeţei texturate ce ar trebui să reflecte mediul înconjurător şi nu ecranului propriu-zis. Această ultimă metodă este însă foarte costisitoare, dublând practic necesarul de obiecte ce trebuie afişate în acelaşi timp.

Cea mai folosită tehnică actuală pentru reproducerea suprafeţelor reflectorizante este reprezentată de aşa-numitele “screen space reflections”, capabile de a oferi o iluzie optică destul de credibilă. Problema acestei metode este imposibilitatea de a reflecta obiectele care nu sunt afişate în acel moment pe ecran. Cu alte cuvinte, o băltoacă virtuală va fi capabilă să reflecte lumina soarelui doar dacă jucătorul “prinde în acelaşi cadru” şi balta şi astrul propriu-zis. De asemenea, într-un joc first person, o oglindă ce foloseşte “screen space reflections” nu poate reflecta imaginea privitorului, pentru că modelul acestuia pur si simplu nu este afişat pe ecran în acel moment.

RTX OFF RTX ON

RTX oferă o soluţie mult mai elegantă prin intermediul reflexiilor realizate cu ajutorul tehnicilor de Ray Tracing. Astfel, chiar dacă un model nu este vizibil pe ecran, “razele” de care aminteam mai devreme sunt calculate şi “în spatele scenei”, într-un mediu complet tridimensional, putând determina astfel unde este plasat respectivul model în spaţiu, ce orientare are etc., acesta fiind, apoi, pur şi simplu reprodus pe suprafaţa reflectorizantă. De altfel, această implementare este deja folosită de jocul Battlefield V, diferenţele dintre reflexiile redate cu ajutorul tehnicii “screen space reflections” şi cele afişate cu ajutorul tehnologiei de Ray Tracing RTX fiind evidente şi în imaginile cuprinse în acest articol.

Alte efecte unde RTX îşi poate aduce aportul sunt cele de iluminare globală sau ambient occlusion realizate cu ajutorul tehnicilor Ray Tracing. Nu mai avem mult de aşteptat până când le vom vedea la lucru, viitorul first person shooter post-apocaliptic Metro Exodus (aşteptat la mijlocul lunii februarie 2019) promiţând să implementeze versiunile bazate pe Ray Tracing ale ambelor efecte. Până atunci însă, putem specula la nivel teoretic beneficiile pe care iluminarea realizată cu ajutorul Ray Tracing-ului le poate aduce pentru dezvoltatorii de jocuri precum 4A Games (autorii seriei Metro): iluminarea unei scene în mod realist ar urma să devină o sarcină mult mai simplă pentru artiştii 3D din spatele jocului, care, de foarte multe ori, sunt nevoiţi să simuleze modul în care se propagă lumina în realitate prin plasarea de surse de iluminare suplimentare, necesare pentru a conferi un aspect autentic.

RTX OFF RTX ON

Redarea realistă a umbrelor poate fi, la rândul său, îmbunătăţită în mod drastic atunci când se alege reproducerea acestora prin intermediul tehnicilor de Ray Tracing, o implementare în acest sens fiind aşteptată de la studioul Eidos Montreal, prin intermediul unui viitorul update pentru jocul Shadow of The Tomb Raider.

INTELIGENŢA ARTIFICIALĂ ÎN PRIM PLAN

Pe lângă efectele de Ray Tracing efectuate în timp real, arhitectura Turing aflată la baza noilor plăci video NVIDIA GeForce RTX se face remarcată şi graţie noilor core-uri Tensor, proiectate pentru a se ocupa de sarcinile ce ţin de procesarea prin intermediul Inteligenţei Artificiale.

Inteligenţa Artificială (“Artificial Intelligence” sau AI, pe scurt) este un termen din ce în ce mai prezent în vocabularul de zi cu zi al pasionaţilor de tehnologie. În timp ce Google foloseşte rutine AI pentru a controla o sumedenie de parametri ai sistemului de operare Android 9 Pie, iar companii precum Huawei folosesc camerele ajutate de AI pentru a determina natura obiectului ce urmează să fie fotografiat, NVIDIA îşi utilizează experienţa în domeniu pentru a propune o nouă metodă de post-procesare a imaginii: DLSS (Deep Learning Super Sampling).

DLSS are un rol dublu în jocurile în care urmează să fie folosit: pe de-o parte, DLSS poate înlocui anumite tehnici actuale de Anti-Aliasing (eliminarea “marginilor zimţate” din scenele 3D), cum ar fi TAA (Temporal Anti-Aliasing), oferind rezultate mai bune. Procedeul de funcţionare este simplu: “în spatele uşilor închise”, cei de la NVIDIA “antrenează” o reţea neuronală artificială, prezentându-i acesteia mii de capturi de ecran dintr-un anumit joc, atât în versiuni standard, neprelucrate în niciun fel, cât şi în variante ce au aplicat un filtru super sampling 64x (o metodă de anti-aliasing foarte, foarte solicitanta d.p.d.v. hardware, însă şi foarte exactă). După analizarea acestor mostre, pe baza informaţiilor acumulate, inteligenţa artificială va fi capabilă să aplice singură filtrul de super sampling unei imagini neprelucrate. Se vor realiza pachete de astfel de informaţii pentru fiecare joc în parte, ce urmează să fie distribuite către utilizatorii finali prin intermediul driverilor Game Ready şi al aplicaţiei GeForce Experience.

Sarcina va fi apoi preluată de core-urile Tensor, care, pe baza informaţiilor primite, pot aplica filtrul DLSS în jocurile ce oferă suport pentru această tehnologie. Resursele hardware consumate la nivel de utilizator final sunt astfel mult mai reduse decât dacă s-ar încerca impunerea brută a unei soluţii asemănătoare. De altfel, optimizarea repartizării resurselor hardware în procesul de redare a unui joc video stă şi la baza celui de-al doilea rol pe care DLSS îl poate îndeplini.

Afirmaţiile celor de la Sony sau Microsoft conform cărora consolele PlayStation 4 Pro sau Xbox One X ar fi capabile de rularea celor mai noi jocuri în rezoluţie 4K ne-au stârnit, la început, cel mult un zâmbet ironic, conştienţi fiind de resursele hardware necesare pentru a îndeplini o asemenea sarcină. Şi totuşi, producătorii de console şi jocuri au găsit tehnici alternative de “reconstrucţie” a unei imagini 4K din informaţiile reieşite dintr-un cadru de rezoluţie inferioară.

Una dintre acestea este deja faimoasa metodă “checkerboarding”: închipuiţi-vă imaginea, compusă din pixeli, drept o tablă de şah; hardware-ul propriu-zis lucrează doar pentru renderizarea căsuţelor (pixelilor) albe de pe tabla de şah (jumătate din totalul acestora), în timp ce căsuţele (pixelii) negre (cealaltă jumătate) sunt aproximate pe baza informaţiilor din cadrul anterior. Astfel, după cum au demonstrat-o deja jocuri foarte impresionante din punct de vedere vizual, cum ar fi Horizon: Zero Dawn sau God of War, se pot obţine imagini cu rezultate calitative foarte apropiate de cele 4K native.

Bazându-se pe algoritmul de funcţionare al DLSS, alternativa NVIDIA poate procesa imagini de rezoluţie inferioară pentru a obţine rezultate aproape identice cu cele renderizate nativ în rezoluţie 4K. Astfel, folosind Deep Learning Super Sampling, un joc procesat intern la rezoluţie 1440p (2560x1440) poate fi afişat în 4K (3840x2160), fără pierderi calitative semnificative, dar cu o bună parte a resurselor hardware eliberate în vederea folosirii acestora în alte scopuri (framerate mai bun, efecte cu precizie crescută etc.). Unealta de benchmark a jocului Final Fantasy XV: Windows Edition încorporează deja această implementare de DLSS.

Deep Learning Super Sampling (DLSS) urmează să-şi facă apariţia în jocuri viitoare, cum ar fi Serious Sam 4: Planet Badass, Anthem sau Atomic Heart, dar şi în titluri deja existente (PlayerUnknown’s Battlegrounds, Shadow of the Tomb Raider, Hellblade: Senua's Sacrifice etc.) prin intermediul unor viitoare update-uri.

SHADING VARIABIL: OPTIMIZARE “LA SÂNGE”

Odată cu migrarea din ce în ce mai evidentă către rezoluţiile mari de tip 4K sau folosirea dispozitivelor de realitate virtuală (care, la rândul lor, folosesc rezoluţii peste medie), s-a pus problema optimizării suplimentare a modului în care sunt alocate resursele hardware în anumite jocuri. Şi, folosind drept concept de bază modalitatea în care, într-un joc VR, privirea utilizatorului este îndreptată mai mereu spre centrul perspectivei sale, şi cum nu este nevoie ca şi elementele cuprinse doar de vedere periferică să beneficieze de acelaşi nivel de detaliu precum cele centrale, s-a ajuns, odată cu gama RTX, la ideea de Variable Rate Shading (VRS, pe scurt).

După cum îi lasă de înţeles şi denumirea, Variable Rate Shading încurajează redarea avansată a shaderilor doar în anumite porţiuni ale fiecărei imagini, cele importante, care atrag atenţia, se află în mişcare etc. De altfel VRS beneficiază de trei metode de implementare. Prima dintre acestea este Motion Adaptive Shading (MAS) şi prioritizează obiectele pe care jucătorul este nevoit să le privească în mod constant pe ecran, în detrimentul celor aflate în mişcare rapidă (cum ar fi modelul maşinii pilotate, într-un joc de curse, faţă de mediul înconjurător, care, la viteze mari, cu greu poate fi observat în detaliu de jucător).

O a doua metodă de a folosi VRS este Content Adaptive Shading (CAS), unde obiectele aflate în câmpul de vedere al jocului sunt “ierahizate”, în funcţie de nivelul lor de complexitate, vizibilitate etc. Astfel, unele suprafeţe mai puţin detaliate precum pereţii goi sau zonele umbrite, care rămân neschimbate la trecerea de la un cadru la următorul, nu au nevoie de o reprezentare la fel de precisă, informaţiile de shading putând fi omise, calculate cu o precizie mai mică sau preluate de la cadrele anterioare. Pentru a spori la maximum performanţa unui joc, producătorii au şi opţiunea de a combina efectele celor două metode: MAS şi CAS.

Cea de-a treia metodă, Foveated Rendering, va fi mai puţin întâlnită, fiind dependentă de monitorizarea punctului în care jucătorul priveşte într-un titlu VR sau prin folosirea unui dispozitiv de tip eye-tracker cum sunt cele de la Tobii în jocurile redate pe un monitor tradiţional. Evident, aria de interes astfel determinată va primi mai multa atenţie, în detrimentul celorlalte zone.

PERFORMANŢA ŞI UN NOU “PUNCT ZERO”

Dacă aţi urmărit cu atenţie toate cele amintite în paragrafele anterioare, aţi putut observa cu uşurinţă că una dintre priorităţile celor NVIDIA în privinţa gamei de plăci video GeForce RTX a fost implementarea a cât mai multe metode eficiente de a optimiza viitoarele jocuri, încurajând astfel ca producătorii să-şi aloce resursele într-o manieră mai organizată decât poate au făcut-o în trecut.

Iar această orientare către optimizare nu este întâmplătoare: după cum am amintit în partea de început a acestui articol, metodele de a folosi Ray Tracing-ul în timp real sunt foarte solicitante pentru hardware, discrepanţele de performanţă dintre modurile de afişare cu aceste efecte pornite (RTX On) şi cele în care această opţiune este dezactivată (RTX Off) fiind, la rândul lor, mai mult decât evidente. Se poate merge până în punctul în care, în jocul Battlefield V, cu modelul cel mai accesibil ca preţ (GeForce RTX 2060), să nu se poată menţine un framerate constant de 60 de cadre pe secundă, cu RTX pornit, nici atunci când scădem din detalii şi menţinem o rezoluţie modestă de tip 1080p (1920x1080). De asemenea, producătorii lui Metro Exodus au avertizat că implementarea lor pentru iluminarea globală redata prin Ray Tracing a fost gândită pentru o rezoluţie de 1080p, chiar şi în cazul în care jocul va fi rulat pe plăcile video de top ale gamei RTX.

Într-o eră în care televizoarele Ultra HD domină deja piaţa, monitoarele 4K sunt din ce în ce mai prezente, iar ratele acestora de refresh au depăşit de mult bariera celor 60Hz, rezoluţia 1080p şi un framerate de numai 60fps pot părea uşor ridicole. Să nu uităm însă că ne aflăm încă la începutul acestui nou ciclu, numeroase optimizări şi profiluri de jocuri pentru DLSS urmând să fie livrate în viitor, prin intermediul actualizărilor de driveri.

Practic, am putea spune că ne aflăm iaraşi într-un nou “punct zero” al graficii 3D din jocurile pentru PC, această reorientare către implementarea în timp real a rutinelor de Ray Tracing având potenţialul de a schimba, pentru totdeauna, nu doar modul în care utilizatorii vor consuma produsele digitale de divertisment, dar şi modalitatea în care acestea vor fi concepute de către studiourile dezvoltatoare. Şi, ca orice început de drum, dâmburile şi eventualele obstacole de care ne vom lovi nu trebuie să ne descurajeze, obiectivul fiind, până la urmă, atingerea destinaţiei finale. Rămâne de văzut daca o vom face pe parcursul generaţiei actuale de cipuri video sau dacă vom fi nevoiţi să aşteptăm o maturizare a acestor tehnologii. Important este însă că această călătorie a început: RTX On.