Time to learn writing a 3D rendering engine from scratch

Started by
7 comments, last by Krohm 11 years, 5 months ago
Hello graphic technicians,

so I choose this topic name since I kinda have the same goal, but totally different intentions and knowledge in this field, as the TS of the original topic.

I am a computer science student at a college of applied sciences in Germany. I have finished all my courses and now I am starting my work on my bachelor thesis. Starting means finding a topic and doing research at the moment for me. I worked on a non graphic related idea so far but dropped it recently since I wasn't enjoying what i was doing. It had to do with storage management and deduplication. So now I want to try something different. Something I am personally interested in but unfortunately had no chance in getting more into it so far: computer graphics. The problem is we don't really have a professor who is specialized in this field. Which mainly is why I have no experience here.
The nearest thing I did was a course about audio & video programming lectured by a prof. who worked at steinberg. Off him I learned my basic C++ skills.

So I was thinking about a good way (project) to learn about graphical programming which I an turn into an bachelors thesis if things go right. Since I have non experience whatsoever I want to start whatever project from scratch. A rendering engine strikes me as the a very basic element of any graphical program so I think it would fit the theme of understanding the fundamentals. Also the idea would be to find a more specific subject for my bachelor thesis once I got to know the field better. But in the end it will surely not be a highly elaborate thesis.

Here come the questions: What books can you recommend for me? I am looking for graphic related literature as well as something to get better in C++. What do you think of starting with a rendering engine? Would it be smarter to pic a different topic?

thanks
let this be the start of a new beginning
Advertisement
The Ron Fosner OpenGL for Windows book I learned with about 16 years ago (also the Red and Blue books are good references).

http://www.amazon.com/OpenGL-Programming-Windows-95-NT/dp/0201407094

I also loved the Watt and Watt book though it's now 20 years old but can be had cheap (great coverage of Quaternions and other things).

http://www.amazon.com/Advanced-Animation-Rendering-Techniques-Alan/dp/0201544121/ref=sr_1_7?s=books&ie=UTF8&qid=1352235543&sr=1-7&keywords=watt+graphics

Dave Eberly has a good book on Game Engine design (along with lots of tools at WildMagic).

The key is to choose a project that you are highly motivated by, and then do what it takes to get it working. I prefer low level OpenGL to tooklits like glut but that's your call.

Good luck.
When you want to learn about real time rendering, this book is a must have.


A rendering engine strikes me as the a very basic element of any graphical program

Yes, it is the basic element, but it is not really basic. Rendering engines are the most scientific part of a game engine and far from easy or basic. A enthralling topic is always global illumination. You should consider to take an existing rendering engine (open source like ogre) and expand it with a special technique, but I would sugguest to learn about the choosen technique, software, tools before diving head on into your thesis (the impact could be quite heavy).
@bigneil
thanks for your suggestions. i know that often one doesnt need the newest books to learn fundamental knowledge, but 20years seems a little bit old. especially for computer graphics.

@Ashaman73
this books is suggested quite often and gabe newell says its worth it, so i guess its a save buy. but can you tell me if it covers solutions for lesser complex problems, as well?

Yes, it is the basic element, but it is not really basic. Rendering engines are the most scientific part of a game engine and far from easy or basic. A enthralling topic is always global illumination. You should consider to take an existing rendering engine (open source like ogre) and expand it with a special technique, but I would sugguest to learn about the choosen technique, software, tools before diving head on into your thesis (the impact could be quite heavy).[/quote]
yes. my thinking was that building a renderer without illumination (meaning everything just is illuminated), shading and physics could be a simple enough, yet challenging first project. my question here is if my approach makes sense. maybe i'm going too far back. if new renderers are rarely written from scratch, then maybe i should start on learning how illumination works, instead of how to draw cubes.

as my very first contact with opengl i think i will work through these: http://www.opengl-tutorial.org/
Best book on the topic by far is:
http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135/ref=sr_1_1?ie=UTF8&qid=1352312361&sr=8-1&keywords=game+engine+architecture

