“Self-shadowing” è un termine che descrive la circostanza in cui una parte di un oggetto proietta un’ombra su se stessa. Esempi di auto-ombreggiatura includono l’ombra proiettata da un naso umano sul viso o sul labbro superiore quando la fonte di luce proviene dall’alto, o l’ombra proiettata dal sedile di una sedia sulle gambe della sedia. Quando il termine è usato nella computer grafica, in particolare nella programmazione di computer grafica, è un riferimento alle ombre proiettate dagli oggetti tridimensionali (3D) di una scena su se stessi o alle ombre proiettate da oggetti dinamici su se stessi e gli oggetti intorno a loro . La natura della programmazione della computer grafica 3D in tempo reale fa sì che molte applicazioni utilizzino tecniche che spesso rimuovono la possibilità di eseguire il rendering delle ombre a favore di altre ottimizzazioni, sebbene, con l’aumento della velocità e delle capacità dei computer, i metodi di ombreggiatura automatica in tempo reale sono diventati più accessibili. Esistono diversi metodi per eseguire il rendering di oggetti auto-ombreggiati in tempo reale, ma le limitazioni hardware di solito producono risultati che presentano alcuni inconvenienti, come ombre imprecise, ombre con bordi artificiali o scene che vengono visualizzate molto lentamente su schede grafiche che non sono incredibilmente veloci .
Una distinzione da fare quando si parla di auto-ombreggiatura è la differenza tra oggetti statici e dinamici nella grafica in tempo reale. Gli oggetti statici sono oggetti 3D in una scena che non si muovono e non hanno alcuna parte della loro geometria modificata nel corso del rendering. Un oggetto dinamico, invece, è un oggetto che non è direttamente collegato alla scena in alcun modo e può essere diverso da un fotogramma all’altro. Per la maggior parte, la maggior parte degli oggetti statici e delle scene non in tempo reale si auto-ombreggiano, a causa del motore di rendering o di altri trucchi grafici che possono essere utilizzati.
Diverse ottimizzazioni utilizzate per il rendering della grafica 3D in tempo reale rendono difficile l’implementazione dell’auto-ombreggiatura dinamica. Alcuni esempi includono un motore grafico che applica solo effetti di luce a uno sfondo statico, ignorando oggetti dinamici come i personaggi in una scena o un motore che tratta gli oggetti solo come sagome, senza la consapevolezza della geometria interna. Con l’aumento dei processori grafici e dei computer, nuove tecniche consentono agli oggetti auto-ombreggiati di apparire in una scena in tempo reale, con alcune limitazioni e compromessi.
I volumi delle ombre sono un modo in cui l’auto-ombreggiatura può essere implementata in una scena 3D. Questo metodo crea essenzialmente oggetti 3D che occupano un volume chiuso in una scena in cui viene proiettata un’ombra, consentendo al renderer o allo shader di eseguire test per verificare se un punto si trova all’interno di un volume in ombra per determinare come è illuminato. Altri metodi creano mappe delle ombre o ombre approssimative dalle posizioni dei vertici, per creare ombre molto diffuse che non seguono necessariamente la fedeltà di un bordo.
Quasi tutti i metodi di auto-ombra devono scambiare velocità o qualità per ottenere un risultato accettabile. Possono verificarsi problemi di qualità attraverso l’uso di tecniche veloci ma a bassa risoluzione o sfocate che potrebbero far sembrare alcune auto-ombre sbagliate o fuori posto. I problemi di velocità si verificano quando gli algoritmi utilizzati richiedono un sovraccarico eccessivo per fotogramma o tentano di calcolare le proiezioni delle ombre in modo troppo accurato. Sebbene non esista un unico algoritmo standard per la produzione di ombre, alcune schede grafiche includono l’accelerazione nativa per diversi metodi che possono aumentare la velocità di alcune tecniche.