Hi all,
*tl;dr is at the bottom – sorry for the long one!
I'm about to begin my third and final year at uni (studying Games Programming) and it's certainly getting close to the time I need to be thinking of a thesis for my final year individual project. (400 hours which includes a major piece of software (60%), 10k word report (30%) and 1 hour long demo/viva (10%))
My degree, sadly, doesn't do all that much in the way of the programmable pipeline - actually, it does absolutely nothing! So I have spent the past 3/4 months studying and developing a rendering demo application using Direct3D11 via the book (Excellent resource) "Direct3D11: A Shader Approach" (Frank D. Luna).
That is now complete and I'm looking to get started on the actual project as soon as physically possible (The code, anyway). But, I'm a little out of ideas on what would make a reasonable undergrad project.
I've had discussions with one of my lecturers (It's worth noting he’s a physics kind of guy and not 3D graphics. But no one in the uni - as far as I know - is a graphics kind of guy so I'm stuck with it like so - which doesn’t bother me... I like learning about this kind of stuff!) and proposed an idea: The original idea was to develop a forward render, classic deferred renderer and a light pre pass renderer and compare the performance, limitations, etc of the three renderers in a series of different scenes (Eg: low poly+high light count, high poly+low light count, etc). He liked the idea - it did need some refining, however.
I was told that the whole idea of a thesis is to pick a subject, explore subject and come up with a project based (I have found very little in the way od data that can compare these systems around the web - just general statements) on an academic survey (Looking at posts on the internet and then developing an idea for a project based on, for example, known issues that could be fixed...). This I did, and I came up with a slightly better idea (in my opinion. Given that this is a software engineering project, I should be focusing more on producing an (almost) complete system rather than producing basic systems and comparing them).
The current idea is to develop an (almost) complete deferred renderer, in several stages:
Stage 1: Develop a (classic) deferred render from scratch (and basic framework to make it semi-user friendly. All though I don’t fancy spending too much time on this (Eg, abstracting ID3D11Buffers is a waste of time)). This would be a bog standard system with a larger G-Buffer (if you have read "Practical Rendering and Computation with Direct3D11", its pretty much going to be the exact same system. 4 RTVs, full screen quads for the lighting pass). I've begun this stage anyway as I feel it would be interesting to get a deferred renderer done even if it doesn’t form
the basis of a thesis.
Stage 2: Optimise the GBuffer pass. (Reducing the size of the Gbuffer)
Stage 3: Optimise the Lighting Pass.(reducing the number of pixel shader invocations)
Stage 4: Enhancements - Solving the multiple material, AA and transparency issues (This one I may simply use a forward renderer unless I find a very good resource on a good and simple system).
Stage 5: Other enhancements – I'll try and get a lovely original scene made which uses stuff from my forward rendering demo and port them in to a deferred system (Displacement mapping, character animation, maybe SSAO, etc). This proves that my deferred system isn’t limited to texture mapping, interpolated colours and normal mapping.
I'll speak to my lecturer tomorrow and suggest the idea to him. As this has come from the academic research (Ie, there’s a lot of talk about deferred rendering systems and their cons), it should (*fingers crossed*) be well received.
I feel the above idea is a decent one given that I have had to learn Direct3D11 by myself (which itself took ~200 hours of the 400 hours)... but it's not too far off what people are doing in second year at Teesside University (a single module). All though, they are tough Direct3D10, taught deferred rendering systems and given a framework.
So my two questions are : 1) Do you think that the above system is a good project idea for an undergrad thesis? Any amendments? Comments? And 2) Do you have any other suggestions for a thesis which relates to graphics programming in some way (Personally, I would like to stay away from a pure GPGPU programming thesis, but I'm open to something)
tl;dr
-
Just starting third year – looking for ideas/suggestions for a graphics programming thesis.
-
Current idea is to develop a deferred renderer (and basic framework) in 4/5 stages: Basic implementation, optimisation (Gbuffer pass and lighting pass), enhancements(Solve multiple material, AA and transparency issues in some way)
-
Is this a good idea baring in mind I have had to learn Direct3D11 by myself (Not taught it at uni – and thus ~200 hours spent learning it should be credited to the 400 hours allocated to the project)? Would it be respected by games companies looking to emply me as a junior/intern graphics programmer?
-
Suggestions/comments welcomed on the deferred system.
-
Suggestions for something else related to graphics programming welcomed.
Many thanks,
Dan