5

I have been trying to find a suitable global illumination technique, preferably based on OpenGL or GPGPU, to light an outdoor scene which has static objects and dynamic light sources (it is a city model). It does not need to be very detailled or accurate, but it should be rather simple and if possible, iterative and refining (so I can display the intermediate results).

The best matches I found on the internet is Ray tracing, Precomputed Radiance Transfer(PRT) and Radiosity.

Ray tracing will be far too slow for my application. PRT seems to be too complex and has a huge precomputation step, and radiosity seems too slow and I am not sure if it can be implemented multi threaded.

Does anyone know a better technique, or a workaround of the above problems?

Violin Yanev
  • 1,507
  • 2
  • 16
  • 23
  • 1
    Something like this? http://www.vis.uni-stuttgart.de/~dachsbcn/download/sii.pdf – Damon Dec 12 '11 at 13:19
  • Thanks for the link! But it seems to be oriented towards caustics and specular effects. I am mostly interested on diffuse illumination and object interaction (such as in Radiosity). I guess graphics hardware is not capable of real-time GI yet... – Violin Yanev Dec 13 '11 at 17:55
  • Try light propagation volumes (google). It's the technique used in the game Crysis. It is pretty difficult to implement though. If your geometry is static, maybe you could also use precomputed radiance transfer. – the swine Jan 15 '12 at 19:07
  • Maybe ambient occlusion is sufficient? [link](http://codeflow.org/entries/2011/oct/25/webgl-screenspace-ambient-occlusion/) – Vertexwahn Feb 08 '13 at 12:17

2 Answers2

2

In terms of a more realistic and usable approach than svoGI (Crassin's voxel technique), you might consider deferred irradiance volumes, there is a great webGL demo with full source available here, its based around using spherical harmonics.

There are also older techniques like LPV, which you can check out here, here and here.

Necrolis
  • 25,836
  • 3
  • 63
  • 101
1

Yes, this question is old, but people might still stumble upon it.
How about "Voxel Cone Tracing"?
The Unreal Engine 4 implements it and they also described the algorithm in a presentation.
http://www.unrealengine.com/files/misc/The_Technology_Behind_the_Elemental_Demo_16x9_%282%29.pdf

Tara
  • 1,673
  • 22
  • 30
  • The whole "simple" aspect is missing from this I think. Also, this technique is fairly computationally expensive and relies on advanced GPGPU understanding. You'll also need (if I remember correctly) OpenCL extensions currently supported on Nvidia hardware only... pretty restrictive if you ask me. – Lee Jacobs Feb 21 '13 at 16:41
  • Woops. You're right. I forgot about the "simple" aspect... But he did say it could be GPGPU based. But lets be honest, there's nothing simple about global illumination. – Tara Feb 21 '13 at 16:59
  • Implementing it in a raytracer is almost trivial. Then implementing photon mapping is also not TOO difficult... but those are both un-acceptable answers to this problem. FAST global illumination is not a simple thing to accomplish (especially for real time scenes with dynamic lighting). But yeah, you're spot on to suggest voxel cone tracing ... if you can implement this technique then you're well on your way to getting a next gen graphics backend working. – Lee Jacobs Feb 21 '13 at 18:54
  • Yes, in a ray/path tracer it's obviously very easy. But he wants it simple and fast. That doesn't go well together in my opinion. But I wonder why he wants it to be iterative? Maybe he just described it a bit strange... if it really has to be iterative i'd totally recommend path tracing or photon mapping. Especially because the core algorithm is very easy to implement (optimizing isn't). – Tara Feb 21 '13 at 19:04