Kaj je senca OpenGL®?

Senca Open Graphics Library® (OpenGL®) je vizualni približek v tridimenzionalnem (3D) prizoru OpenGL®, kako bi senca oddala v resničnem življenju pod podobnimi svetlobnimi pogoji. Sence so zapletena vizualna funkcija za implementacijo v OpenGL®, predvsem zato, ker ni prirojene podpore za oddajanje senc v prizoru. Namesto tega obstajajo različne tehnike, ki jih je mogoče uporabiti za ustvarjanje senc iz predmetov in geometrije znotraj scene z uporabo različnih orodij, kot so različni razpoložljivi medpomnilniki, senčniki in v nekaterih primerih razširitve, ki omogočajo dostop do posebnih funkcij na določeni grafiki. kartice. V večini primerov je kakovost, natančnost in hitrost upodabljanja senc OpenGL® neposredno povezana s procesorsko močjo in pomnilnikom grafične strojne opreme, ki je prisotna v računalniku ali napravi. Nekatere bolj priljubljene metode implementacije sence OpenGL® vključujejo količine senc, preslikavo senc in sledenje žarkov.

Ustvarjanje aplikacije, ki podpira senčno podporo za OpenGL®, zahteva matematično znanje in poglobljeno razumevanje delovanja OpenGL®. OpenGL® se v veliki meri uporablja za ustvarjanje 3D scen, ki so dinamične in upodabljane v realnem času, zato je treba algoritme, ki se uporabljajo za ustvarjanje senc, ne le optimizirati za hitrost, ampak jih je treba skrbno izmeriti glede njihove porabe virov in morebitnih motenj, ki lahko povzroči v grafičnem cevovodu, ki se uporablja za upodabljanje. Zaradi teh razlogov je najbolj osnovna metoda ustvarjanja sence, imenovana sledenje žarkov, pogosto nepraktična za polne 3D prizore, ker lahko traja zelo dolgo.

Sledenje žarkom v bistvu sledi namišljeni črti ali žarku od ravnine gledanja ali položaja kamere skozi prizor do površine predmeta in nato izračuna barvo površine na podlagi položaja enega ali več virov svetlobe in drugih dejavnikov. Med postopkom rasterizacije, kjer je 3D scena narisana na dvodimenzionalno (2D) površino, da jo je mogoče prikazati, je treba postopek sledenja žarkom izvesti na vsakem pikselu, ki se riše in zlasti s teksturami ali drugimi lastnosti površine, bo morda treba večkrat oceniti iste slikovne pike. To pomeni, da sledenje žarkom v realnem času, čeprav bi natančno upodabljalo sence, običajno ni praktično.

Druga metoda, ki jo je mogoče uporabiti za ustvarjanje sence OpenGL®, je znana kot preslikava senc. Ta metoda uporablja globino ali pufer šablone za upodabljanje scene iz kota svetlobnega vira kot niza razdalj od vira svetlobe do površin različnih predmetov znotraj scene. Prizor se nato drugič upodablja iz pravilnega zornega kota, pri čemer se preveri, ali vsaka slikovna pika spada v določeno razdaljo znotraj medpomnilnika, kar kaže, ali je slikovna pika osvetljena ali zasenčena. Uporaba preslikave senc lahko zahteva pomnilnik in pri prizorih, ki imajo več kot en vir svetlobe, lahko vključuje izdelavo več zemljevidov iz več zornih kotov.

Senčne količine so način za ustvarjanje sence OpenGL®, ki je natančnejši od nekaterih drugih metod, vendar predstavlja svoje težave. Senčni volumen je v bistvu neviden kos geometrije v prizoru, ki se širi od osvetljene površine predmeta stran od vira svetlobe. Ta volumen je mogoče primerjati z drugimi predmeti, da ugotovimo, ali padejo v senco površine, iz katere izvira volumen. Ta postopek je lahko zelo zapleten in na koncu ustvari vizualne artefakte, ko je optimiziran za hitrost.