Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views :
img

Are Ray Tracing vreo șansă?

/
/
/

Săptămâna trecută am pășit într-o nouă eră a gaming-ului. Ideea de Ray Tracing nu mai este doar un simplu concept sau un vis, este realitate, este în jocuri și este disponibil. Sau cel puțin va fi din această toamnă, dacă aveți vreo mie de dolari și nu vă deranjează să jucați pe la 30 de cadre pe secundă. Zvonurile de până acum sugerează că asta ar fi performanța noilor plăci atunci când Ray Tracing este activat. În cazul lui 2080 Ti nu pare a fi cazul, dar pentru un 2070 ar putea fi. Așa că apare întrebarea: Are Ray Tracing vreo șansă?

Hai să începem prin a înțelege mai bine ce este Ray Tracing. Voi face asta cu un clip video pe care l-am mai publicat aici, este unul adorabil, cu Quake 2 redat folosind Ray Tracing. Era rulat pe un Titan X, dacă îmi amintesc bine, și funcționa cu mult sub 60 de cadre pe secundă.

Pe lângă artefactele de compresie video, clipul mai conține și un soi de „pixelare”. Aceasta este provocată de un număr insuficient de raze calculate pentru a reda o imagine completă. De ce este un număr insuficient de raze? Pentru că probabil cu numărul complet ar fi nejucabil. Ray Tracing funcționează prin înlocuirea metodelor tradiționale de redare a luminii… și ca urmare a fiecărui lucru dintr-o scenă 3D, cu o redare autentică a realității. În mod tradițional, Ray Tracing funcționează prin calcularea căii luate de fiecare rază de lumină generată de o sursă de lumină. Astfel sunt redate cu acuratețe perfectă lucruri precum reflecții și umbre. Dar o astfel de metodă este atât de „scumpă” în ceea ce privește resursele, încât este imposibil de făcut în timp real. Așa că folosim o altă metodă, una care sunt destul de sigur că este în uz și la metodele de redare care nu sunt în timp real. Această  metodă presupune ca razele să înceapă de la cameră și sunt trasate înapoi până la sursa de lumină. Procesul este același, dar sunt luate în calcul doar lucrurile pe care camera le va putea vedea. Astfel nu sun calculate degeaba raze care nu vor fi folosite vreodată, iar reflecțiile și umbrele necesare tot sunt vizibile.

Probabil spuneți „Dar avem umbre în jocuri de ani de zile, care e treaba?”. Uitați-vă doar la clipul de mai sus. Acela este Quake 2. După standardele din prezent, arată ca dracu. Dar cu acea iluminare, sunt scene în care poți jura că nu este un joc, ci sunt figurine din carton pe care cineva le mișcă de la un cadru la altul. Îi adaugă un nivel de realism pe care nu a fost menit să îl aibă. Imaginați-vă acest lucru adăugat la un joc menit să arate oarecum realist. Eh, ar fi asta ca un exemplu:

Până la toamnă, singurul mod de-a face acea scenă să funcționeze în timp real era cu un sistem special creat de Nvidia care avea patru plăci video mai scumpe decât venitul meu pe următoarele două decenii. Dar acum este posibil cu o singură placă video. Tot una scumpă, de 1000 de dolari/euro, dar numai una singură. Și este prima generație de plăci video care să includă la nivel hardware suport dedicat pentru Ray Tracing. Dacă vor mai fi alte generații după, atunci prețurile ar putea scădea cândva în viitor.

Dar trebuie să pun acel foarte mare și foarte important „DACĂ”.

Nu mă înțelegeți greșit. Ray Tracing este minunat. E suficient să vă uitați la asta să vă dați seama cât de bine poate să arate:

Vedeți toate acele reflecții, până și în ochiul unui personaj? Acelea nu sunt false. Nu este vorba de o explozie recreată la scară mică în ochiul personajului, care să dea impresia că ar fi o reflecție, ceva ce ar cam fi o metodă de a falsifica o reflecție, pentru că în mod normal n-ar fi ușor de făcut. De ce credeți că atât de multe jocuri au reflecții oribile sau inexistente? Pentru că sunt din ce în ce mai greu de făcut într-un mod care să arate oarecum credibil. Pe vremuri se apelau la tot felul de trucuri pentru a le crea. Metal Gear Solid 2 crea o copie a personajului care se plimba cu capul în jos pe sub o podea semi-transparentă unde se mai afla și o copie a camerei în care te aflai. Sună a fi o procedură costisitoare, dar față de realizarea unui sistem care să țină cont de propagarea luminii cât să genereze în mod normal acea reflecție, era o nimica toată.

Ca să nu mai spun de umbre:

Priviți doar cum arată. Știu că veți spune că avem umbre dinamice încă de la Half-Life 2 sau de la Crysis, dar alea nu erau tocmai umbre realistice. În unele cazuri erau doar lipite de ecranul camerei personajului și nu se propagau cum trebuie în lume. Dar aici, priviți doar cum se propagă în lume, cum interacționează cu alte umbre și cu alte surse de lumină. Sau cu ce viteză se poate trece de la una la alta. Așa ceva ar fi necesitat până acum foarte multă muncă pentru a fi pus la punct și ar fi funcționat doar în scena respectivă. Dar cu Ray Tracing, trebuiesc doar definite sursele de lumină, iar de restul se ocupă calcularea propagării luminii. Reduce efortul de a crea scene realistice enorm de mult pentru dezvoltatori.

