Radiosity

[ LiB ]

Radiosity

Radiosity is a much better approach to computing global illumination because, compared to ray tracing, it's a much more realistic algorithm. Radiosity has been around for some years and took a long time to become a mainstream application. This was because the original design, which utilized a matrix solution to fin the radiance, was very complex. Radiosity works with the simple idea of energy being distributed into a scene or finding the equilibrium of light exchange between surfaces. As photons leave a light source the energy is spattered onto materials. The illumination information is then stored on the surfaces in the scene. The trick to radiosity is that each surface becomes a sec ondary light source and emits light particles onto neighboring surfaces. Then those neighboring surfaces emit light onto their neighbors and the process continues until all of the light energy is distributed into the scene. Of course, not all of the light is re- emitted . Some of the light is absorbed into the material to a degree consistent with the material's properties. This distribution of energy is similar to how nature actually distributes light.

If a red particle hits surface A from a given light source and some of it is then re-emitted onto a neighboring surface, such as surface B, surface B will receive some of this red color information. If surface B was originally white, it would now have some red particles bleeding across the white. Surface B is a composite of red and white particles between two surfaces and the light source. This is a big advantage over ray tracing because energy from one surface can mix with others. This effect on surface B is known as color bleeding and this definitely increases realism in rendering synthetic images. This is because a collection of different colored diffused particles from many surfaces can become the color makeup of one single surface. Radiosity is very good at simulating diffuse reflections because it scatters and distributes the light in a random fashion correctly. This is a big improvement over ray tracing because ray tracing lacks the ability to correctly reflect diffuse lighting. Ray tracing uses a single point being reflected in only one direction, whereas radiosity uses a set of energy particles (photons) that are reflected in many directions. The intensity varies per particle, whereas ray tracing uses only a constant to track energy. With these major improvements, radiosity proved to be superior to ray tracing. See Figure 5.10 for an example of radiosity. The rendered image shows how radiosity increases realism in a scene by simulating diffuse reflections. Everything in the image seems to be more synthetic because of random particles being reflected in arbitrary directions. Radiosity is also better at simulating indirect illumination such as shadows. The shadows aren't perfectly one dark shade ; you can actually see the penumbras in the shadows.

Figure 5.10. Example of radiosity shows how it increases realism in a scene by simulat ing diffuse reflections.

graphic/05fig10.gif


NOTE

NOTE

Radiosity was introduced in 1984 at Cornell University in a paper called "Modeling the Interaction of Light between Diffuse Surfaces" by Goral,Torrance,and Greenberg.

Radiosity soon made its way into professional 3D rendering packages such as Bryce 3D, Lightscape, Light Flow, and Lightwave 3D. Games like Quake and Unreal also utilized radiosity by storing the illumination information as light maps. The illumination information is then combined with the game's level geometry for high-resolution real-time rendering. Radiosity hit the jackpot in rendering realistic images because most of the materials rendered in most scenes were diffuse reflections. But even radiosity, like ray tracing, has its dirty laundry. Radiosity works with the bad idea of taking a given geometry and subdividing it into smaller regions also known as patches . See Figure 5.11 for an example of this subdivision.

Figure 5.11. Subdivision of the geometry using patches.

graphic/05fig11.gif


This creates a subdivided mesh of the original geometry in order to break up each surface into many small regions to store the variance in color information. The solution to a better and more realistic render is more patches per surface. I've seen applications that divide each polygon in the mesh into patches of a unit in length (across and down), which guaranteed a realistic render. The tradeoff for this is time and memory. The more patches generated, the more memory is allocated. If the model is very big, the algorithm will keep allocating memory until there is no more physical memory available. This will, in turn , begin paging the hard disks that will probably slow down the render tremendously: The renders will now vary from two to 12 hours.

Another major problem is accuracy: If the model isn't properly subdivided, you will have artifacts in the final render when computing the correct flow of light between different types of materials. This is fine for small models with common materials but becomes trivial for larger-scaled models. A common problem in radiosity is shadow leaking, or shadows being incorrectly computed because of the mesh not being constructed properly. A typical example is jagged shading at surface edges between perpendicular surfaces. This required applications to carefully construct and subdivide the mesh to generate a correct and desirable image. The subdivision and storing of illuminative information on surfaces is a good idea but it creates a few problems of its own and lacks things that were easily implemented by ray tracing. For example, radiosity has problems with specular reflections and transparency that were easily done using ray tracing. Radiosity is currently the best-known rendering technique to date but hopefully one day it will soon be replaced by photon mapping.

[ LiB ]


Focus On Photon Mapping
Focus On Photon Mapping (Premier Press Game Development)
ISBN: 1592000088
EAN: 2147483647
Year: 2005
Pages: 128
Authors: Marlon John

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net