Experiment of Instant Radiosity by OpenGL + GLSL

I have tried to implement Instant Radiosity by OpenGL + GLSL.

Instant Radiosity を OpenGL + GLSL で試しに実装してみました.

Instant Radiosity による 1 次の間接光を使った結果.
Indirect light by instant radiosity.



環境光 + 直接光 + 1 次の間接光を使った結果.
Using ambient_light + direct_light + indirect_light .



VPL による間接光を使わずに, 環境光 + 直接光 を使った結果.
Using ambient_light + direct_light.



First, Virtual Point Lights ( VPLs ) are scattered to the scene from the point light. Then, VPL postion, normal and color information are stored in arrays.
Next, I haved set those arrays as GLSL uniforms and used them for shading by fragment shader. And, in this implementation, visibility of VPL is not take into acount.

実装としては, まず CPU で 点光源から Virtual Point Light ( VPL ) をばらまいて, VPL の位置座標, 当たった面の法線, 色情報を配列に保存します. 次にそれらの配列を GLSL の uniform として GPU 側に与えて, フラグメントシェーダで VPL を使ったシェーディングをしています.

また今回, VPL が遮蔽されるケースは考慮していないです.