Light Propagation Volumes


October 2011


Description

Downloads

Screenshot



Description


This program demonstrates my attempt to implement Crytek's "Light propagation volumes" according to "Cascaded Light Propagation Volumes for Real-Time Indirect Illumination" and "Light Propagation Volumes in CryEngine 3".

Both papers are included in the download below.


The program demonstrates:

- injection of VPLs

- injection of scene geometry

- propagation (computes the flux onto the faces of destination cells, uses blocking potentials)

- reduces light-bleeding through thin objects (like walls) by calculating a dampening factor based on the directional derivative of the intensity distribution


It does not use nested grids (cascades).


Controls:

W move forward

S move back

A move left

D move right

C move down

SPACE move up

Directional keys to change view direction


F1 indirect light ON

F2 indirect light OFF

F3 use standard material to render the floor of the building

F4 use black color to render the floor thus reflecting no light from the floor

F5 use red color to render the floor thus reflecting red light from the floor

F6 toggle wire frame/fill mode

F7 rotate light ON/OFF

F8 use blocking potentials ON/OFF

F9 apply dampening factor ON/OFF

F10 light rotation axis = (1, 0, 0)

F11 light rotation axis = (1, 0, 1)


The program draws a simple building using one directional light which changes its direction to show how the building gets lit by direct and indirect light.

It requires OpenGL 2.x with the EXT_gpu_shader4 extension.




Downloads

Download using the link below and unzip, run the batch file “start.bat”


Source + Binaries


Movie 1

Movie 2

Movie 3



Screenshots



direct + indirect light


direct light only


direct + indirect light



direct + indirect light


direct light only


direct + indirect light



direct + indirect light


direct light only


direct + indirect light



direct + indirect light


direct light only


direct + indirect light