Jump to content
  • Advertisement
Sign in to follow this  
jonathanc

OpenGL Global Illumination techniques

This topic is 3193 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi all, I am a beginner in graphics programming and I am currently researching into lighting methods. I have created a procedurally generated terrain but it was lit using simple lighting technique. You can see the youtube video here :
The demo is coded using C++ language and OpenGL API. I am now looking to extend the demo a bit by making it look more photorealistic whilst not loosing too much of its overall performance. Basically I want to implement GI algorithms into the demo and still have it run in real time. This research is part of my Honours year dissertation. I have been reading up on the basics of Global Illumination but I am hoping that you guys could suggest some websites/books that is suitable to read up on. Also, any suggestion on implementing my research would be very much appreciated. I am now looking at deferred lighting (http://www.infinity-universe.com/Infinity/index.php?option=com_content&task=view&id=105&Itemid=47), Imperfect Shadow Maps (
), Light Propogation Volumes (http://www.crytek.com/fileadmin/user_upload/inside/presentations/2009/Light_Propagation_Volumes.pdf) and also some work on fast computation of GI on dynamic height fields (http://www.dgp.toronto.edu/~derek/abstracts.2009.html#NS09). They all look pretty good and I am wondering if it will be feasable to look into researching them keeping in mind that I have a limited time constraint of around 3 months. Thank you very much and Merry Xmas!!!

Share this post


Link to post
Share on other sites
Advertisement
This is the best approximate realtime technique I've seen: http://www.gamedev.net/community/forums/topic.asp?topic_id=555407

Though by realtime I don't mean on today's consoles.

Share this post


Link to post
Share on other sites
Quote:
Original post by KRIGSSVIN
Must GI be fully dynamic or may it be pre-computed?


Well my demo will use a procedurally generated terrain so I am hoping of achieving the same with the GI, so I guess it has to be dynamic?

Correct me if I am wrong though.

Share this post


Link to post
Share on other sites
Quote:
Original post by jonathanc
Quote:
Original post by KRIGSSVIN
Must GI be fully dynamic or may it be pre-computed?


Well my demo will use a procedurally generated terrain so I am hoping of achieving the same with the GI, so I guess it has to be dynamic?

Correct me if I am wrong though.


Not necessarily, because probably you generate the terrain just once at the beginning of the program. So you can spend some more time calculating GI and then just display it.

It would only need to be realtime if you wanted to handle arbitrarily-shaped moving objects affecting it, for example. Otherwise you can just bake it beforehand using any reasonably fast algorithm. You could even raytrace it and then bake it in a texture.

Share this post


Link to post
Share on other sites
If the scene was not very big and complex I'd use Irradiance Volumes technique, because they support indirect occlusion and thus the lighting is more realistic.

Share this post


Link to post
Share on other sites
Do you want to simulate just ambient occlusion? or simulate indirect light + ambient occlusion? Do you need caustics? Or even dispersion?

Anyway read something here:
Caustics - http://graphics.cs.ucf.edu/caustics/
Real time radiosity - http://homepages.paradise.net.nz/nickamy/realtimerad/realtimerad.html - this is basic principle (although it is very hard (read close to impossible for game scenes) to achieve secondary shadows in real time)
Deferred radiosity from first person perspective - http://www.gamedev.net/community/forums/topic.asp?topic_id=438221&PageSize=25&WhichPage=2

EDIT: fixed caustics link...

Share this post


Link to post
Share on other sites
Wow, thanks so much for the helpful replies!

Well I am looking to achieve a simple, efficient GI effect. As I have moving water in the terrain I presume that I would need caustics as well? I am looking to implement direct and indirect lighting for the terrain.

As for real time, I won't have any arbitary object moving but I will include procedurally generated vegetation, such as billboard grass and trees. I am not sure if I will animate them at this point. I am also not sure what lighting model to implement for them!

Sorry for all the newbish questions, it seems that GI is a very large area and I am still trying to absorb all the various different algorithms and techniques.

Did you guys have a look at my Youtube demo? I used a very simple lighting method in that and its pre calculated everytime the terrain is "morphed". So there's no self shadowing etc and it looks pretty bland. The reflections/refractions on the water looks bland too. I am hoping to apply some sort of "sparkling" effect to the water when reflecting sunshine and also a radiosity like effect on the terrain (and the vegetation I would add in the future).

Share this post


Link to post
Share on other sites
Ambient Occlusion is only really useful if you have mostly diffuse surfaces in your scene and not a lot of directional lighting. Maybe this is the case, but you mentioned water so I suspect not.

Photon Mapping is another technique which you could look into, and while not as simple (either conceptually or from an implementation standpoint) you can get pretty good results if you use some advanced techniques. It also handles refraction and light scattering, and you can customize the performance/accuracy tradeoff by emitting fewer photons. There's been a lot of research into accelerating photon mapping to run on graphics hardware, most recently probably this paper. It requires some background knowledge, but you can trace the references backward until you have everything you need.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!