Area lights (Forward and Deferred)

Started by
7 comments, last by GuyCalledFrank 11 years, 1 month ago

Currently i have the 3 base light types supported and working in a programmable pipeline. I would like to tackle Area lights, but i am a little stumped at the moment.

my thinking is

Deferred Approach (Light Volume)

-simliar to a point light, i would just use a model that is shaped according to the defined area light

-ex. rectangular light, would be a quadrilateral that is extruded to accomadate the fov (this is similar to a spotlight, but instead of coming from a point, it comes from a plane

Forward Approach

-no clue

if anyone can point me in a direction, or give advice, that would be appreciated.

Code makes the man
Advertisement

Area lighting has just come to be supported in recent engines through the usage of light propagation volumes (cry engine 3) and sparse voxel octree cone tracing (unreal engine 4).

It was previously supported through static light-mapping before, using lengthy final gathering computations. final gathering is the second step after photon mapping, it generally uses a fixed number of sample rays that are gathered per surface patch around the hemisphere of the surface patch and it brings the contribution of the nearest photon at its impact point, if it makes sense. (photon has an opposed impact normal etc...) This takes minutes or even hours to prepare such a solution.

Now, you're free to try and invent your own method. don't forget to publish it and present it at siggraph 2013 :)

http://www.gamedev.net/topic/552315-glsl-area-light-implementation/

I think someone may have extended this technique for use in Blender Game Engine:

Ultra cheap spherical area light hack that just uses a new attenuation function: http://imdoingitwrong.wordpress.com/2011/01/31/light-attenuation/

With a good specular area/variable soft shadows it looks like it would work well enough.

As for the above textured area light thing, if you wanted shadows you could try back projection. You take a shadow map as a proxy scene representation and then reproject from the object back to the area light based on that shadow map. There's plenty of papers out there, not sure any of them work well though.

Computing the actual contribution from an area light is fairly involved: you need to integrate the radiance being emitted from the light multiplied with your BRDF for the entire visible surface of the light source. Most real-time "area light" implementations I've seen are very weak approximations , and are often formulated in terms of a specific BRDF.

Computing the actual contribution from an area light is fairly involved: you need to integrate the radiance being emitted from the light multiplied with your BRDF for the entire visible surface of the light source. Most real-time "area light" implementations I've seen are very weak approximations , and are often formulated in terms of a specific BRDF.

Crytek has some sort of demon magic going that I'm hoping they'll be talking about at GDC: https://www.youtube.com/watch?feature=player_detailpage&v=JWvgETOo5ek#t=111s

Though now that I look at it again I don't see any shadowing, it might just be that hack Chris_F posted.

PCSS might be a good place to start for shadows.

Computing the actual contribution from an area light is fairly involved: you need to integrate the radiance being emitted from the light multiplied with your BRDF for the entire visible surface of the light source. Most real-time "area light" implementations I've seen are very weak approximations , and are often formulated in terms of a specific BRDF.

Crytek has some sort of demon magic going that I'm hoping they'll be talking about at GDC: https://www.youtube.com/watch?feature=player_detailpage&v=JWvgETOo5ek#t=111s

Though now that I look at it again I don't see any shadowing, it might just be that hack Chris_F posted.


Yeah my money would be on some sort of attenuation adjustment combined with screen space reflections.

That BGE video looks really nice imho. Seems similiar to billboard reflections (quad intersection in shader + mip adjustment for glossiness) plus some pretty attenuation. I would like to know how to compute such attenuation smile.png. Spherical thing is a little different.

---

Missed Chris_F's link in 3rd post... will take a look

This topic is closed to new replies.

Advertisement