Skip to end of metadata
Go to start of metadata

Light Propagation Volumes / Irradiance Volumes have been deprecated since CRYENGINE 3.5 and removed in 3.6.

Please note, Irradiance Volumes (this article) are unrelated to the still supported Global Illumination system. To activate Global Illumination, simply use e_GI=1 (or enable it in the renderer settings in Rollupbar).

Irradiance Volumes were renamed to Light Propagation Volumes.

Overview

Irradiance Volumes is a system for creating high performance lighting that is able to simulate radiosity and add color to reflected light. So, for example white light hitting a red object will produce a pinkish reflection on nearby surrounding objects. In addition, Irradiance Volumes allow us to effectively place as many lights as we need, even with overlapping radii. This makes it very good for cut-scenes and high quality interior lighting. Basically, this is like having the regular deferred system, plus a special volume in which there are no restrictions to overlapping lights and you get simulated radiosity.

Placing an Irradiance Volume

Following is a short guide for how to use it in the Sandbox Editor.

The Irradiancevolume can be found in the editor in Area on the RollupBar.

When it's placed, you'll see a lot of small dots inside the area. These dots are points that calculate the light effects and the density of these points increases or decreases the quality of the simulation.

If you increase the density too much, the volume will automatically limit the value to prevent you from using too much memory (the worst case is 32x32x32 3D texture that is about 768k per volume).

When you place it, you can scale it to fit the room with the scale tool.

Then you can add the regular light source. Make sure you've enabled the "DeferredLight" and "IrradianceVolumes" properties at the lightsource's properties tab. Also make sure the light source intersects bounding box of irradiance volume.

Also make sure you have deferred shading mode enabled in the renderer ("r_DeferredShading 1" console command).

In case you have a very large area with a lot of small lights inside, and you're not satisfied with the maximum density of the single grid, you can use multiple grids seamlessly stitched together.

To do this you need to create another grid (or copy the existing one with the Ctrl+C editor command), and then scale and move it to the existing one.

In case you have a lot of light sources or just want to look inside the technology, you can use the irradiance visualization mode ("r_IrradianceVolumes 2" console command).

In this mode all of the irradiance volumes render like they are in a dense fog. You can now see the light energy itself and how is it distributed in the space.

It's much faster than deferred lighting on scenes with complex lighting and with high numbers of lights that are overlapping.

The performance is constant and doesn't depend on the number of lights. So, that means that if you add it once, it doesn't matter how many lights will be placed into it.

FAQ

Where does this fit in with deferred shading?

It effectively compliments the system by allowing you to create a volume (see below) that can be placed in areas and then enables the features above.

What is the performance impact?

Currently performance is restricted by memory, each volume can never be large enough to exceed 1mb of memory. However rendering the lights inside the volume are essentially free.
The technique is applied deferred so it depends on the pixels it covers on the screen (resolution dependent).

What platforms are supported?

Currently DX9, DX10, Xbox 360, and PS3 are supported.

How do I place a light into it?

Simply create a common light and make sure you check "deferredshading" and "Irradiancevolumes" in the light properties. Make sure it intersects with the Irradiance volume.

Sample Images


The irradiance volume grid in the Editor.


The irradiance volume in the Editor.


Example(without specular).

  • No labels