„Self-shadowing” este un termen care descrie circumstanțele în care o parte a unui obiect aruncă o umbră asupra sa. Exemplele de auto-umbrire includ umbra aruncată de un nas uman pe față sau pe buza superioară atunci când sursa de lumină vine de sus sau umbra proiectată de scaunul unui scaun pe picioarele scaunului. Când termenul este folosit în grafica computerizată – în special programarea grafică pe computer – este o referire la umbre care sunt proiectate de obiectele tridimensionale (3D) ale unei scene asupra lor însele sau umbre care sunt proiectate de obiectele dinamice asupra lor înșiși și a obiectelor din jurul lor. . Natura programării grafice 3D în timp real face ca multe aplicații să folosească tehnici care înlătură adesea posibilitatea redării auto-umbrelor în favoarea altor optimizări, deși, pe măsură ce viteza și capacitățile computerelor cresc, metodele de self-shadowing în timp real au devenit mai accesibile. Există mai multe metode de redare a obiectelor cu auto-umbrire în timp real, dar limitările hardware produc de obicei rezultate care au unele dezavantaje, cum ar fi umbre imprecise, umbre cu margini dure artificiale sau scene care se redau foarte lent pe plăcile grafice care nu sunt incredibil de rapide. .
O distincție de făcut atunci când vorbim despre auto-umbrire este diferența dintre obiectele statice și dinamice din grafica în timp real. Obiectele statice sunt obiecte 3D dintr-o scenă care nu se mișcă și nu au nicio parte din geometria lor schimbată pe parcursul randării. Un obiect dinamic, pe de altă parte, este un obiect care nu este atașat direct de scenă în niciun fel și poate fi diferit de la un cadru la altul. În cea mai mare parte, cele mai multe obiecte statice și scenele care nu sunt în timp real se auto-umbră, fie din cauza motorului de randare, fie din cauza altor trucuri grafice care pot fi folosite.
Câteva optimizări care sunt folosite pentru a reda grafica 3D în timp real fac dificilă implementarea auto-umbririi dinamice. Unele exemple includ un motor grafic care aplică doar efecte de lumină pe un fundal static, ignorând obiectele dinamice, cum ar fi personajele dintr-o scenă, sau un motor care tratează obiectele doar ca siluete, fără a fi conștient de geometria internă. Odată cu creșterea procesoarelor grafice și a computerelor, noile tehnici permit obiectelor auto-umbrite să apară într-o scenă în timp real, cu unele limitări și compromisuri.
Volumele de umbră sunt o modalitate prin care auto-umbrirea poate fi implementată într-o scenă 3D. Această metodă creează, în esență, obiecte 3D care ocupă un volum închis într-o scenă în care este aruncată o umbră, permițând redării sau shaderului să efectueze teste pentru a stabili dacă vreun punct se află într-un volum umbrit pentru a determina modul în care este iluminat. Alte metode creează hărți de umbre sau aproximează umbre din pozițiile vârfurilor, pentru a crea umbre foarte difuze care nu urmează neapărat fidelitatea unei margini.
Aproape toate metodele de auto-umbrire trebuie să schimbe fie viteza, fie calitatea pentru a obține un rezultat acceptabil. Problemele de calitate pot apărea prin utilizarea unor tehnici rapide, dar cu rezoluție scăzută sau neclare, care ar putea face unele umbre de sine să pară greșite sau deplasate. Problemele de viteză apar atunci când algoritmii utilizați necesită prea multă supraîncărcare pe cadru sau încearcă să calculeze prea precis proiecțiile umbrelor. Deși nu există un algoritm unic standard de producere a umbrelor proprii, unele plăci grafice includ accelerare nativă pentru diferite metode care pot crește viteza unor tehnici.