Chamber of Confession

Zhe Fu & Kunfan Cheng





Church of Light is one of Tadao Ando's most famous artpiece. This small church is unique in its lighting, which expresses the architect's theme: dual nature of existence. The space of the chapel is defined by light, the strong contrast between light and solid.

We choose this scene as our target both because of the artistic effects and the challenge in global illumination. To make it a little different, we also add other elements.

Basic Rendering Techniques

The following rendering techniques are implemented. These are the basic elements in our final rendering image:

Direct Illumination




Direct Illumination
Indirect Illumination


Indirect Illumination

Photon mapping is used to calculate indirect Illumination. Each photon shooted from light sources is reflected by or stored at diffuse surface. The tracing of photons is cut by Russian Roullete.

Different Shading Models

Putting direct illumination and indirect illumination together, we build different shading models:

  Caustic ( Visualized by photon mapping. )
  Fresnel equation ( Used to calculate the fraction of reflected light and the refracted light. )




Basic Shadings
More on Shadings


More on Shadings

  Glossy Reflection ( On the left mirror ball. )
  Depth of Field ( The two mirror balls are on the focal plane. )

Water Surface

To simulate the refractive flat water surface, we bump map a rectangular with a low frequency Perlin noise. Here we can see the effects of Fresnel Equation and caustics calculated by photon mapping.


Water Surface




Shooting Photons

In our scene the light source is outside the box and far away, the only way it illuminating the box inside is to go through the crossing cut on the wall. To avoid wasting photons shooted randomly from the light source, we must limit their direction and try to let as much as photons go through the crossing cut. Since the crossing is a relatively complex shape, we shoot all the photons on the wall instead. To accomplish this, we calculate the spherical coordinates of the four corners of the wall (in other case they can be the vertices of a convex polygon). Then we sample the photon's direction using following equations:

By shooting 500,000 photons from the light source randomly in our scene, we got 3073 stayed inside the chamber. After limiting the shooting direction, we got 55294 photons instead. Note that still a large number of photons are stored on the wall or reflected to the void.One thing to remember, the power of these photons should be scaled down by a factor of


Participating Media

The light passing through the crossing hole is likely to interact with the air particles around, or to be absorbed, scattered or transmitted in the participating medium.
One simple way to do this is ray marching algorithm, which is capable to simulate the single scatter effects. To eliminate the possible aliasing problem, we randomly change the marching step.
What is missing
Single Scatter
Yet the visual effects created by simple ray marching is not sufficient. We employed a volume photon map into our ray tracer to simulate the interaction between photons and participating medium. Also, the volume photon map brings interesting mist-like results, which is caused by diffuse surfaces' indirect illuminating.




with Volume Photon Map
Mist Effects



We create the bloom effect on the scene. In order to do this, we extract bright areas ( illuminance > some threshold ) and down-sample with bilinear filter. The down-sampled brightness is blurred by using a gaussian kernel ( 5x5 ). Then all the down-sampled brightness and additive blending are combined to make the original image.




Without Blooming
With Blooming


Coding Task Distribution

Zhe Fu photon mapping, ray marching, volume photon mapping
Kunfan Cheng SSE implementation, modeling, texturing