Planar projected shadows (J.Blinn 1988)
Bruker 2 render pass for å projisere en mesh til bakken / plan. Geometrien blir projisert ifra lyskildens plassering / retning og rendret i en mørk farge for å gi inntrykk av å være skygge.
Pro
- Enkel å implementere. Det vi trenger å gjøre er å finne en transformasjon som projiserer geometrien til et flatt plan / bakken.
Con
- Begrenset til et flatt plan.
- Falske skygger. Det vil si at objekter som skulle vært eksludert fortsatt vil avgi skygge. F.eks vil objekter inne i et hus kaste skygge utenfor huset, i tillegg til skyggen av selve huset. Dette kan løses ved å transformere fra 3D -> 3D istedetfor 3D -> 2D, falske skygger vil da havne utenfor det aktive frustrum.
- Ingen mulighet for selv-skygging.
Projected shadows
Mye det samme som planar projected shadows, men i denne varianten blir det opprettet en tekstur fra lysets synsvinkel. Man rendrer til en tekstur istedetfor å rendre en flat projisert mesh. Siden vi nå projiserer teksturen kan vi rendre skygger på objekter som befinner i skyggen.
Shadow mapping / Z-buffer (L.Williams 1978)
Vi generer først en depth-buffer / Z-buffer from lysets synsvinkel. Denne bufferen brukes sammenlignes så med bufferen generert fra kamerats synsvinkel for å finne ut om en pixel ligger i skygge eller ikke.
Shadow mapping er mye brukt, f.eks i Pixar's Renderman, Luxo Jr., Toy Story med flere.
Pro
- Vi trenger ingen kjennskap til geometrien i scenen. Dette fordi algoritmen jobber i imagespace, og tar for seg scenen etter at den er rastifisert.
- Bruker kun en tekstur, samt vi unngår å bruke stencil buffer.
- Algoritmen er rask, og for statiske lyskilder kan shadowmap'en genereres på forhånd og brukes som oppslagstabell.
Con
- Undersampling vil gi antialiasing artifakter. Flere punkter i shadowmap'et mapes til et punkt i framebuffer.
- Geometri må rendres en gang pr. lyskilde for å generere spotlight skygger, og kanskje flere ganger for omnidirectional pointlight skygger.
Shadow volumes (Crow 1977)
... To be continued ...