Undergraduate thesis ideas in 3D graphics.

Started by
6 comments, last by Stani R 10 years, 7 months ago

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

  1. Just starting third year – looking for ideas/suggestions for a graphics programming thesis.

  2. 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)

  3. 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?

  4. Suggestions/comments welcomed on the deferred system.

  5. Suggestions for something else related to graphics programming welcomed.

Many thanks,

Dan

Advertisement

My opinion (as a veteran games industry programmer with a degree in an unrelated field) is that it sounds pretty good to me. It definitely sounds to me like something that would impress someone looking to hire a junior/intern (not only will the project impress, but also the fact that you learned Direct3D11 off your own bat without it being part of your syllabus).

My only reservation is that you might find that the amount of work involved is pretty high, especially as the fun bit (the project itself) is going to be of secondary importance to the writing that surrounds it. It might be wise to consider even stages 2 and 3 as 'stretch goals' (to use a kickstarter term out of context).

I've been out of graphics programming for the last 2-3 years but I understand that deferred rendering is now falling out of favor for something called "Forward+" which is a mixed model taking best features from both deferred and forward rendering. Might be worth investigating since it's more "current", although you also run the risk of "jumping on the bandwagon" this way.

On the thesis side, 10k is not a high hurdle even for a programming thesis but keep in mind that it will still take a lot of time to write (I'd save at least a month of fun-free weekends for it). I did my undergrad thesis (two of them actually) on programming topics and I can only say that writing about programming is slow work. Also, writing the renderer itself will be a lot of work, don't underestimate it. On the plus side, undergrad thesis do not require an original research contribution to your field, so you're basically going through the motions of doing academic work without having to do the heavy lifting, that is, writing something entirely new.

Even this kind of paper still needs to be supported by citations and sources though. SIGGRAPH papers, GDC presentation, and other research papers will likely make up the bulk of your citations but be sure to include some books also. Fortunately, rendering has been a research topic for decades now so literature is widely available. Look for things related to your topic as well as things related to renderer design or just generally things that are related in any way to what you are writing. Even if you only have one quote from a certain book it is worthwhile to include that source.

I've been out of graphics programming for the last 2-3 years but I understand that deferred rendering is now falling out of favor for something called "Forward+" which is a mixed model taking best features from both deferred and forward rendering. Might be worth investigating since it's more "current", although you also run the risk of "jumping on the bandwagon" this way.

On the thesis side, 10k is not a high hurdle even for a programming thesis but keep in mind that it will still take a lot of time to write (I'd save at least a month of fun-free weekends for it). I did my undergrad thesis (two of them actually) on programming topics and I can only say that writing about programming is slow work. Also, writing the renderer itself will be a lot of work, don't underestimate it. On the plus side, undergrad thesis do not require an original research contribution to your field, so you're basically going through the motions of doing academic work without having to do the heavy lifting, that is, writing something entirely new.

Even this kind of paper still needs to be supported by citations and sources though. SIGGRAPH papers, GDC presentation, and other research papers will likely make up the bulk of your citations but be sure to include some books also. Fortunately, rendering has been a research topic for decades now so literature is widely available. Look for things related to your topic as well as things related to renderer design or just generally things that are related in any way to what you are writing. Even if you only have one quote from a certain book it is worthwhile to include that source.

Thanks for the suggestion on Forward+ - I'm giving it a look now though the only (full) resource I can find about that technique specifically is in Gpu Pro 4 - its an expensive purchase for just 15 pages with no guarantee that the resource is actually useful (for me). Actually, I found a power point from GDC 2012 which I'll give a watch tonight.


On the other hand, plenty on Tile Based Rendering which I suspect is the same general idea.

Either-way, I shall research further (as I'm meant to be doing anyway) and see if anything comes of it.

Also thanks for the tips regarding the paper. Its good to know what type of resources I should be looking at. Big budget research papers over blogs and the like - Will certainly look at SIGGRAPH - may even download a few papers and read them for leisure! tongue.png

My opinion (as a veteran games industry programmer with a degree in an unrelated field) is that it sounds pretty good to me. It definitely sounds to me like something that would impress someone looking to hire a junior/intern (not only will the project impress, but also the fact that you learned Direct3D11 off your own bat without it being part of your syllabus).

My only reservation is that you might find that the amount of work involved is pretty high, especially as the fun bit (the project itself) is going to be of secondary importance to the writing that surrounds it. It might be wise to consider even stages 2 and 3 as 'stretch goals' (to use a kickstarter term out of context).

Thanks for your feedback smile.png

.

It's good to know that it wont instantly be rejected as too easy - especially, as you say, since I've had to learn the API with no assistance from university staff.

With regards to the amount of work with the renderer - Primarily I'm concentrating on the actual underlying system rather than the interface a programmer uses (ie, my framework is less important) which cuts time since I'm happy enough to directly use the API rather than abstract everything I want to use (Partially time, partially inexperience, partially the fact that the more I use the API, the more comfortable things become).

I also had built a solid framework (scene management, shader manager, Win32 code, D3D11 init code, a system to create/use render states, etc) during my time learning the API so I've ported that across to my deferred rendering project.

Last night I managed to implement the gbuffer pass (and you can call functions to visualize the data in each RTV). Simple and unoptimised system as it is currently is, I don’t imagine the light pass (in the simplest form) should be too hard. Plus one of my books has a solid few pages dedicated to optimising a deferred renderer. Enhancements could be fun, but I suspect I'll simply employ a blur algorithm for AA, ignore the transparency issue (Just use a forward renderer), and have an indexing system for multiple materials. Nothing revolutionary yes, but it is just an undergrad project and I would bet that the system I create could be used for some small scale PSN/XBL type games.


Gpu Pro 4 - its an expensive purchase for just 15 pages with no guarantee that the resource is actually useful (for me).

University libraries generally have unparalleled access to book exchange programs with other universities and also to online databases of academic research. Talk to your library staff, they can probably get the book to you in one way or another.

Also, you might find some of these papers or slides useful.


Gpu Pro 4 - its an expensive purchase for just 15 pages with no guarantee that the resource is actually useful (for me).

University libraries generally have unparalleled access to book exchange programs with other universities and also to online databases of academic research. Talk to your library staff, they can probably get the book to you in one way or another.

Also, you might find some of these papers or slides useful.

It should be easy to argue (maybe involving your professor of 3D graphics and not only the librarians) that book series like ShaderX, GPU Gems, GPU Pro are a basic requirement for 3D programming work and they should be simply bought immediately.

Omae Wa Mou Shindeiru

Hey,

It turns out im in a similar posision myself, final year of a similar course (Game Development) and jumping into a ambitious thesis :). I, myself, am making a 2D (mono) engine, accept I have to do a lot more documentation than you :( (other years averaged 80k words (includes scrum stuff though)).

Similarly to mine, you mentioned there isn't really any lecturers that have experience. Have you tried looking in different courses, with my course we are allowed to request a supervisor, so long as they worked in the computing department. Des your uni have a computer Graphics course? may be look there?

Other than that I can only suggest the obvious, stock up on books and forums.

Good luck :)

Mobile Developer at PawPrint Games ltd.

(Not "mobile" as in I move around a lot, but as in phones, mobile phone developer)

(Although I am mobile. no, not as in a babies mobile, I move from place to place)

(Not "place" as in fish, but location.)

On that note, good luck to you both! ph34r.png

This topic is closed to new replies.

Advertisement