Što je samozasjenjenje?

“Samosjenčanje” je pojam koji opisuje okolnost u kojoj jedan dio objekta baca sjenu na sebe. Primjeri samozasjenjivanja uključuju sjenu koju baca ljudski nos na lice ili gornju usnicu kada izvor svjetlosti dolazi odozgo ili sjenu koju baca sjedalo stolice na noge stolice. Kada se izraz koristi u računalnoj grafici – posebno programiranju računalne grafike – to je referenca na sjene koje bacaju trodimenzionalni (3D) objekti scene na sebe, ili sjene koje bacaju dinamički objekti na sebe i objekte oko njih . Priroda programiranja 3D računalne grafike u stvarnom vremenu uzrokuje da mnoge aplikacije koriste tehnike koje često uklanjaju mogućnost prikazivanja vlastitih sjena u korist drugih optimizacija, iako, kako se brzina i sposobnosti računala povećavaju, metode samosjenčenja u stvarnom vremenu postali dostupniji. Postoji nekoliko metoda generiranja samosjenčanih objekata u stvarnom vremenu, ali hardverska ograničenja obično proizvode rezultate koji imaju neke nedostatke, kao što su netočne sjene, sjene s umjetno tvrdim rubovima ili scene koje se vrlo sporo renderiraju na grafičkim karticama koje nisu nevjerojatno brze .

Jedna razlika koju treba napraviti kada govorimo o samosjeni je razlika između statičkih i dinamičkih objekata u grafici u stvarnom vremenu. Statički objekti su 3D objekti u sceni koji se ne pomiču i kojima se niti jedan dio geometrije ne mijenja tijekom renderiranja. S druge strane, dinamički objekt je objekt koji ni na koji način nije izravno vezan za scenu i može se razlikovati od jednog kadra do drugog. Uglavnom, većina statičnih objekata i scena koje nisu u stvarnom vremenu stvaraju samosjenku, bilo zbog motora za renderiranje ili zbog drugih grafičkih trikova koji se mogu koristiti.

Nekoliko optimizacija koje se koriste za renderiranje 3D grafike u stvarnom vremenu otežavaju implementaciju dinamičkog samosjenčanja. Neki primjeri uključuju grafički mehanizam koji primjenjuje svjetlosne efekte samo na statičnu pozadinu, zanemarujući dinamičke objekte kao što su likovi u sceni, ili motor koji tretira objekte samo kao siluete, bez svjesnosti o unutarnjoj geometriji. S povećanjem grafičkih procesora i računala, nove tehnike dopuštaju pojavu samozasjenjenih objekata u sceni u stvarnom vremenu, uz neka ograničenja i kompromise.

Volumeni sjena jedan su od načina na koji se samosjenčanje može implementirati u 3D scenu. Ova metoda u biti stvara 3D objekte koji zauzimaju zatvoreni volumen u sceni gdje se baca sjena, dopuštajući rendereru ili shaderu da izvedu testove o tome nalazi li se neka točka unutar zasjenjenog volumena kako bi odredili kako je osvijetljena. Druge metode stvaraju karte sjena, ili približne sjene s položaja vrhova, kako bi se stvorile vrlo difuzne sjene koje ne slijede nužno vjernost ruba.

Gotovo sve metode self-shadowing moraju mijenjati brzinu ili kvalitetu da bi se dobilo prihvatljiv rezultat. Problemi s kvalitetom mogu se pojaviti korištenjem brzih, ali niske razlučivosti ili nejasnih tehnika zbog kojih bi se neke vlastite sjene mogle činiti pogrešnim ili neprikladnim. Problemi s brzinom javljaju se kada korišteni algoritmi zahtijevaju previše nadmetanja po kadru ili pokušavaju previše precizno izračunati projekcije sjene. Iako ne postoji jedinstveni standardni algoritam za samoproizvodnju sjene, neke grafičke kartice uključuju prirodno ubrzanje za različite metode koje mogu povećati brzinu nekih tehnika.