Kas yra savęs šešėliavimas?

„Savęs šešėlis“ yra terminas, apibūdinantis aplinkybę, kai viena objekto dalis meta šešėlį ant savęs. Savęs šešėliavimo pavyzdžiai yra šešėlis, kurį žmogaus nosis meta ant veido ar viršutinės lūpos, kai šviesos šaltinis sklinda iš viršaus, arba šešėlį, kurį meta kėdės sėdynė ant kėdės kojų. Kai šis terminas vartojamas kompiuterinėje grafikoje – ypač kompiuterinės grafikos programavime – tai nuoroda į šešėlius, kuriuos ant savęs meta trimačiai (3D) scenos objektai, arba šešėlius, kuriuos dinamiški objektai meta ant savęs ir aplink juos esančius objektus. . Realaus laiko 3D kompiuterinės grafikos programavimo prigimtis lemia, kad daugelis programų naudoja metodus, kurie dažnai pašalina galimybę atvaizduoti šešėlius, o kiti optimizuoja, nors, didėjant kompiuterių greičiui ir galimybėms, realaus laiko šešėlių metodai. tapo prieinamesni. Yra keletas būdų, kaip realiuoju laiku atvaizduoti savaime šešėliuojančius objektus, tačiau aparatinės įrangos apribojimai paprastai duoda rezultatų, kurie turi tam tikrų trūkumų, pvz., netikslūs šešėliai, šešėliai su dirbtinai kietais kraštais arba scenos, kurios labai lėtai atvaizduojamos vaizdo plokštėse, kurios nėra neįtikėtinai greitos. .

Vienas iš skirtumų, kurį reikia padaryti kalbant apie savaiminį šešėlį, yra skirtumas tarp statinių ir dinaminių objektų realiojo laiko grafikoje. Statiški objektai yra 3D objektai scenoje, kurie nejuda ir kurių geometrijos dalis perteikimo metu nepasikeitė. Kita vertus, dinaminis objektas yra objektas, kuris jokiu būdu nėra tiesiogiai prijungtas prie scenos ir gali skirtis nuo vieno kadro. Dažniausiai dauguma statinių objektų ir nerealaus laiko scenų užstoja šešėlį dėl atvaizdavimo variklio arba dėl kitų grafinių gudrybių, kurias galima naudoti.

Keletas optimizavimų, kurie naudojami realaus laiko 3D grafikai pateikti, apsunkina dinaminio savaiminio šešėlio įgyvendinimą. Kai kurie pavyzdžiai apima grafikos variklį, kuris apšvietimo efektus taiko tik statiškam fonui, nepaisydamas dinamiškų objektų, pvz., scenos veikėjų, arba variklį, kuris objektus traktuoja tik kaip siluetus, nesuvokdamas vidinės geometrijos. Didėjant grafikos procesorių ir kompiuterių skaičiui, naujos technikos leidžia realaus laiko scenoje atsirasti šešėliniams objektams su tam tikrais apribojimais ir kompromisais.

Šešėlių tūriai yra vienas iš būdų, kaip 3D scenoje įgyvendinti savaiminį šešėlį. Šiuo metodu iš esmės sukuriami 3D objektai, kurie užima uždarą tūrį scenoje, kurioje metamas šešėlis, todėl atvaizduotojas arba šešėliuotojas gali atlikti testus, ar kuris nors taškas yra šešėliniame tūryje, kad nustatytų, kaip jis apšviestas. Kiti metodai sukuria šešėlių žemėlapius arba apytikslius šešėlius iš viršūnių pozicijų, kad būtų sukurti labai išsklaidyti šešėliai, kurie nebūtinai atitinka briaunos tikslumą.

Beveik visi savaiminio šešėlio metodai turi keistis greičiu arba kokybe, kad gautų priimtiną rezultatą. Kokybės problemų gali kilti naudojant greitus, bet mažos skyros arba neaiškius metodus, dėl kurių kai kurie savaiminiai šešėliai gali atrodyti netinkami arba netinkami. Greičio problemos kyla, kai naudojami algoritmai reikalauja per daug pridėtinių išlaidų vienam kadrui arba bandoma per tiksliai apskaičiuoti šešėlių projekcijas. Nors nėra vieno standartinio savaiminio šešėlio kūrimo algoritmo, kai kurios vaizdo plokštės turi savąjį pagreitį, skirtą skirtingiems metodams, kurie gali padidinti kai kurių metodų greitį.