Real time many light rendering

FatGarfield

Newcomer
Hello,

In my recent project, I met a many light rendering problem.

We're trying to navigate an architectual scene in real time with realistic lighting effect and keep the data size minimum for network transfer.

There are 200+ light sources in this scene.

I know there are some solutions for such kind of problem:

1. PRT, the coefficient parameters comsume a large volume of data
2. Generate a light map for each object, but the light maps occupy data space and prone to aliasing
3. Brutal force shading calculation, for 200+ light sources, it is impossible in real time

I have a rough idea, to assign light sources to scene objects. for each object, only takes into account several light souce. The key idea is , the lights source contribute more to the shading and shadow to a mesh are selected as contributor to this mesh.

I did my homework, but I can't find papers on this kind of techniques, anyone has some ideas or suggestions?

thanks for advance for any of your comments.
 
I did my homework, but I can't find papers on this kind of techniques, anyone has some ideas or suggestions?

thanks for advance for any of your comments.
I think (and I could easily be wrong) there may have been a discussion on this on the graphics algorithms mailing list. There is an archive on the web so it may be worth searching for that.
 
I remember reading slides title: Interactive Cinematic Lighting by Pellacini dealing with 100k lights. I don't know if that's what you are looking for though.
 
Deffered shading would definitely be beneficial in your case. As for your suggestion, the best course of action would probably be "brute-force" assignment of the lights to the objects based on the distance/attenuation/other factors; once you have done that you only need to recalculate when the world changes. This seems to be rather simple to implement efficiently.
 
Google "Light Cuts" as well IIRC. It's a tree-based method to allow you to cluster like lights when they are similar enough and I believe it can operation in a view-dependent manner; basically you can take advantage of the fact that when you're far enough away from a set of lights, you can effectively LOD them into a single light source. This is especially useful for shadowed lights since you can cut down on the number of shadows maps that you need to render.

Definitely look into deferred lighting/shading though too... if you're not doing shadow maps for every light (which is a separate and tough problem by itself), a deferred lighting renderer will easily be able to swallow hundreds of lights at real-time rates.
 
One thing that people have done in the past is to select the lights that influence an object the most and use those as usual and then project the remaining lights into spherical harmonics. You would do this for each object in your scene. I remember Tom Forsyth used to post about this kind of technique on various mailing lists, here's a blog post he wrote about the topic (he gets into the Many Lights idea part way down the page):

[noparse]http://home.comcast.net/~t...l Harmonics in Actual Games notes]][/noparse]

Like some of the other suggestions, this assumes that you do not need shadow maps for every light source. If you decide to go that route, then you may also find Peter-Pike Sloan's "Stupid SH Tricks" paper to be helpful:

http://ppsloan.org/publications/StupidSH36.pdf
 
Back
Top