Friday, March 25, 2011

Open Sourced

My final project will be open sourced and hosted at:
http://code.google.com/p/cis565-deferred-shading-project/

As of now, there is hardly any of my code in the repository. For convenience, I plan on using the following libraries, which I have been accustomed to using on the homework assignments: freeglut, glew, glm, and SOIL.

In preparation for my presentation on deferred shading, I have been reading quite a few papers and articles on deferred shading. This has given me a better idea of how I want to set up my g-buffer for the targeted effects. With the current plan, four 32-bit frame buffers will be used, arranged as follows:

  • 0 - diffuse.rgb + materialID
  • 1 - normal.xy (16 bits each)
  • 2 - depth (24 bits) + flags
  • 3 - screenSpaceVelocity.xy + objectID
One bit of the flag value will represent the sign of the z component of the normal. However, the storage scheme for the normals will probably be changed. Patrick sent me a very good link about different compression methods that can be used for the normals: http://aras-p.info/texts/CompactNormalStorage.html

Wednesday, March 23, 2011

First Post

The proposal for my project can be found at: http://sites.google.com/site/smt565files/ProjectProposal.pdf

My first step is going to be to figure out what I am going to use for scene geometry. Because my aim is to include motion-blur as a post-processing effect, I need to include animation of some sort. My original thought was to make a simple cubic room with some crudely animated models (i.e., the whole model moves as one unit) flying around inside of it. I didn't plan on using any sort of scene graph, rather each object would have a single world space transform associated with it. The animation component would just be circular paths and rotations around the center of each object. Unfortunately, I haven't come across a suitable library for loading 3d model information.

Now, I am hoping to use simple 3d primitives such as cubes and spheres. I envision a scene full of bouncing balls and light-casting, rotating, stalactites coming down from the ceiling. Seeing as how the project is about a rendering process, I don't think the scene geometry should be very consequential. However, the envisioned scene should provide enough movement and edges for my purposes.

As mentioned in my proposal, the inspiration for the screen-space classification for lighting and post processing comes from the following two sources:

  • Hutchinson et al, "Screen Space Classification for Efficient Deferred Shading"
  • Johan Andersson, "Parallel Graphics in Frostbite - Current and Future"

At some point I am going to open-source the project code. I'm still not sure whether I am going to use a model loader and what license it would be subject to, so I am going to hold off on doing so for the time being.