Egy játék világát minél valósághűbben leképezni nem éppen egyszerű feladat. A valóságban nagyjából úgy látjuk magunk körül a világot, hogy a fényforrásokból végtelen mennyiségű foton áramlik szét a környezetre, amik aztán különböző objektumokkal találkozva részben visszaverődnek, részben vagy egészben pedig elnyelődnek. Mindez az adott dolog molekuláris felépítésétől függ.

Ezt a fajta végtelenséget persze szimulálni nem lehet, és még megközelíteni is nagyon nehéz, főleg akkor, ha valós időben, mondjuk egy videojátékban szeretnénk valami hasonlót elérni.

Éppen ezért a játékfejlesztők nem is igazán próbálkoztak vele, hanem az évtizedek során alternatív módszereket dolgoztak ki. Ezek elég meggyőzőek ahhoz, hogy "átverjék" a játékos szemét, de végső soron akkor is csak egy átverésről, utánzásról beszélünk, ami a valóságot próbálja meg egyfajta bűvésztrükként eladni.

Ezt a folyamatot nevezzük raszterizációnak, aminek a kiindulási alapját nem az objektumok, a felületek és a fotonok adják, hanem a polygonok, vagyis az objektumokat alkotó háromszögek, amiből a raszterizáció során végül 2D-s képkockák formájában megkapjuk a végeredményt a monitorunkon. Azonban a végső kép csak a "valóság illúziója", ahol minden felületre shaderek kerülnek az objektum anyaga alapján, és egy csomó kiegészítő technológiával próbálnak meg a fejlesztők "mélységet" és "részletességet" adni a képnek, illetve próbálják meg minél hatékonyabban és finomabban megvalósítani az árnyékokat és tükröződéseket, utánozni a fény viselkedését. Itt jönnek be az olyan misztikus dolgok, mint a shadow mapok, tesszelláció, ambient occlusion, screen space reflections és társai. 

Galéria megnyitása
Galéria megnyitása

Metro Exodus ki- és bekapcsolt RTX-effektekkel

Alapvetően ez megfelelő eredményt hoz, és a modern GPU-kon rendkívül gyorsan működik, de mivel mégiscsak szemfényvesztésről van szó, számos hiányossággal bír. Nehéz kezelni a dinamikus fényforrásokat és azok hatásait a környezetre, a tükröződések sok esetben csak a képernyőn látható dolgokat veszik figyelembe, a fény nem úgy "terjed" és verődik vissza, ahogy kellene neki, és a különböző felületek bevilágítása is csak egy bizonyos szintig működik (például, ahogy az emberi bőr részben elnyeli, részben visszaveri a fényt).

Galéria megnyitása

Szó szerint képbe jön a sugárkövetés

A ray-tracing, vagyis a sugárkövetés nem egy új dolog. A filmes CGI effektusokhoz vagy éppen teljesen CGI-filmekhez (például Pixar) már régóta használják, hiszen ezzel lehet igazán közel kerülni ahhoz, ahogy a fény a valóságban terjed, és ahogy a valóság megjelenik előttünk.

A sugárkövetés alapvető lényege, hogy a jelenetben található minden egyes fényforrásból egy véletlenszerű (nagy) mennyiségű sugarat lövünk és követjük az útját, amint nekiütközik különböző felületeknek, majd elnyelődik vagy visszaverődik azokról. Fontos követni azt is, hogy milyen szögben csapódik neki a felületnek, milyen anyaggal találkozik, hiszen ettől például megváltozhat a visszavert fény színe, amit tovább kell követni, ismét csak több sugárral. Ezt a folyamatot addig kell csinálni, amíg a sugár el nem hagyja a jelenetet és nincs többé rá szükség.

Ez persze kiváló eredményt ad, csak éppen rendkívül pazarló, ugyanis a legtöbb kilőtt sugár semmi olyannal nem találkozik, ami a (videojátékoknál maradva) a játékos számára érdekes lenne.