Should give you a number of ideas to get started, and very useful details too.
-* So many things to do, so little time to spend. *-

without illumination (meaning everything just is illuminated), shading and physics could be a simple enough

It is a natural behaviour, that people tend to underestimate the amount of work necessary if they do not have experiences and knowledge in the target area. So, an engine is really a vague term. Do you want to add an existing phyiscs engine or build up your own. The latter is a show stopper.

How long do you have time to write your thesis, 6-9 month ? Do not underestimate the amount of work needed to write actual a 80-120 page document. If you need to write an whole engine, there are so many factors you need to consider and parts which could break, that I would recommend to tone down your goals. To left illumination from a rendering engine is like a car without engine. It must not be the super cool global illumination implementation, but some basic lighting shaders should be in.

I am starting my work on my bachelor thesis. Starting means finding a topic and doing research at the moment for me. ... The problem is we don't really have a professor who is specialized in this field. Which mainly is why I have no experience here.
The nearest thing I did was a course about audio & video programming lectured by a prof. who worked at steinberg. Off him I learned my basic C++ skills.

So I was thinking about a good way (project) to learn about graphical programming which I an turn into an bachelors thesis if things go right.
Caution advised. Before carrying on, I strongly suggest to check your professor again to see if they welcome the change.
Back when I was attending university we had an official 3D graphics course. Apparently, rendering 50 lights per pass didn't impress them (in 2005 I think).
By contrast, the stupid scripting language used as scene description made them go crazy.
The university I attended had a reputation for being very theorical (over 75% of the courses didn't involve a real world processing device). I had the impression they didn't like my hands-on approach in general.
So, are you 100% sure they would welcome a thesis which appears to be not in their current skill set?

As much as I hate to write this, your goal is not to do what you want. Is to reach your target.

Previously "Krohm"


[quote name='sektion31' timestamp='1352310290' post='4998493']
without illumination (meaning everything just is illuminated), shading and physics could be a simple enough

It is a natural behaviour, that people tend to underestimate the amount of work necessary if they do not have experiences and knowledge in the target area. So, an engine is really a vague term. Do you want to add an existing phyiscs engine or build up your own. The latter is a show stopper.[/quote]
What I meant was that writing a renderer without illumination, without physics and without shading. How long would it take in your eyes for someone like me to finish such a very basic renderer? My time frame is difficult to say. It sounds weird but I will be working on a cruse ship till mid april, starting from december. I want to spend my spare working on my thesis, which I will not start officially before I come back. I know for a fact, that I will have some free time to do so. I talked to my professor about this yesterday and he is fine with it. He is also very liberal on choosing the topic, although he would like to see me more in the 2D world working on face recognition for example.


As much as I hate to write this, your goal is not to do what you want. Is to reach your target.

Hopefully I can make my target what I want it to be. Right now I couldn't define one.

Yesterday I figured out, that my Intel GM965 graphics card, that I wanted to take on the cruse does only support openGL 2.0 under Windows and openGL 2.1 under Linux. Do you think this would limit my learning on recent openGL programming technology? The API did change a lot as I hear and I do remember the the stories about openGL 3.1 beeing the real 3.0. If so I am thinking on buying a new (but used) laptop for me. something like this i guess. The other option would be to program for my android phone.
How do you stand on openGL ES? Does it differ a lot from openGL, say 3.3 or is it more of a stripped down version? Does it make sense to learn openGL first
Wow, great to know.
You absolutely need at least GL2. I cannot say much because I switched to D3D some time ago... after having to deal with Intel graphics. Intel does really good processors but their integrated graphics is inadeguate even for something having half the clockrate and two generations behind.

Personally, rather than buying a core2 duo, I'd buy something with a AMD Trinity processor. The graphics performance is awesome and CPU performance is adeguate for learning purposes. Processor aside, the graphics used in that laptop is obsolete.

Previously "Krohm"

This topic is closed to new replies.

Advertisement