De la anunțul Nvidia din 2018 privind plăcile sale grafice RTX din seria 20, caracteristica sa ucigașă, „ray tracing” a fost un termen popular în cercurile jocurilor video. Dar poate fi dificil de înțeles ce este ray tracing, cum funcționează și de ce arată mai bine decât tehnicile anterioare.
Ce este ray tracing și cum funcționează?
În lumea reală, când vezi ceva, ceea ce vezi este un foton de la o sursă de lumină. În drum spre tine, este posibil ca acel foton să fi fost reflectat de una sau mai multe suprafețe. Fiecare reflecție schimbă caracteristicile luminii care ajunge în ochii tăi.
Soarele emite o gamă largă de culori de lumină, fiecare suprafață absoarbe o parte de lumină și reflectă altele. Ceea ce vedem ca o suprafață verde, cum ar fi o frunză, apare așa, deoarece reflectă în mare parte lumina verde. Dacă lumina care se reflectă de pe frunze lovește o altă suprafață, cum ar fi un perete alb, atunci acea suprafață va arăta ușor diferită decât ar fi dacă ar fi o lumină albă pură care strălucește pe ea. Fiecare reflecție afectează fiecare suprafață viitoare cu care interacționează lumina, schimbându-i intensitatea și culoarea vizibilă.
Ray tracing este o tehnică grafică care urmează aceleași principii. Sunt proiectate razele de lumină, sunt calculate proprietățile luminii reflectate și refractate, cum ar fi culoarea, iar raza continuă să călătorească.
În lumea reală, fiecare sursă de lumină, cum ar fi un bec sau Soarele, emite fotoni în toate direcțiile, marea majoritate dintre care nu ajung niciodată în ochii tăi. Simularea acestui lucru ar fi un proces nebun de intens, care produce un rezultat în mare parte irosit. Pentru a reduce volumul de lucru, ray tracing funcționează invers, proiectând razele de la cameră. Fiecărei raze i se permite să parcurgă o anumită distanță fără reflectare sau să reflecte de un anumit număr de ori înainte ca calculele să fie efectuate și valoarea pixelului să fie setată.
De exemplu, o rază este aruncată din perspectiva privitorului, atunci când lovește un perete alb, un algoritm generează recursiv un raza reflectată care trece apoi printr-un panou de sticlă albastră, în cele din urmă, raza reflectată lovește o sursă de lumină albă și este absorbit. Sticla albastră absoarbe toată lumina albastră, care aruncă o lumină albastră pe perete, ceea ce duce la colorarea pixelului în albastru.
De ce Ray Tracing arată mult mai bine?
Metoda standard de redare a scenelor în timp real implică utilizarea hărților de lumină precalculate și a luminii întregii scene. Unele jocuri folosesc iluminarea volumetrică limitată pentru a include surse de lumină în mișcare și pentru a permite umbre dinamice, această tehnică este folosită cu moderație, deși, deoarece necesită un proces destul de intens.
Tracingul de raze poate obține un rezultat fotorealist dacă se lucrează suplimentar în etapa de proiectare a jocului. Dacă toate suprafețele includ detalii precum reflectivitate, transparență și modul în care lumina se va refracta prin ele, rezultatul general poate părea mai natural. Deși această abordare implică în mod evident mai multă muncă la etapa de proiectare a jocului, ea permite să apară rezultatul fotorealist, cu lumina reacționând așa cum ar trebui atunci când se reflectă pe beton, metal, lemn și sticlă etc.
Tracingul razelor permite proiectarea reflexelor și umbrelor precise ca parte a procesului de randare. în metodele tradiționale de randare, ambele aceste efecte sunt în întregime opționale și pot cauza atingeri semnificative de performanță.
Ray tracing în sine vine cu un succes masiv de performanță. Până când plăcile grafice Nvidia RTX au fost anunțate cu accelerare hardware pentru ray tracing, s-a crezut că că puterea de procesare necesară pentru a efectua ray tracing în timp real în software a fost de mai mult de un deceniu departe. Chiar și cu accelerarea hardware, ray tracing încă provoacă o scădere semnificativă a performanței, deoarece este încă cea mai lentă parte a redării unui cadru.