The files below are modified up versions of the key pieces of source
code used in our experimental setup. These are intended to assist
others in implementing or experimenting with our algorithm. They have
been heavily commented in support of that goal. This code won't
compile as is because it is missing the surrounding game engine
infrastructure, which we are not releasing.
Please keep in mind that this is research code released to further
scientific progress and education.
We do not provide technical support for this code and it is not a
product. We have not produced a standalone binary or plug-in for
distribution. There is no warranty on the code, so use it at your own
risk. Although the algorithms and data sources are fully described in
the paper, we cannot release the full project or data files directly
for intellectual property reasons. All code is copyright 2009 Morgan
McGuire, all rights reserved.
The files provided in ispm.zip are:
- ISPM - complete implementation of the rendering algorithm
- Photon - statistical photon representation
- PhotonVolume - repacking of Photon for radiance estimate on the GPU
- GBuffers - shader for producing deferred-shading geometry buffers
- GFXPhotonVolumeArray - helper for transferring PhotonVolumes to the GPU
- BounceMap - sample bounce map shader
- PhotonVolume - shader for generating photon volumes from the data in GFXPhotonVolumeArray and performing the actual radiance estimate
- Upsample - joint bilateral upsampling filter (bilinear kernel)
In addition, the major support classes have been released in the
G3D Innovation Engine version 8.0
beta 1. These include SuperBSDF, SuperShader, Material,
ArticulatedModel, GBuffers, TriTree, and Tri classes. The version of
TriTree in G3D is a bounding interval hierarchy that is about 2x
faster than the kd-tree used in our experiments.