Így a gyakorlati megvalósításban a dolog úgy történik, hogy az egész folyamatot megfordítják, és a játékos szemszögéből, vagyis a kamerából lövik ki a sugarakat, amik fordított utat járnak be, így csak azokat a sugarakat kell követni, amik ténylegesen hozzátesznek valamit az adott jelenethez. Ezek aztán szépen elpattognak egy képernyőn, és elérnek egy fényforráshoz, vagy elhagyják a képet.

És akkor ezen a ponton jutunk el odáig, hogy a DirectX 12 DXR kiegészítésével a sugárkövetés ilyen szinten történő megvalósítása szabványosítottan rendelkezésre áll. Ez azt jelenti, hogy a GPU ki tudja számolni az ehhez szükséges műveleteket akár a hagyományos stream processzorokon is a compute shaderek segítségével. Azonban könnyű belátni, hogy ez rendkívül teljesítményigényes feladat, és ebben a formában nagyon nagy FPS-veszteséggel járna.

Galéria megnyitása

Itt jönnek képbe a GeForce RTX GPU-k shader moduljaihoz szorosan kapcsolódó RT-magok, melyeket kifejezetten a sugárkövetés különböző feladatainak hardveres gyorsítására épített be az Nvidia. Ezek három alapvető módon tudják segíteni a ray-tracing hatékony alkalmazását a játékokban.

Az egyik, amiről talán kevesebbet beszélünk, az a zajszűrés. A sugárkövetés számításigénye jelentősen csökkenthető azzal, ha minél kevesebb sugarat kell kiküldenünk a kamerából. Habár számos nagyon optimalizált eljárás létezik arra, hogy a jelenet szempontjából a legfontosabb sugarak "kimenjenek", még így sem lehet (vagy érdemes) eleget kiküldeni ahhoz, hogy hibák nélkül összeálljon a kép. Így a végeredmény "zajos" lesz, amit az RTX képes egy eljárással kitisztítani, így jóval kevesebb erőforrás felhasználásával (kevesebb sugárral) tudja összerakni a végleges képet.

Ezen kívül az RT-magok kibocsátott sugarak ütközéseinek kalkulálását gyorsítják, ám az egész alapvetően egy Bounding Volume Hierarchy Traversal (BVH) nevű algoritmusra épül, ami az RTX specialitása.

A lényeg itt is a hatékonyság növelése, vagyis hogy pontosan lehessen tudni, milyen háromszögekkel fog találkozni a kibocsátott fénysugár a játéktérben. Márpedig nem nehéz belátni, hogy egy modern játékban egy jelenetben több ezer objektumot, így potenciálisan több millió háromszöget találunk, amik közül meg kéne találni, hogy mi fontos a sugár szempontjából. Ez rendkívül teljesítményigényes lenne, ám itt jön képbe a BVH.

Ezt úgy kell elképzelni, hogy adott egy objektum, ami legyen jelen esetben mondjuk egy nyuszika, mert az Nvidia is ezzel igyekezett bemutatni az eljárást. A BVH lényege, hogy lépcsőzetesen halad: első körben az egész nyuszi körül van egy "doboz". Ha a kibocsátott sugár egyáltalán nem találja el a dobozt, akkor a nyuszival egyáltalán nem is kell foglalkozni. Ha a sugár eltalálja a dobozt, akkor a BVH algoritmus további kisebb dobozokra bontja az előzőt, mondjuk a nyuszi különböző testrészeire, majd ezt megismétli még néhányszor, amíg egy elég kis dobozt nem kap ahhoz, hogy meg tudja határozni, melyik háromszögekkel kellene találkoznia egy kibocsátott sugárnak.

Galéria megnyitása

Ezt az egész folyamatot a GeForce RTX-be épített RT-magok körülbelül tízszer gyorsabban végzik el, mint a mezei CUDA-magok, a CPU-khoz pedig nem is nagyon érdemes viszonyítani, azokon egy modern, komplex játék esetében vállalhatatlanul lassan futna le az egész.

