Shadow mapping
# Shadow mapping

Shadow mapping o projective shadowing è un processo con il quale vengono calcolate e renderizzate le ombre nella computer grafica 3D. Il concetto è piuttosto vecchio e risale ad un articolo di Lance Williams del 1978 intitolato "Casting curved shadows on curved surfaces" (trad.: 'gettare ombre curve su superfici curve'). Da allora la tecnica viene utilizzata sia per i rendering pre-calcolati che per le scene realtime, soprattutto nei videogiochi. Lo shadow mapping viene utilizzato anche in produzioni cinematografiche, e fa parte dell'engine RenderMan della Pixar che lo ha utilizzato in film come Toy Story.

Le ombre sono create verificando se un frammento sia o meno visibile dalla sorgente di luce (preferibilmente una spot light); proiettando questa informazione nello spazio di vista della camera (utilizzando una apposita texture) e confrontando le "profondità" si può verificare se un punto sia o meno illuminato e colorarlo di conseguenza.

## Principio di ombra e shadow map

Qualunque oggetto visibile da una sorgente di luce appare illuminato. Qualunque cosa dietro tali oggetti sarà, necessariamente, in ombra. Questo è il principio di base dello shadow mapping. Si renderizza quindi la vista della luce disattivando tutte le computazioni non necessarie, visto che in questa fase siamo interessati unicamente al buffer di profondità (la componente z) e non ai colori.

Successivamente si renderizza la scena normalmente, confrontando la profondità di ogni punto con la proiezione della shadow map nello spazio di vista della camera: se un punto è "dietro" la shadow map, allora è in ombra.

La tecnica di shadow mapping è meno accurata dei volumi d'ombra o shadow volumes, ma risulta un'alternativa notevolmente più veloce e più semplice da implementare. Inoltre, non richiede buffer speciali (come lo stencil buffer), può essere modificata per simulare ombre morbide (con il percentage closer filtering) e non crea problemi complessi come il calcolo delle intersezioni dei volumi e della loro "terminazione". Tuttavia, la qualità delle ombre create con lo shadow mapping è legata alla risoluzione della mappa di ombre stessa e risulta prona ad artefatti (soprattutto quando i frustum di luce e camera hanno stessa direzione ma verso opposto).

