Realistic Indoor Daylight Illumination

Mike Houston and Jonathan Ragan-Kelley

Figure 2: One example of the lobby of the Packard building on an overcast afternoon.
Figure 1: A final rendering of the lobby early in an overcast evening.
(download high resolution tiff)


We set out to simulate the complex illumination of the Packard Electrical Engineering lobby under realistic daylight lighting conditions.

Here we find an architecturally interesting geometry and aesthetically overwhelming diffuse illumination which combine to create a photogenic and artistically striking space. The space is characterized by simple, flat surfaces under complex illumination. Hence, the burden of realistically modeling the scene falls almost entirely on the modeling the scene's illumination.

The scene is illuminated by a combination of direct and ambient sky light, which varies greatly under different weather conditions and at different times of day, and which enters the scene through small openings at ground level and the comparatively small skylight. We employed environment map illumination using a procedural environment map to simulate illumination from the sky as a function of time-of-day.

This type of environment is generally expensive for traditional ray-tracers. The combination of a large diffuse light source, the sky, and a strong direct light source, the sun, usually requires a very large amount of samples per ray to capture the environment. Things are further complicated by the diffuse light source being very large. We attempted to solve the problem using a combination of photon mapping and monte-carlo ray tracing.


The model was constructed using photogammetry and hand-modeling. Off-the-shelf tools were employed to extract critical dimensions and camera properties from a large array of uncalibrated photographs. To achieve an accurate solution, extensive barrel distortion correction had to be performed on the source photographs.

From the photogrammetrically measured dimensions, the architecture was hand modeled. This manually constructed geometry could then be loaded back into the photogrammetry environment to be visualized from the positions of the various source photographs. The model was refined until registration was satisfactorily precise.

Figure 3: Two previews of the recovered model overlayed atop the photographs from which the data was extracted..

Photon Mapping

We implemented photon mapping based off of Henrik Wann Jensen's book Realistic Image Synthesis Using Photon Mapping. Thankfully, the Jensen describes very carefully the data structures and a base implementation for his method of photon mapping. We modified LRT to include the building of a global photon map and well as the structures to sample it. Photon tracing was accomplished using Russian Roulette by firing photons from each of the light sources using stratified sampling weighted by the power of each light source. The main modification to LRT was to correctly sample the BSDF function of the surfaces, weighting each component (diffuse reflection, diffuse transmission, specular reflection, specular transmission) to correctly bounce or absorb a photon. Jensen’s data structure is reasonable fast and space efficient. Traces of million photons often took less time that ray tracing a simple scene such as the cornel box.

Light Sources

There are two light sources in our model of the Packard Building. The sky is modeled with a hemispherical light source that various its power spectrum based on input time. The sun is modeled as a distant light source, a modified point light, that moves in an arc along the hemisphere according to our best estimate for the movement of the summer sun. Both the ray tracer and the photon map use a similar method for sampling the light sources. In the case of the photon mapping, each light is sampled using a power weighted random selection, and sample is then chosen on the sky-light or the wall of windows using an area weighted random sample. These two samples are then connected to create a ray for the photon to initially trace. This was done to make more of the photons fall inside of the viewing area. Since we were visualizing the interior of the building, it made no sense to waste photons on things we would never see, like the outside of the building. This made the photon tracing more useful with few numbers of photons and therefore created a photon map with a smaller footprint and a faster search.

Figure 4: A rectangular coordinate visualization of the sky. Click the image to view an animation of the sky over the course of a day.

For direct illumination, the integrator uses conventional monte-carlo sampling of the hemispherical sky light. The integrator generates a large number of stratified samples on the hemisphere. It is able to finely sample the hemisphere with relative efficiency because it employs a fast initial intersection kill whereby rays are first intersected against the skylight alone, before being testest against the whole scene for shadows. In this way, the integrator is able to perform stratified sampling on the hemisphere in extremely short order with on the order of several hundred samples across the hemisphere.

Ray Tracing

We created several new integrators during the course of this project. The first integrator we created was the PhotonVis integrator that was used to directly visualize the photon map. This integrator fires rays into the scene, and at an intersection, samples the photon map at that location. This integrator was mostly used to debug the photon map and to check light balance between the direct and indirect contributions from the light sources.

The second integrator we created was the PhotonMap integrator that combines a more traditional ray tracer for direct illumination with a fast approximation of the indirect illumination through a direct sample of the photon map.

The third integrator we created, the FinalGathering integrator, is implemented in line with what Jensen describes in his book. The integrator casts rays out into the scene, and at an intersection samples the BSDF of the surface. The indirect contribution is calculated by with distribution ray tracing. It path traces the first diffuse reflection, and samples the photon map at each second-level sample. The direct illumination is computed by traditional monte-carlo sampling of the light sources. These two results are then combined and weighted properly to create the final image. We intended to employ this integrator to render the final images. However, combining path-traced sampling of the diffuse reflection with monte-carlo sampling of the direct environmental illumination proved excessively costly to render with low noise, and so we explored using a simple derivative of the PhotonMap integrator for far faster indirect illumination.

For the final renders, we combined the monte-carlo ray tracing of direct illumination with a fast photon map approximation of the indirect illumination to achieve visually pleasing, acceptably accurate results far more efficiently than the FinalGather integrator with fewer noise issues.


Figure 4: Renderings of morning, noon, afternoon, and evening.

View movie (requires Quicktime 5).

We set out to model the complex diffuse interreflection and environmental lighting in this real-world environment using modern rendering techniques. We were successful in recreating much of the illumination in this this complex environment. Our still-image renderings are visually pleasing, and our animations striking. The key shortcoming which remains in our renderer is a lack of temporal coherence in the global illumination photon map. As the illumination of the scene changes over the course of a day, the photon map appears to flicker in animation. This effect would all but disappear in the final gathering renderer, where the photon map is never visualized directly, but the rendering expense for a long animation would increase appreciably.

Download code and scene.


Wann Jensen, H., A Practical Guide to Global Illumination Using Photon Maps.
Keller, A., Efficient Importance Sampling Techniques for the Photon Map.
Veach, E., Metropolis Light Transport.
Veach, E., Introduction to Monte Carlo Integration, CS448 Lecture 6 Notes, 1997.