Playing God
Rendering Features
- Intersection of Triangles, Spheres, Boxes, and Instanced Geometry
- Point and Area Lighting
- Reflection
- Refraction (with Schlick's Approximation Of Reflected Light)
- BSP Acceleration Structure with OpenGL visualization and Mailboxing
- Bilinear and Trilinear Mipmapping
- Bump Mapping
- Perlin Noise for Procedural Texturing
- SuperSampling, both normal and grid-based using jittered samples
- Simple Adaptive Supersampling Algorithm
- Depth of Field Effects
- Glossy Reflection
- Soft Shadowing
- Global Illumination with Path Tracing
- Global Illumination with Photon Mapping and Final Gathering
- Caustic Illumination with Seperate Photon Map
- Procedural Grass
Results
Not being very artistically minded, I started by implementing features which I thought would look nice for the final image:
Depth Of Field
Soft Shadows
Glossy Reflection
Path Tracing
Global Illumination using Jensen's implementation of the kd-tree Photon Map
Caustics
Now that I had some nice features to play with I began thinking about putting together the final image. After struggling for inspiration, I went back to my earliest memory as a child which was walking through the grass in my front yard. My focus then became producing a nice, healthy lawn.
I played around with cut grass and slightly shinier blades but the results looked unnatural

The results were promising, but the addition of soft shadowing along with super sampling was necessary to produce a more realistic effect:
My favorite feature of the renderer is without question the grass. It's completely general and can be specified with any position, height, density, color and dimension. While one blade of grass is unimpressive, the aggregate effect is very realistic because the observer isn't drawn to a single blade of grass but rather the entire patch. When supersampling is used to improve the harsh rising edges of the triangles, it produces really nice results.
Acknowledgements
- Vikrum Nijjar - the magnifying glass model and BSP acceleration insight.
- Wojciech Jarosz - for inspiring the final scene and clarifying the more obscure points of global illumination.