Stencil Shadows Daniele Banovaz30 maggio 2006 Elementi di Grafica Digitale, A.A
Limportanza delle ombre La resa efficace delle ombre è un elemento importante per agevolare la percezione della profondità allinterno di scene 3D, e, in certi casi, essa rappresenta lunico riferimento per comprendere a colpo docchio il posizionamento relativo di oggetti disgiunti. La volontà di aumentare il fotorealismo in videogames, ambienti virtuali ed altre applicazioni grafiche interattive ha dato vita a numerosi algoritmi per la resa ed il perfezionamento di ombre realistiche; le due tecniche maggiormente utilizzate sono Shadow Maps e Stencil Shadows Volumes.
Shadow Maps (Lance Williams, 1978) Tecnica pensata per essere semplice, generale ed efficiente, nelle applicazioni in tempo reale è pienamente supportata in HW e risulta computazionalmente molto veloce; tuttavia la quantità di memoria presente sulle schede video risulta ancora troppo bassa per una resa pulita e senza artefatti. In particolare, per la dipendenza stretta del metodo da rasterizzazione e proiezione prospettica della mappa dombra, sono inevitabili nelle applicazioni odierne dei forti fenomeni di aliasing delle silhouettes; tuttavia vi sono in corso numerosi studi per leliminazione del fenomeno sui piani dinteresse (in particolare Chong and Gortler, 2004).
Shadow Maps passo passo
Un caso duso attuale: CoD2
Volume Shadows (Frank Crow, 1977) Questa tecnica e le sue derivate si basano sulla ricostruzione dei volumi dombra che si stagliano dagli oggetti illuminati (shadow casters) Vi sono differenti metodologie che differiscono in accuratezza e velocità di calcolo, che tuttavia partono da una base comune: la generazione dei volumi.
Generazione dei volumi Tale procedimento si compone dei seguenti passi: -Individuazione dei silhouette edges, cioè gli spigoli di separazione tra facce illuminate (front-facing faces) e facce in ombra (back-facing faces); tale procedimento, che per modelli complessi risulta computazionalmente dispendioso, nelle applicazioni real time viene approssimato, sia per esigenze di velocità, sia per la frequente mancanza di spigoli separatori ideali in modelli low-poly count. -Definizione dei volumi: gli spigoli individuati vengono estesi in direzione opposta alla luce a formare dei quadrilateri. -Eventuale chiusura dei volumi, utilizzata in tecniche avanzate come lo Zfail o in qualche correzione dello Zpass.
Le prime implementazioni La prima tecnica per la resa delle ombre attraverso gli Shadow Volumes è la ExclusiveOR: lo stencil buffer viene riempito pixel per pixel invertendo il valore per ogni volume che passa lo Z-test. Questa implementazione, che richiede un solo passo addizionale, è molto veloce ma presenta moltissime imperfezioni, tra cui lannullamento dellombra nelle intersezioni tra i volumi ed il problema, comune allo Zpass, del near clipping plane.
Z pass La tecnica più diffusa negli anni precedenti è rappresentata dallo Zpass: un algoritmo relativamente semplice e non esente da difetti. A differenza dellExclusiveOR, lo Zpass utilizza uno stencil buffer con più bit per pixel, nei quali conteggia gli attraversamenti di volumi; i passi assomigliano a quelli che compongono il metodo precedente, cambia ciò che viene salvato sullo stencil buffer: le facce front-facing incrementano il valore, mentre le back-facing lo decrementano. Valori finali diversi da zero indicano che la zona è in ombra.
Z pass 1.Rendering della scena utilizzando solo luci ambientali 2.Rendering delle facce front-facing sullo stencil buffer: se passano il depth test i pixel corrispondenti vengono incrementati. 3.Rendering delle facce back-facing sullo stencil buffer: se passano il depth test i pixel corrispondenti vengono decrementati. 4.Viene eseguito il rendering della scena complessiva con diffuse e specular lightening solo nelle aree in cui lo stencil buffer vale zero. Nella figura risulta evidente il problema più grosso di questo approccio: il near clipping plane. Tale piano infatti, tronca i volumi dombra vicini allosservatore, escludendoli dal conteggio nello stencil buffer. Ne risultano zone erroneamente in ombra o illuminate qualora lo shadow volume si trovi ad attraversare questo piano.
Z fail Nel tentativo di porre rimedio agli artefatti causati dal near plane, svariati studi giungono a definire un approccio inverso, che considera i volumi che falliscono il depth-test. Limplementazione più consistente di questo robusto metodo nasce con lengine di Doom III, ad opera di John Carmack (da cui laltro nome con cui è noto lo Zfail: Carmacks Reverse). Tale metodo sposta il problema dal near al far plane, dove può essere aggirato estendendo il piano e la proiezione del dark cap lungo il volume dombra a un homogeneus infinity (Everitt and Kilgard, 2002).
Z fail 0.Chiusura dei volumi dombra alle estremità. Rendering della scena utilizzando solo luci ambientali Rendering delle facce front-facing sullo stencil buffer: se falliscono il depth test i pixel corrispondenti vengono decrementati. Rendering delle facce back-facing sullo stencil buffer: se falliscono il depth test i pixel corrispondenti vengono incrementati. Viene eseguito il rendering della scena complessiva con diffuse e specular lightening solo nelle aree in cui lo stencil buffer vale zero. Questo metodo, più robusto del precedente, risulta anche più lento, in quanto è necessario calcolare la geometria per chiudere i volumi e, inoltre, viene escluso da alcune ottimizzazioni che per loro natura escluderebbero immediatamente le geometrie che falliscono il depth test.
Z fail : Doom III
Il futuro dello Zpass: ZP+ Come specificato in precedenza, lo Zpass processa gli shadow volumes in maniera efficiente ma scorretta nel caso di intersezione con il near clipping plane: vi sono molti metodi per tappare i volumi troncati, ma tutti molto poco efficienti e soggetti ad altri artefatti dovuti soprattutto ad imprecisione aritmetica. Lunica alternativa robusta è data dallo Zfail, ma a costo di una maggior complessità elaborativa e del sacrificio dellaccelerazione data dallearly depth culling dei volumi dombra coperti al punto di vista. Una soluzione a questo problema è la promettente tecnica del Correct Zpass, altrimenti detto ZP+. Questo metodo, proposto nel 2004 da Samuel Hornus, Jared Hoberock, Sylvain Lefebvre e John Hart, riprende lapproccio seguito dallo Zpass, utilizzando un procedimento analogo alle shadow maps per inizializzare lo stencil buffer definendo al contempo delle chiusure perfette per i volumi troncati.
Linnovazione del ZP+ Al posto di calcolare complesse geometrie di chiusura, spesso disallineate e responsabili di crepe nelle ombre, questo sistema prevede una fase di inizializzazione dello stencil buffer, in cui il punto di vista viene spostato sulla luce ed il far clipping plane viene fatto coincidere con il near del punto di vista dellosservatore. La rasterizzazione attribuisce alle facce frontali un incremento dello stencil buffer ed alle altre un decremento. Alla fine di questa fase di inizializzazione, il punto di vista ritorna quello dellosservatore, e viene eseguito un normale Zpass: dal momento che il buffer è già inizializzato con i valori dei volumi tra osservatore e near clipping plane, si evitano i problemi dei volumi tronchi.
Performances Lo Zpass semplice rimane il metodo più performante, ma presenta errori inammissibili; il confronto viene invece eseguito tra i ben più robusti Zfail e ZP+. I risultati, su HW di 2 anni fa, mettono in evidenza come lo Zfail sia estremamente compromesso dallaumentare della complessità dei modelli, e possa risultare più lento anche dell80% rispetto allo Zpass. Lo ZP+ invece, si attesta ad ottimi valori, che ricalcano gli andamenti dello Zpass pur rimanendo più lento di circa il 10%.
Decremento di prestazioni (%) rispetto allo Zpass --- : Zfail --- : ZP+ twisted torus ( tr) head ( tr) pregnant woman ( tr)
Perché ZP+ è più veloce 1.ZP+ non ha bisogno del dark cap allinfinito, mentre lo Zfail deve fare il rendering degli occluders due volte. 2.Zfail non può trarre beneficio dalle batched geometry (per es. triangle strips), perché non supportano la classificazione dei vertici come appartenenti a dark o light cap. 3.Dal momento che la dimensione del light frustum è molto inferiore a quella del camera frustum, la percentuale di geometria scartata con il culling nello Zpass è molto più alta rispetto allo Zfail: anche le chiusure delle geometrie non troncate dal near plane devono essere calcolate manualmente nello Zfail, mentre lo ZP+, eseguendo il rendering nel light frame, può avvalersi del culling HW. 4.Infine, lo Zfail non può godere dei benefici apportati dallearly depth culling, che nellintento di ridurre il prima possibile la complessità geometrica escluderebbe poligoni rilevanti per il calcolo delle ombre.
Bibliografia ZP+: Correct Z-pass Stencil Shadows, (Samuel Hornus, Jared Hoberock, Sylvain Lefebvre, John Hart) ( Stencil Shadow Volumes, (oZone3D Tutorials, John Carmack - to private list (2000). Published on the NVIDIA website. Specifiche nVidia UltraShadow (fonte: nVidia) ( Specifiche nVidia UltraShadow II (Toms Hardware Italia) ( Wikipedia: –Shadow mapping ( –Shadow volume ( –Stencil shadow volume ( –Silhouette edge ( …altri siti di cui ho perso i riferimenti…