Így tehát a sugárkövetés alkalmazása ténylegesen lehetségessé válik a játékokban, azonban meg kell jegyezni, hogy még az ilyen hardveres képességekkel sem reális, hogy egy modern és komplex AAA-kategóriás játék teljes egészében sugárkövetésre épüljön. Egyszerűen túl nagy kompromisszumokat kellene hozni a jelenet összetettsége és a sebesség oltárán, éppen ezért jelenleg a fejlesztők többsége hibrid megoldást használ. Ennél a kép egy részét hagyományos raszterizáció útján képzik le, és ott vetik be a sugárkövetést, ahol igazán látványos eredményt produkál, például tükröződésekhez, árnyékokhoz, belső terek teljesen globális és dinamikus bevilágításához, és hasonlók.

Hírlevél feliratkozás
A feliratkozással elfogadom a Felhasználási feltételeket és az Adatvédelmi nyilatkozatot.

14 hozzászólás

A komment írásához előbb jelentkezz be!
icd2000
icd2000
2020. júl. 25. 16:15
#5

Szerintem tök jó, hogy megy a műsor a témában, hogy profi kártyával megy valami az AMDnél is, ha nem úgy, ha nem is elérhető, ha... Csakhogy a problémát például sokan kihagynak a számítás: Piszok sok gamer ma már elkezdett streamelni, youtube-ra gameplay videót csinálni. Vagy csak éppen valami hobbi grafikai programmal csinál asztali szerepjátékhoz képeket karakterekről, tájakról. Sok gamernek régen is volt azért pl. tájképgenerátor a gépén, ha másért nem poénból. És ez visszajött a mai realitásba.

Értem én: Ha az AMDnek nincs jelenleg erre alkalmas fogyasztói jellegű kártyája, akkor brühühü reklámozik a csúnya iPon és mindenki más fanatik, csak aki az AMD nem létező RTs kártyáinak dicsőségéből kiiindulva hisztizik, 5 éves módjára.  

Nem az a kérdés, hogy 50 év múlva a Pistike és Társa Bt. processzorai mit fognak tudni. Hanem az, hogy a már meglévő, nVidia IRay renderelő motort használó programok mikor fogják jó teljesítménnyel használni az AMD kártyákat? Mert ezzel szemben konkurenciát állítani annyi időbe tellik, hogy addig 4-5 VGA generáció is lemegy, így aki a mostani VGA választásnál nem a SciFiből, hanem az elérhető jelenből, jövőből indul ki, annak mérlegelnie kell, hogy mit is válasszon. Ehhez pedig pontosan 2 dolgot kell tudnia: Mire jó neki az RT? Mire nem jó neki az RT?

Ezt viszont akkor érthetjük meg, ha eszünkbe jut a nyilvánbaló tény: Nem véletlen, hogy az egyik gyártó gyárt fogyasztói RT képes kártyát, a másik viszont nem. Ráadásul mindkét cég ugyanabból, a cikkben is szereplő, megállapításból indul ki, hogy a sugárkövetés borzasztóan lassú. Ma egy gamer sokszor nem csak PCn (és konzolon) játszik, hanem felmerülnek a társasjátékok, asztali stratégiai játékok, asztali szerepjátékok. Ennek kapcsán is felmerül a tartalom készítés. Nem véletlenül lett i9, nem véletlenül lett AMD ThreadRipper, mert a gamerek igényei között megjelent az amatőr / hobbi szintű tartalomelőállítás támogatása iránti igény. 

Márpedig az ilyen hobbi szintű grafikához a Max és a hozzá tartozó ray tracelő motorok drágák. Az nVidia viszont előállt az iRay nevű megoldással aminek van profi és hobbista felhasználóknak szánt vonala is, és ez utóbbi számos hobbi célra tökéletes programba belekerült. Könnyű belátni, hogyha az ő programjukat használjuk, akkor nem mindegy milyen gyorsan megy a raytrace és milyen minőségben. Az nVidia esetében annak ellenére racionális döntés volt a raytrace gyorsítása, hogy ez a játékokban még így is túl lassú, csak részlegesen használják, stb. Az AMD esetében viszont nem ez volt a helyzet. 

És ne feledjük az nVidia belement abban, hogy neki célközönség az, hogy akár egy laptopon is gyorsan elkészíts egy karakterről egy jó minőségű képet. Ott viszont a hatékonyság üzemidő szempontjából is fontos. Ez viszont jóval kevésbé fontos az AMD esetében. 

