Looking back at what I set as the original goals, they were quite reasonable. After all, my project is only to implement global illumination with photon mapping - pretty standard stuff. However, there are still many features that I had left out and not implemented. Why? I think that the one aspect of this project that is particularly lacking was the initial research and planning of the framework I will be using. Most of the time spent on the project was not on the global illumination algorithm, but debugging and compromising for the nature of the framework. More specifically, there were many limitations of GLSL ES that I did not foresee that made many standard features of a scene graph or photon mapping very tricky and difficult to implement. With more thorough research and thinking, and planning through every step of the project, I believe the project would have gone much more smoothly. Nonetheless, I managed to make certain compromises and find various alternative methods along the way that allowed me to build some kind of global illumination renderer on WebGL.
The following is a list of features I have today:
- Scene list
- Ray tracing, with reflections and refractions
- Photon scattering
- Rendering with photon gathering (with only full reflection or refraction)
- Real-time interactive user-controlled camera
- Scene graph - instead using a simple scene list
- Photon scattering and rendering - not using standard literature technique
- Interactive user interface - allow users to modify the scene
- Irradiance Caching
After the Beta Review tomorrow, I will post more details about the future timeline of the next few weeks.