Final Year Project Underway: Deferred Rendering Transparency
Posted on January 17, 13
Although I actually began work on my final year project late last year, my coursework demands over Christmas meant that I did not make as much progress as I would have liked. But that is out of the way now and I have to present my first demo for the project in late February so this is about to change. As part of my demonstration we were required to create a scientific poster (below).
This gives an overview of my project. Essentially the project is to create a deferred rendering engine. I am going to be using DirectX and C++ to do this. As this is a final year project we were required to choose a project that included a research topic. In my case this is the inclusion of transparency in deferred rendering. If you are familiar with deferred rendering techniques you will know that incorporating transparency is a major problem. One of the most common approaches is to simply draw all transparent geometry separately in a traditional forward renderer. This is far from ideal as it introduces lighting inconsistencies and administration problems due to having to maintain 2 separate renderers. My proposed solution was taken from the ShaderX7 series and introduced by David Pangerl and renders transparent geometry within the deferred renderer. My project will seek to explore how viable this technique is in a rendering engine (The technique is discussed in the poster).
Whilst this project is still not the only work I have to undertake this semester, it is the majority of it so I hope to have significantly more time to work on it, particularly in the coming month or 2. I am very excited about this Expect a lot of posts and updates on this project. At the moment my implementation has the basic framework set up and I am working on creating a custom .obj importer so that I can get some more interesting models into my demos (at present it just supports .x) This is a significantly harder task than I expected as it has meant I have had to delve into the .obj specification which holds a significant amount of information which needs to be parsed. I decided to roll my own as there seems to be a distinct lack of robust open-source .obj importers. I have found several which work for some models but not others. This is not much use to me as I want it to support as many as possible.
I intend to make some tutorials available for others wishing to do the same as I have had to collate information from a lot of different sources. Not many places seem to offer information on all aspects of the obj format.