Ráadásul egy szinttel feljebb lépve fontos az, hogy az igazán drága profi VGA-k piacán is fontosabb a zöldeknek a verseny, mint az AMDnek. Ha jól tudom előrébb is vannak, aminek persze gamerek szemében nincs sok jelentősége, mert nem akarjuk egy új autó árát VGA-ra költeni... És akkor még nem ártana abból többet venni. Ellenben aki oda fejleszt, annak érdeke az, hogy az ottani fejlesztéseket olcsóbb kategóriákban is használja, itt is termeljen velük pénzt. 

Könnyű észrevenni, hogy az IRay sem szereti a sötét részleteket, árnyékosabb részeket. Egyszerűen azért, mert ott a kamerából a fényforrásig azért is nehéz visszakötvetni a fény útját, mert a fény szóródásának sok formáját (ami bárhol lehetséges) sokkal nehezebb visszakövetni, mint a tükröződéseket. Nem véletlen az, hogy sok esetben csak RTX effekteket emlegetnek, és a képen visszonylag kevés részletet számítnak ki sugárkövetéses eljárással, azt amit éppen úgy éri meg. 

Szóval igen: Ha nem úgy állsz hozzá, hogy neked kell a 8K, a HDR, és minden legyen a lehető legszebb, mert a pénz nem számít, de ultra sznob vagy, akkor a kérdés azért okafogyott, mert ez esetben úgyis a legdrágább, mindent tudó VGA kell a gépedbe, és nem is egy, és akkor senkinek nem lesz szebb az a játék, mint neked... Oké. Csak másnak annyiből háza van (nem gépháza, igazi), meg autója (és nem az NFSben) lesz. Ha viszont az irayra nem akarsz órákat várni, így gyors és zöld kártya kell? Az RTX így is úgy is.

Ha játékra veszel kártyát: Sokan mutogatják, hogy a következő konzol generáció milyen gyártótól veszi a VGA-t. Igen, meg a mostani is. Látod mekkora AMD dominancia lett belőle? Látod min futnak jobban a játékok? Látod a videókban milyen sok játék RTX-szel, és milyen RTX nélkül. Ez alapján tudod neked melyik tetszik, melyiket érdemes megvenni. 

A cikk a működést leírta, igazából jól. 

És azokra a "jaj, minden csak reklám amiből nem az ő S3Virge kártyájuk jön ki győztesen" alapon sírnak nem kell hallgatni.

_PARASZT_
_PARASZT_
2020. júl. 23. 15:00
#4

Röhejes, hogy pont olyan képet sikerült belinkelni összehaonlításnak, ahol az RTX-es eset kevésbé realisztikus mint a sima :D

(Egyébként apro megjegyzés a metro pont szar példa, ugyanis ott az RTX és sima mód között nem csak a raytracing a különbség, hanem teljesen másképp rakták össze a világitást, ezért néz ki annyira másképp, nem a raytracing miatt. De ez se mai info, utána lehet nézni, márha nem az nvidia reklámozása a cél...)

Meteoreso
Meteoreso
2020. júl. 23. 10:45
#3

Ez egy nyílt NV reklám volt, nem arról szól hogy mire képes a RT hanem hogy vedd meg a maradék NV RT képes kártyánkat mielőtt kijön a next gen, beilleszthető abba a cikksorozatba ami Iponon megy az NV részvények többet érnek mint az Intel és társai .

Objektív ? Nem. Pénzt hoz Iponak? persze...

És akkor most a VALÓSÁGról is írnék, Az RT egy régi dolog mozin régen látod amire nagy számítógép renderfürtök vannak ráálítva és egy hónap render után jön ki egy final fantasy szerű film.

