Implementation of SSDO. While I like the idea of implementing the algorithm entirely on the CPU I'm not even sure if that's feasible. At some point, one needs to darken the pixels that are occluded and I don't know how to do that without making use of a pixel shader.
This feels similar to milestones to me, but I'll treat it as tasks/notes where multiple tasks/notes could be included in a single milestone.
- Setup simple drawing environment in OpenGL
- Incorporate mesh loading (maybe trimesh2)
- Implement SSAO
- Include Blinn-Phong shading
- Include texturing?
- Include Directional Occlusion (turn SSAO into SSDO)
- Include plain-vanilla shadow mapping, shadow volumes, or some other shadowing method.
- Include approximate single-bounce indirect illumination?
I think the Blinn-Phong shading is important for making it look decent, so it's a must. Including another shadowing method is another must. The SSDO by itself would look a bit odd; objects wouldn't cast what we normally think of as shadows If I have time I could potentially implement multiple shadowing techniques for comparison. Texturing would be nice and really shouldn't take too much effort. The approximate indirect illumination is cool, but I'm not entirely sure how much time I would need to do this.
Plan of Execution
- 2/20 - Drawing environment complete with mesh loading, phong shading and perhaps texturing. Essentially, a solid work environment.
- 2/24 - SSAO complete.
- 2/27 - Basic SSDO working. Decide on extra shadowing method.
- 3/2 - Shadows implemented.
- 3/5 - Implement depth peeling or multiple camera views.
- 3/6 - Demo
- 3/13 - Code completely bug free (hmm...)
I currently view the approximate indirect illumination as the only real risk. I should say, however, that if for some crazy reason I am unable to get mesh loading completed I still have the option of making some reasonably complex models by hand (not literally of course).
Of course, there will be an executable and code.
I plan to make it possible to toggle SSDO as well any shadow algorithm. That way a visual comparison could be made between basic GL_SMOOTH shading and the techniques I will implement.
Additionally, Greg Cipriano has implemented standard AO. It would be nice to compare my implementation of SSDO with actual AO. I don't expect to get spectacular frame rates, but I'm less concerned with performance than I am with appearance.
- Mesh Loader (trimesh2?)