Mis on OpenGL®-i vari?

Open Graphics Library® (OpenGL®) vari on visuaalne lähendus kolmemõõtmelises (3D) OpenGL® stseenis selle kohta, kuidas varju heidetakse päriselus sarnastes valgustingimustes. Varjud on OpenGL®-is rakendatav keerukas visuaalne funktsioon, peamiselt seetõttu, et stseenis varjude heitmiseks puudub kaasasündinud tugi. Selle asemel saab kasutada mitmesuguseid tehnikaid, mida saab kasutada stseeni objektidest ja geomeetriast varjude loomiseks, kasutades erinevaid tööriistu, näiteks erinevaid saadaolevaid puhvreid, varjutajaid ja mõnel juhul laiendusi, mis võimaldavad juurdepääsu teatud graafika erifunktsioonidele. kaardid. Enamikul juhtudel on OpenGL®-i varjude renderdamise kvaliteet, täpsus ja kiirus otseselt seotud arvutis või seadmes oleva graafika riistvara töötlemisvõimsuse ja mäluga. Mõned populaarsemad meetodid OpenGL®-i varju rakendamiseks hõlmavad varjude mahtu, varjude kaardistamist ja kiirte jälgimist.

OpenGL®-i varitoega rakenduse loomine nõuab matemaatilisi teadmisi ja sügavat arusaamist OpenGL®-i toimimisest. OpenGL®-i kasutatakse laialdaselt dünaamiliste ja reaalajas renderdatavate 3D-stseenide loomiseks, nii et varjude loomiseks kasutatavaid algoritme ei pea mitte ainult optimeerima kiiruse jaoks, vaid neid tuleb ka hoolikalt mõõta nende ressursside tarbimise ja võimalike häirete suhtes. võib olla põhjustatud renderdamiseks kasutatavas graafikakonveieris. Nendel põhjustel on kõige elementaarsem varju loomise meetod, mida nimetatakse kiirjälgimiseks, täis3D-stseenide puhul sageli ebapraktiline, kuna see võib võtta väga kaua aega.

Kiirte jälgimine järgib põhimõtteliselt kujuteldavat joont või kiirt, mis kulgeb kaamera vaatetasandist või asendist läbi stseeni kuni objekti pinnani ning arvutab seejärel pinna värvi ühe või mitme valgusallika asukoha ja muude tegurite põhjal. Rasteriseerimisprotsessi ajal, kus 3D-stseen joonistatakse kahemõõtmelisele (2D) pinnale, et seda saaks kuvada, tuleb kiirte jälgimise protsess läbi viia igal joonistaval pikslil ja eriti tekstuuride või muuga. pinnaomadusi, võib olla vaja samu piksleid mitu korda hinnata. See tähendab reaalajas kiirte jälgimist, kuigi see renderdaks täpselt varjud, ei ole tavaliselt otstarbekas.

Teine meetod, mida saab kasutada OpenGL®-i varju loomiseks, on varjude kaardistamine. See meetod kasutab sügavust või šabloonipuhvrit, et renderdada stseeni valgusallika nurga alt kauguste jadana valgusallikast stseeni erinevate objektide pindadeni. Seejärel renderdatakse stseen teist korda õigest vaatenurgast, kontrollides, kas iga piksel jääb puhvris teatud vahemaavahemikku, näidates, kas piksel on valgustatud või varjutatud. Varjukaardi kasutamine võib olla mälumahukas ja rohkem kui ühe valgusallikaga stseenide puhul võib see hõlmata mitme kaardi koostamist mitme nurga alt.

Varjuhulgad on viis OpenGL®-i varju loomiseks, mis on täpsem kui mõned muud meetodid, kuid sellel on oma probleemid. Varjude maht on stseeni nähtamatu geomeetria, mis laieneb objekti valgustatud pinnalt valgusallikast eemale. Seda helitugevust saab võrrelda teiste objektidega, et näha, kas need ei lange selle pinna varju, millelt helitugevus pärines. See protseduur võib olla väga keeruline ja kiiruse jaoks optimeerituna võib lõppkokkuvõttes luua visuaalseid artefakte.