Light Propagation Volumes
October 2011
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.
Download using the link below and unzip, run the batch file “start.bat”
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|