Sau… va reduce efortul, pentru că deocamdată nu o face.

Problema este următoarea. Sunt doar trei plăci video în lume care pot să redea Ray Tracing în timp real așa cum trebuie, pentru că au hardware dedicat care să se ocupe de asta. Fără acel hardware, conform testelor făcute de Nvidia, un joc ar merge cam de 6 ori mai lent. Ar fi nejucabil. Aceste plăci video costă de la 500 la 1000 de dolari/euro, în teorie. În practică, vor costa mai mult. Nu există deocamdată suport la nivel hardware pentru Ray Tracing de la Nvidia și nu există la console. Asta înseamnă că dezvoltatorii vor trebui în continuare să implementeze sistemele standard de redare pentru umbre, lumini și reflecții. Nu au cum să folosească doar Ray Tracing… bine, practic nici în aceste demonstrații nu folosesc doar Ray Tracing, ci mai mult o combinație dintre cele două. Dar ideea este că până va exista adopție universală, munca lor se dublează.

Foarte puțini dezvoltatori și mult mai puțini publisheri vor fi dornici să dubleze munca doar pentru ca un segment foarte mic din baza de instalare să poată să se folosească de Ray Tracing. O fac acum, la început, pentru că Nvidia are foarte multă influență asupra industriei. Mai multă decât avea AMD când a propus Mantle. Dar rezultatul va fi același. Dacă nu va exista o adopție la scară largă la nivelul hardware, Ray Tracing va avea în cel mai bun caz aceeași soartă ca Mantle, care a devenit fundamentul pentru Vulkan. Mai probabil ar fi că va avea același viitor ca PhysX. Mai țineți minte PhysX? Acea chestie anunțată cu mare entuziasm de Aegia cu un deceniu și ceva în urmă. PhysX a devenit o componentă integrală a plăcilor Nvidia, fiind folosit ocazional în câteva jocuri. Iar în acest caz este vorba doar de o soluție software, una care, teoretic, poate fi implementată de orice alt GPU. Dar nu este posibil, deoarece Nvidia nu va acorda licențe pentru varianta accelerată de GPU a PhysX, doar pentru varianta de CPU, care este mult mai puțin impresionantă. PhysX tot arată bine, tot este frumos, dar este rar și nu prea este gândit ca o parte integrală a unui joc.

Consolele contemporane nu au suport pentru Ray Tracing. Hardware-ul este mult prea impotent și va rămâne așa dacă nu cumva arhitectura Navi la care lucrează AMD, și care se zvonește că va fi folosită la Playstation 5, include fie putere de calcul suficient de mare încât să rezolve Ray Tracing prin forță brută, fie componente dedicate pentru Ray Tracing. Asta ar putea fi o problemă, pentru că plăcile Turing includ două componente care fac Ray Tracing posibile. Nu doar componenta efectivă de RT, ci și nucleele Tensor, care se ocupă cu umplerea golurilor.

Fiindcă garantat sunt goluri. Tot nu suntem la nivelul la care pot fi calculate direct toate razele necesare pentru a crea o imagine completă. Așa că imaginea este completată cu aproximări, sistemul de deep learning ghicind ce ar trebui să fie acolo. Ocazional poate că va greși, dar poate învăța ce este greșit și poate corecta problema. Nu numai asta, dar va învăța să nu o repete. Fără această componentă, am avea aceleași rezultate care pot fi văzute în clipul de la început cu Quake 2.

Așa că are Ray Tracing vreo șansă? Cu doar trei plăci video atât de scumpe, absolut nici una.

Dar Nvidia a lucrat alături de Microsoft pentru a implementa suport pentru așa ceva în DirectX 12, ceea ce, dacă îmi permiteți o speculație, ar putea însemna că lucrează împreună și la următoarea generație de console. Un Xbox Too (pentru că 2 sau Two ar fi prea mainstream) cu o placă video Nvidia, construită ori pe succesorul lui Turing, ori pe Turing în sine, într-o variantă mai ieftină, nu ar fi improbabil pentru anul 2020. Iar dacă asta se va întâmpla, și Playstation 5 nu va avea o funcție similară cu Navi-ul său, vom vedea ceva ce n-a prea mai fost sesizabil de câțiva ani pe console, capabilități grafice vast diferite. Așa că jocurile făcute de studiourile deținute de Sony și Microsoft ar putea arăta foarte diferit. Dar cele făcute de producători terți? Probabil o vor face de Ubisoft și vor „încerca să o experiență echilibrată între toate platformele”, chiar dacă una evident putea mai mult.

Așa că dacă nu dispare până în 2020, Ray Tracing ar putea avea un viitor strălucit și reflectat în ochii tuturor. Altfel va trebui să așteptăm vreun deceniu până când ajungem la Ray Tracing pe calea brută. Nu de alta, dar știți acel Tessellation care a fost introdus în DirectX 11? Era suportat de plăcile Radeon încă din 2007, pe DirectX 10. Dar până să devină un standard utilizat de toată lumea… de Nvidia mai exact, n-a avut propagare.

Până atunci, putem măcar să ne delectăm cu saltul care s-a făcut din 2010 și până acum, când încerca Intel să facă propria placă video, și se lăuda la acea vreme cu Ray Tracing. Acum ar avea și ei o nouă șansă, din moment ce vor avea o placă video nouă în 2020.

  • Facebook
  • Twitter
  • Google+
  • Linkedin
  • Pinterest

Leave a Comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

This div height required for enabling the sticky sidebar