Playing around with Global Illumination

Currently, I don't have a lot of free time, because of some changes in my private life. That's why I don't have much time to work on Irrlicht, answer mails, blog, etc. Sorry for that. But yesterday (national holiday) I grabbed some few free hours to play around with Global Illumination: I implemented Radiosity into irrEdit. The following screen shot shows the first result:

A scene lighted with a single point light, calculated with two different lighting algorithms

It doesn't look very impressive yet, I know. Especially if you compare the calculation times: The scene on the left image needed 0.3 seconds to be calculated, the right one about 40 seconds. And this gets even less impressive if you think that you can produce nearly the same result by using the fast version with a shadow opacity value of about 0.8 (which is the default value in irrEdit currently and has been changed to 1.0 here to make the difference more obvious). In addition, I'm not very sure if the result is 100% correct. I didn't make a lot of tests yet. But it's a first step.

I still have to play around and adjust some stuff in the radiosity renderer, but it works. The cool thing about it: It already theoretically can do nice things like color bleeding and area lights. Another cool feature: Everything is currently implemented in software, everything is running on the CPU, and I already prepared the renderer to run in multiple threads, on multiple cores. But I also prepared it to utilize the GPU for its calculations, just a few dozen lines need to be added to let the renderer use those crazy fast graphics hardware available today.

eight comments, already:

Wow, looks great!

And the things you plan to implement sounds like very fun and cool stuff ;)
bicunisa (link) - 28 10 06 - 00:48

WOW! that’s very impressive!
cmoibenlepro - 28 10 06 - 03:54

Nice. Get it to run off a GPGPU, and your set to go :) Just have to wait ‘till Vista hits…
Josh - 28 10 06 - 04:55

great work!! but i have a question: why the render quality of irrlicht is so different from the render quality of OGRE? I hope that this question is no offensive :-)
white tiger - 28 10 06 - 15:32

Nice work, especially for a short amount of time to work on it. I think the results are much better than scaled direct lighting, personally. I noticed some very common issues in the result, such as spurious light bleeding where geometry joins, I’m guessing this is probably because the method you’re using to calculate involved rendering from the surface’s point of view (that would certainly gel with a GPU accelerated version later), which because of the near plane, or lack of backfaces, you’re ‘seeing through’ geometry from the surfaces point of view when in fact the view should be blocked. One nice little hack for this is to render backfaces for solid objects with a simple black colour to take that out of the equation – this can result in darker corners than intuition might suggest, but it can actually look similar to the way ambient occlusion does.

Just my 2c :)
Steve () (link) - 28 10 06 - 18:33

Actually, that is a clever trick, Steve. I’ll have to give that a shot in my little GPU-radiosity experiment :)
Eternl Knight () - 29 10 06 - 01:21

The Direct Lighting would do well in some horror movie
while the Global Illumination is good for some movie filled with machine guns & lots of screaming…

So… When are you going to openly challenge Gile[s]?
RustyNail - 30 10 06 - 06:46

hehe :)
@white tiger: define quality. :)
@steve: good idea, I’ll try this out. just did some tests, going to blog it soon.
niko - 30 10 06 - 20:19

Remember personal info?
Email (optional):
URL (optional):
Enter "layered" (antispam):
Comment:Emoticons / Textile

  ( Register your username / Log in )

Notify: Yes, send me email when someone replies.  

Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.
Note: If you type in your email adress above, it will be visible to other visitors, although it will be hidden for bots using javaScript.