Alates Nvidia 2018. aasta väljakuulutamisest oma 20-seeria RTX-graafikakaartide kohta, on selle tapjafunktsioon "kiirte jälgimine" olnud videomängude ringkondades populaarne termin. Kuid võib olla raske mõista, mis on kiirte jälgimine, kuidas see toimib ja miks see näeb parem välja kui eelmised tehnikad.
Mis on kiirte jälgimine ja kuidas see toimib?
Reaalses maailmas, kui näete midagi, on see, mida näete, valgusallika footon. Teel teie poole võib see footon olla peegeldunud ühelt või mitmelt pinnalt. Iga peegeldus muudab teie silmadeni jõudva valguse omadusi.
Päike kiirgab laias valikus valguse värve, iga pind neelab osa valgust ja peegeldab teisi. See, mida me näeme rohelise pinnana, näiteks lehena, tundub nii, kuna see peegeldab enamasti rohelist valgust. Kui lehelt peegelduv valgus tabab mõnda teist pinda, näiteks valget seina, näeb see pind välja veidi teistsugune, kui see oleks puhas valge valgus, mis sellele paistaks. Iga peegeldus mõjutab iga tulevast pinda, millega valgus interakteerub, muutes selle intensiivsust ja nähtavat värvi.
Kiirte jälgimine on graafiline tehnika, mis järgib samu põhimõtteid. Valguskiired projitseeritakse, arvutatakse peegeldunud ja murdunud valguse omadused, näiteks värvus, ning kiir liigub edasi.
Reaalses maailmas kiirgab iga valgusallikas, näiteks elektripirn või päike, igas suunas footoneid, millest enamik ei jõua kunagi teie silmadeni. Selle simuleerimine oleks meeletult intensiivne protsess, mis annab enamasti raisatud tulemuse. Töökoormuse vähendamiseks töötab kiirte jälgimine tagurpidi, projitseerides kiired kaamerast. Igal kiirel on lubatud läbida teatud vahemaa ilma peegelduseta või peegelduda teatud arv kordi enne arvutuste tegemist ja piksli väärtuse määramist.
Näiteks kiirgatakse vaataja vaatenurgast, kui see tabab valget seina, genereerib algoritm rekursiivselt peegeldunud kiir, mis seejärel liigub läbi sinise klaasi, lõpuks tabab peegeldunud kiir valget valgusallikat ja imendunud. Sinine klaas neelab kõike peale sinise valguse, mis heidab seinale sinist valgust, mille tulemusena värvub piksel siniseks.
Miks näeb Ray Tracing nii palju parem välja?
Stseenide reaalajas renderdamise standardmeetod hõlmab eelarvutatud valguskaartide ja kogu stseeni valgustuse kasutamist. Mõned mängud kasutavad piiratud mahulist valgustust, et hõlmata liikuvaid valgusallikaid ja võimaldada dünaamilisi varje. Seda tehnikat kasutatakse siiski säästlikult, kuna see on üsna protsessorimahukas.
Kiirte jälgimine võib saavutada fotorealistliku tulemuse, kui mängu kujundamise etapis tehakse lisatööd. Kui kõik pinnad sisaldavad selliseid detaile nagu peegeldus, läbipaistvus ja valguse murdumine nende kaudu, võib üldine tulemus tunduda loomulikum. Kuigi see lähenemine hõlmab ilmselgelt rohkem tööd mängu kavandamise etapis, võimaldab see tulemust näha fotorealistlik, valgus reageerib nii nagu peaks, kui see peegeldub betoonilt, metallilt, puidult ja klaasilt jne.
Kiirte jälgimine võimaldab renderdusprotsessi osana täpseid peegeldusi ja varje heita. traditsioonilistes renderdusmeetodites on mõlemad need efektid täiesti valikulised ja võivad põhjustada olulisi jõudlustakistusi.
Ray tracing ise toob kaasa tohutu jõudlushiti. Kuni Nvidia RTX-graafikakaartide väljakuulutamiseni kiirjälituse jaoks riistvaralise kiirendusega, arvati et tarkvaras reaalajas kiirjälgimise teostamiseks vajalik töötlemisvõimsus oli üle kümne aasta ära. Isegi riistvaralise kiirenduse korral põhjustab kiirte jälgimine jõudluse märkimisväärset langust, kuna see on endiselt kaadri renderdamise kõige aeglasem osa.