Nyilván van AMD-n is ezt radeon raynek hívják és a pro kártyák használják. Mindenki pontosan tudja hogy a mai számítógépek nem képesek a teljes TR-re még vagy 10 évig ez így is lesz. Mivel is lehet ezt kikerülni. A pocsolyaszimulátornak nevezett víz a földön amiben látod a tájat nem feététlen RT ha az akkor súlyos árat fizetsz érte most nem a 2080TI-k 450 ezres árára értem hanem a teljesítmény visszaeséssel. Nem véletlenül találták ki olyan eljárásokat amikkel teljesítményt tudsz nyerni némi csalással, (DLSS 2.0) ezekkel már ki tudsz jönni egy játszható FPS-el. AMD oldalon ez a Contrast Adaptive Sharpening (CAS) és kiterjesztették a FidelityFX könyvtárat olyan 4 függvénnyel ami RT-ból tud megspórolni teljesítményt.

1. SPD Ezekről nem szoktak itt beszélni ugye? :D

A crysis remasteredben olyan engine van hogy dedikált magok nélküli kártyák is fognak RT-t használni...

Mit fognak használni az új konzolok? Természetesen a Big Navi RDNA2 arhitektúráját, DE valami többet is! Nem titok hogy a konzolok szemezgetnek az AMD portfólióból szabadon ők már többet tettek bele ami által volt látható az UNREAL5 demó ami viszont nem Raytracing !

Tegyél fel magadnak egy egyszerű kérdést.  Amikor majd kijönnek a konzolok és megkapod az RDNA2 konzolportot, akkor úgy gondolod egy az egyben támogatja azt a 2080TI kártyád és hasít rajta az RT vagy azt NVnek át kell minden játék esetén írnia ??? (nv supported)

Busterftw
Busterftw
2020. júl. 29. 14:13

@Whysper Nem hulye kerdes, de ha elolvasod mirol szol a cikk es mit kifogasolt Meteoreso (burkolt Nvidia reklam) akkor maris megerted mire celoztam es amit irsz az nem relevans.
Ugyanolyan hulyeseg a "mi volt az elmult 2 evben" es "jonnek a konzolok AMD RT kepes gpu-kkal".

Teljesen mindegy, mert a cikk megjelenesekor nincs AMD-nek RT kepes vga-ja desktopon, szoval jelenleg csak Nvidia kartyakkal lehet ezt irni.
Ettol meg nem lesz burkolt Nvidia reklam. Ha lenne RT kepes AMD kartya, biztos benne lett volna a cikkben, mert mindketto a Microsoft DXR-ra epul.

Amugy RT es RT kozott is van kulonbseg. A Crytek is demozott egyet, amihez nem kell fixfunkcios hardver (ennek ellenere Nvidian jobban futott..), aztan utana derult ki hogy kb fele effektet hasznalnak mint mas benchmarkban vagy jatekban.
Tehat lehet, hogy annyiert kap consolet amennyi egy 2080 Super most, de lehet az RT minosege vagy hasznalata nem lesz egyforma.

Majd le lesz merve.

gombabacsi
gombabacsi
2020. júl. 23. 9:20
#2

zárójelben jegyezném meg hogy a BHV-t és hasonló dolgokat kb mindenhol használják, még 2d játékokban is, ezer éve... egy 2d játékban se kell egy hatalmas pálya összes 2d elemét megvizsgálni hogy láthatóak-e, hanem dobozokba (2d-ben: négyzetekbe) vannak elhelyezve, és előbb a dobozról kell megállapítani hogy látható-e, azután kell csak az egyes elemekkel foglalkozni. ez 30 éve is így volt, még én is programoztam ilyet jó kis 20MHz-s 286-oson kb 30 éve... :)

thedeveloper
thedeveloper
2020. júl. 23. 13:24

@gombabacsi  Igen és gondolom ezer éve van a GPU-k belsejében egy dedikált hardveres réteg, amit ehhez az algoritmushoz készítettek.
Az értő olvasás nem azt jelenti, hogy megértettél és kiragadtál egy kifejezést, hanem hogy sikerült kontextusba is helyezni azt.

carrast
carrast
2020. júl. 23. 8:10
#1

jó cikk, köszönjük!

KikiGames
KikiGames
2020. júl. 23. 16:41

@carrast Szerintem is! 

Amúgy én szívesen olvasnék hasonló szakszerű összefoglalókat itt az oldalon! 

Köszönjük InGen!

Vissza az oldal tetejére