| torsdag 19. februar 2009 04:24 | |||
Realtime shadowsHer vil vi skrive litt om de forskjellige typer skygger vi kan ta i bruk. Hvilken fordeler og ulemper de forskjellige typene har samt linke til implementasjoner av de forskjellige typene. Artikkelen er opprinnelig skrevet i forbindelse med et utviklingsprosjekt på visualisere.org, men publiseres her for de som er interessert. 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 shadowsMye 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 ...
|
|||
| Sist oppdatert mandag 25. mai 2009 19:53 |