Dynamische virtuele lichtvelden voor games
Correcte belichting is één van de belangrijkste factoren die bijdragen tot realisme in computergegenereerde beelden. Om dit realisme te behalen, moet de voortplanting van het licht nauwkeurig gesimuleerd worden. Dat je deze tekst kan lezen, komt omdat inkomende lichtdeeltjes (fotonen), via je ogen op je netvlies invallen. Die beelden worden vervolgens in de hersenen verder verwerkt en geïnterpreteerd als wat je ziet. Dit razendsnelle proces vindt voortdurend plaats in ons brein, zodat we ons zicht als iets heels vanzelfsprekend beschouwen. In een film of computerspel willen we dat een virtuele omgeving realistisch op het scherm getoond wordt. Voor een computer is het simuleren van dit lichttransport, de voortplanting van licht doorheen een ruimte, echter heel moeilijk.
Gewoonlijk wordt dit globale belichtingsprobleem opgelost met behulp van raytracing. Dit concept is niet nieuw. De oude Grieken, omstreeks de vijfde eeuw v.C., dachten dat de aarde opgebouwd was uit vier elementen: vuur, lucht, aarde en water. Ze geloofden dat de godin Aphrodite ook het menselijke oog uit die elementen had opgebouwd, en dat het vuurelement stralen (rays) afschoot uit de ogen. Die stralen tastten als enorme ‘voelsprieten’ de omgeving af, waardoor we kunnen zien. Dankzij de moderne wetenschap weten we uiteraard dat het proces omgekeerd verloopt: onze ogen zijn passieve instrumenten die lichtstralen uit de omgeving opvangen. Toch wordt het actief afschieten van stralen in computerprogramma’s veel gebruikt om het licht van een virtuele omgeving te berekenen. Hierdoor wordt vermeden dat er stralen getrokken worden die de ogen toch niet snijden. Raytracing kan op een aantal manieren gebeuren, maar vaak vertrekken stralen vanuit de camera en botsen ze op willekeurige manieren doorheen de gesimuleerde omgeving.
Het nadeel van raytracing is dat de berekeningen erg veel tijd vragen. Bij het berekenen van de beelden uit films zoals ‘Lord of the Rings’ worden vaak honderden zware computers gebruikt, die soms dagenlang rekenen op enkele fragmenten. Tijdens het spelen van games willen we echter een ogenblikkelijke verandering van de beelden, als reactie op onze besturing. Om realistische beelden te maken, is er dus veel tijd nodig, maar die hebben we niet bij games. Daarom passen de meeste games trucjes toe om toch snel mooie beelden te genereren. Zo wordt meestal alleen het directe licht gesimuleerd: het licht wat van een lichtbron (zoals een lamp, de zon,etc...), rechtstreeks botst op een element in de wereld. Indirect licht, het licht dat meerdere keren botst in de omgeving, wordt meestal volledig genegeerd of ruw benaderd. Nochtans is dit indirecte licht belangrijk voor het realisme. Beeld je maar eens een knalrode bal in, vlakbij een witte muur. In de echte wereld zal de bal een rode gloed afgeven op de witte muur, die sterker wordt naarmate de bal dichterbij de muur ligt. In games van vandaag wordt dit effect grotendeels genegeerd, waardoor de muur er onnatuurlijk wit blijft uitzien. Dit subtiele verschil zorgt ervoor dat onze hersenen het beeld al snel als ‘niet echt’ gaan bestempelen. Ook andere veelvoorkomende effecten worden niet in rekening gebracht in hedendaagse games, zoals bijvoorbeeld de felle lichtstrepen op een tafel van licht dat door een glas afgebogen wordt.
Één van de redenen waarom raytracing zo traag is, is dat er telkens maar enkele stralen tegelijkertijd worden afgeschoten. Dit komt omdat huidige processoren maar over enkele kernen (cores) beschikken die in parallel kunnen werken. Om belichting op een snelle én realistische manier te berekenen, wordt in mijn masterproef niet de processor, maar de grafische kaart gebruikt. De grafische kaart bevat een chip die veel meer kernen heeft dan een gewone processor, waardoor veel meer stralen tegelijkertijd kunnen afgeschoten worden. De stralen worden afgeschoten in evenwijdige bundels, over de hele omgeving heen. Dit proces wordt bovendien herhaald in alle richtingen, zodat uiteindelijk alle lichtstralen in de omgeving getraceerd zijn. De verzameling van stralen noemt men in de wetenschappelijke literatuur een lichtveld. Een lichtveld kan in principe opgebouwd worden met echte foto’s of beelden, maar in mijn masterproef veronderstel ik dat we het enkel op kunstmatige omgevingen zullen uitvoeren. Hierdoor kan de omgeving, met speciale trucjes op de grafische kaart, ook in de diepte gescand worden. Het hele proces lijkt een beetje op een röntgenfoto nemen. In de masterproef wordt er als het ware een scan genomen van de belichtingstoestand op dat moment.
Natuurlijk blijft de belichting in een game niet de hele tijd hetzelfde. Objecten in de omgeving vervormen voortdurend en verplaatsen zich vaak met hoge snelheid. Wanneer we in een game auto’s zien rijden, dan verwachten we correcte schaduwen en reflecties zoals in de realiteit. Als we een rode bal tegen een witte muur gooien, dan moet ook de rode schijn zich op een natuurlijke manier aanpassen. Vroeger werd dit probleem opgelost door de hele belichting voor ieder beeld opnieuw te berekenen. Maar de belichting verandert niet altijd en overal even veel, waardoor er veel rekenkracht verspild werd. In mijn thesis los ik dit probleem op, door enkel de stralen te hertraceren die door de dynamische objecten worden beïnvloed. Ook hiervoor worden speciale functies van de grafische kaart gebruikt, die uit de totale bundel van stralen telkens de niet-relevante delen ‘wegknippen’.
Met virtuele lichtvelden kunnen lichteffecten in games op een realistische en snelle manier berekend worden. Bovendien biedt een virtueel lichtveld goede ondersteuning voor complexe lichtbronnen: door een afbeelding te plaatsen voor de bundels stralen die bij de lichtbron vertrekken, kunnen de kleuren van die stralen eenvoudig beïnvloed worden. De afbeelding werkt dan als een soort filter voor het licht dat uitgezonden wordt.
[1] James T. Kajiya. The rendering equation. SIGGRAPH, 1986.
[2] Cindy M. Goral, Kenneth E. Torrance, Donald P. Greenberg, and Bennett
Battaile. Modeling the interaction of light between diffuse surfaces.
SIGGRAPH, pages 213–222, 1984.
[3] Brian Edward Smits. Efficient hierarchical radiosity in complex environments.
PhD thesis, Cornell University, 1994.
[4] Filippo Tampieri. Discontinuity meshing for radiosity image synthesis. PhD
thesis, Cornell University, 1993.
[5] Shenchang Eric Chen. A progressive radiosity method and its implementation
in a distributed processing environment. Master’s thesis, Cornell
University, 1989.
[6] Michael F. Cohen and Donald P. Greenberg. The hemi-cube: a radiosity
solution for complex environments. SIGGRAPH, 1985.
[7] Greg Ward, Francis Rubinstein, and Robert Clear. A ray tracing solution
to diffuse interreflection. SIGGRAPH, 1988.
[8] Henrik Wann Jensen. Global illumination using photon maps. Rendering
Techniques, pages 21–30, 1996.
[9] Ingo Wald and Philipp Slusallek. State of the art in interactive ray tracing.
EuroGraphics, 2001.
[10] Lance Williams. Casting curved shadows on curved surfaces. New York
Institute of Technology, 1978.
[11] Anirudh S. Shastry. Soft-edged shadows. Gamedev.net, 2005.
[12] James Blinn and M. Newell. Texture and reflection in computer generated
images. Communications of the ACM, 19(10):542–547, 1976.
[13] Martin Kinkelin and Christian Liensberger. Instant radiosity: An approach
for real-time global illumination. ICGA/TU Wien, 2008.
[14] Carsten Dachsbacher, Marc Stamminger, George Drettakis, and Fredo Durand.
Implicit visibility and antiradiance for interactive global illumination.
ACM Transactions on Graphics (SIGGRAPH Conference Proceedings),
2007.
[15] Carsten Dachsbacher and Marc Stamminger. Reflective shadow maps. I3D
Proceedings, pages 203–213, 2005.
[16] Tobias Ritschel, Thorsten Grosch, Min H. Kim, Hans-Peter Seidel, Carsten
Dachsbacher, and Jan Kautz. Imperfect shadow maps for efficient computation
of indirect illumination. ACM Transactions on Graphics (SIGGRAPH
ASIA Conference Proceedings), 27(5), 2008.
[17] Anton Kaplanyan and Carsten Dachsbacher. Cascaded light propagation
volumes for real-time indirect illumination. I3D, 2010.
[18] P. Shanmugam and O. Orikan. Hardware accelerated ambient occlusion
techniques on gpus. I3D Proceedings of the Symposium on Interactive 3D
Graphics and Games, 2007.
[19] Tobias Ritschel, Thorsten Grosch, and Hans-Peter Seidel. Approximating
dynamic global illumination in image space. I3D Proceedings, pages 75–82,
2009.
[20] Keshav Channa. Light mapping - theory and implementation. Flipcode,
2003.
[21] Sloan et al. Spherical harmonic lighting. 2002.
[22] Robin Green. Spherical harmonic lighting: The gritty details. Sony Com-
puter Entertainment America, 2003.
[23] Jan Kautz. Diffuse precomputed radiance transfer. Siggraph 2005 course,
pages 34–35, 2005.
[24] William Donnelly and Joe Demers. Generating soft shadows using occlusion
interval maps. GPU Gems, pages 205–215, 2004.
[25] Daniel T. Levin and Daniel J. Simons. Failure to detect changes to attended
objects in motion pictures. Psychonomic Bulletin and Review, 4(4):501–
506, 1997.
[26] Jeroen Put. Accuraat rendering met een light field als environment map.
UHasselt, 2010.
[27] Todt S., Rezk-Salama C., and Kolb A. Light field rendering for games. EG
UK Theory and Practice of Computer Graphics, 2008.
[28] Gortler S., Szeliski R., and Cohen M. The lumigraph. SIGGRAPH Annual
Conference Series, pages 43–52, 1996.
[29] Mel Slater, Jesper Mortensen, Pankaj Khanna, and Insu Yu. A virtual light
field approach to global illumination. Proceedings of Computer Graphics
International, pages 102–109, 2004.
[30] Jesper Mortensen, Pankaj Khanna, and Mel Slater. Light field propagation
and rendering on the gpu. AFRIGRAPH, pages 15–23, 2007.
[31] Mel Slater. Constant time queries on uniformly distributed points on a
hemisphere. Journal of Graphics Tools, 7(1):33–44, 2002.
[32] Nvidia Corporation. Improve batching using texture atlases. nvSDK, 2004.
[33] Jesper Mortensen, Pankaj Khanna, Insu Yu, and Mel Slater. Real-time global
illumination in the cave. ACM Symposium on Virtual Reality Software
and Technology, 2007.
[34] John Owens. Streaming architectures and technology trends. GPU Gems
2, pages 457–470, 2005.
[35] Jamie Wither. Interactive dynamic objects in a virtual light field. Univer-
sity College of London master thesis, 2005.
[36] Jesper Mortensen. Virtual light fields for global illumination in computer
graphics. University of London, 2011.
[37] Bruno Lévy, Sylvain Petitjean, Nicolas Ray, and J´erome Maillot. Least
squares conformal maps for automatic texture atlas generation. ISA (Inria
Lorraine and CNRS), 2002.
[38] M.E. Newell, R.G. Newel, and T.L. Sancha. A solution to the hidden surface
problem. Proceedings of the ACM annual conference, pages 443–450, 1972.
[39] Weidong Sun and Zongmin Ma. Count sort for gpu computing. 15th Inter-
national Conference on Parallel and Distributed Systems, pages 919–924,
2009.
[40] Cass Everitt. Interactive order-independent transparency. Nvidia Corpo-
ration, 2001.
[41] Louis Bavoil and Kevin Myers. Order independent transparency with dual
depth peeling. Nvidia Corporation, 2008.
[42] Louis Bavoil, Steven P. Callahan, Aaron Lefohn, Jo˜ao L. D. Comba, and
Cl´audio T. Silva. Multi-fragment effects on the gpu using the k-buffer. In
Proceedings of the 2007 symposium on Interactive 3D graphics and games,
I3D ’07, pages 97–104, New York, NY, USA, 2007. ACM.
[43] Fang Liu, Meng-Cheng Huang, Xue-Hui Liu, and En-Hua Wu. Efficient
depth peeling via bucket sort. In Proceedings of the Conference on High
Performance Graphics 2009, HPG ’09, pages 51–57, New York, NY, USA,
2009. ACM.
[44] Louis Bavoil and Kevin Myers. Stencil routed k-buffer. Nvidia Corporation,
2007.
[45] Kevin Myers and Louis Bavoil. Stencil routed a-buffer -
http://developer.nvidia.com. SIGGRAPH, 2007.
[46] Peter Kipfer and Rüdiger Westermann. Improved gpu sorting. GPU Gems
2, pages 733–746, 2005.
[47] Erik Reinhard, Michael Stark, Peter Shirley, and James Ferwerda. Photographic
tone reproduction for digital images. In PROC. OF SIGGRAPH
02, pages 267–276. ACM Press, 2002.
[48] Pal Barta and Balazs Kovacs. Order independent transparency with perpixel
linked lists. Budapest University of Technology and Economics, 2011.
[49] Loren Carpenter. The a -buffer, an antialiased hidden surface method.
SIGGRAPH Comput. Graph., 18:103–108, January 1984.