Upcoming Events
Unite 2010
11/10 - 11/12 @ Montréal, Canada

GDC China
12/5 - 12/7 @ Shanghai, China

Asia Game Show 2010
12/24 - 12/27  

GDC 2011
2/28 - 3/4 @ San Francisco, CA

More events...
Quick Stats
38 people currently visiting GDNet.
2406 articles in the reference section.

Help us fight cancer!
Join SETI Team GDNet!
Link to us Events 4 Gamers
Intel sponsors gamedev.net search:

  Contents

 What is radiosity?
 Real-time
 Radiosity:
 Impossible?

 The Method
 The Reason
 The Development
 The Application
 of Rules

 The Last Necessity
 The Realization
 Basic Outline
 Conclusion

 Printable version

 


  The Series

 Part I
 Part II

 

What is radiosity?

Radiosity is an addition to typical 3d rendering methods that increases the realism of any given image by a multitude. The theory behind it is that light does not just bounce off of objects and go into a persons eye, it also bounces off of objects onto other objects and then into the persons eye. And it also bounces off of objects onto objects onto yet more objects and then into the persons eye. And you can trace that until certain rays of light have bounced off of every single object in the room before it even reaches the eye. And that is actually what happens in real life! It results in something that one might reffere to as "color bleeding".

For an example of this, you could take a tennis ball, and hold it about a half inch away from a piece of white paper. If you look closely, the part of the paper that the ball is closest to has become a slight tint of yellow. That is the phenomena of radiosity at work.

Probably the most interesting thing about radiosity is that the human eye is very sensitive to it. If radiosity is not present in an image (such as with a typical 3d rendered image) your brain will flash a "not real" warning flag. That is why you can often tell that computer images are... well, computer images. You can tell that they are not real.

But many 3d rendering programs now have an option for rendering with radiosity. Lightflow (http://www.lightflowtech.com) for instance, has radiosity as a standard feature. In fact, it was designed around radiosity in the first place. Also, all composite computer graphics that you see in movies are typicaly rendered with radiosity Maya, for instance--which is a 3d graphics program used in many movies--can render with radiosity.

So how do you calculate radiosity? Well, it is a theoretically simple method, but that when put into practice is extremely complex and often unreasanabley slow. Of course, there is more then one method, but I am speaking of the traditional method. What you do is you first calculate lighting a single time, in the normal way, except you store the light values of any given polygon (i.e. how much light is reflecting off of it) as opposed to merely the color of the polygon after the lighting has been completed. Then, you use a recursive subdivision techneich to subdivide the meshes whereever there is an inconsistancey across it. You then re-calculate the lighting for the scene, storing the lighting values again. Except this time around you also take into account the light that is being reflected off of each of the polygons, and treat each of those as if they were a light source them selves. Also, you now have more polygons to calculate light values for because you subdivided them. You continue to do this until an user set thresh-hold, and then you stop. You now have thousands and thousands of polygons which all have their own light values, with radiosity taken into account. You then render the scene using interpolation ocross the surfaces of all polygons.

As you can see, that is an extremely time consuming, and memory hogging method. It should now be obvious that real-time radiosity is impossible, right?

Well, as I already said, that is only one of many methods. Lightflow, for example, uses an ad-hoc algorithm for all light calculation (including radiosity) that is much much faster then the traditional radiosity method. There are also ways to optimize the traditional method to make it a bit faster. There are also many other methods of calculating radiosity.

But all of those methods, however fast they may be for non-real-time calculations, are still not fast enough for real-time use.



Next : So real-time radiosity is impossible. Right?