Screenshot of Utah

For the last two months I have been working on my bachelor thesis at the Chair of Computer Graphics and Visualization. It is about “Multi-Tile Terrain Rendering with OGL/Equalizer”. The chair has a very nice Direct3D 10 terrain rendering engine and they want to run it at the newly founded KAUST (King Abdullah University of Science and Technology) in a massive CAVE environment. A CAVE is a room whose walls are actually screens. The CAVE at KAUST even supports stereoscopic rendering, so in total 12 screens that you need to render to.

My job was to port a terrain engine from Direct3D to OpenGL and afterwards to the Equalizer framework, which is an open-source framework for parallelizing OpenGL applications.

You can find/download an online version of my bachelor thesis here. I’ll upload the LaTeX at a later date and update this post.

I’ve spent the last months writing about all this, so I don’t feel like talking about the thesis itself anymore. Instead the remainder of this post will contain a post-mortem of it.

Post-Mortem

Preparations

I think I did a good job at preparing myself for the thesis: I’m a LaTex noob, so I got 4 LaTeX books; and I’m a (paper-)writing noob, so I got 3 books about writing papers and writing good English.

The books have helped me a lot and it is always a good decision to get as many books as possible, because the more sources you have, the better. :)

I got pretty much all the LaTeX books from our university library:

  • [Einstieg in] LaTeX A big book (696 pages) but not particularly helpful. The reviewer on Amazon is pretty much right: it contains lots of information., but always stops short of providing the really useful details/information.
  • LaTeX - Ge-packt A small but thick pocket book (608 pages). I totally forgot I had it and it stood on my bookshelf until I found it yesterday. I’ve used it though while writing another paper last year, and it’s pretty neat. It’s a nifty reference, that’s what it is.
  • LaTeX Hacks: Tipps und Techniken für professionellen Textsatz This book is very good. It contains 100 “LaTeX hacks” (on 416 pages). These are small, closed sections describing the solution to a specific problem you might encounter while using LaTeX. I’ve used the book a lot of times and it references many useful LaTeX packages, too—so it’s a good start for searches.
  • Wissenschaftliche Arbeiten schreiben mit LATEX Get this book if you want to write your thesis with LaTeX. It’s incredibly useful and covers most of what you’ll need. It takes you on a journey through all features of LaTeX that you will use and describes the most common use cases. It even has a section describing how to fix common LaTeX errors like overflowed hboxes and others.

I’ve also bought some books about writing papers and the English language in general:

  • A Manual for Writers of Research Papers, Theses, and Dissertations, Seventh Edition: Chicago Style for Students and Researchers This book covers everything you need to know about the style and format of a thesis. It has a huge chapter about how to add citations and what format the bibligraphy should use, etc. In retrospect reading it was probably overkill, because a bachelor thesis apparently doesn’t have very strict requirements (well, I’ll see about that when I get my feedback..). It, however, contains a few nice chapters about editing your text and improving its readability, and the punctuation and spelling chapters are nice, too.

  • Oxford Guide to Effective Writing and Speaking I’ve only read this book in parts but it’s not bad. It contains a useful introduction to English grammar, if you want to refresh that knowledge.

  • Oxford Guide to Plain English Get this book This book is simply awesome. Plain English refers to writing English in a simple and easily understood way. This book describes what makes a text ‘plain’/easy to read and how to transform your texts to improve readability. It contains lots and lots of examples of complicated texts and shows how easy it is to improve them with few changes. The book itself is a very nice read and in parts even funny. The author clearly knows what he is teaching and it helped me a lot while writing my bachelor thesis.

Writing the Thesis

I had two months for the implementation of the project and for writing the thesis. The plan was to implement everything in August and write everything in September and be done at the beginning of October (before my birthday). So last week I ended up being in crunch mode working 15 hours on it every day :-|

The implementation went mostly as planned. I found a few driver bugs though, bought gDEBugger for debugging shader issues and found some bugs in it, too. I think I reported 5-7 bugs in gDEBugger’s support forum in a matter of days and still have to write/extend a few reports.

I wrote my thesis in LaTeX and used the very good Texmaker as editor. It supports multiple file projects and allows you to select a main file (usually latex is called with the file that is currently being edited).

jEdit also supports LaTeX editing through a plugin: LaTeXTools. It isn’t working as well as Texmaker though, but it generally has more text editing options and supports directory searches and regexp which is useful for a multi-file project.

I used subversion for version management, which proved useful at times, even though TortoiseSVN’s difference viewer doesn’t support line wrapping :(

For creating vector graphics, a very cool LaTeX package exists. It’s called TikZ (“Tikz ist kein Zeichenprogramm”), and it allows you to create illustrations the LaTeX way: by coding them. See http://www.texample.net/tikz/examples/ for some neat looking examples.

I really wanted to use it to create my illustrations, but due to time constraints I couldn’t read the whole manual (it’s huge!) and even then it would have been too difficult. You see, it suffers from the same problem TeX and LaTeX suffer from in general. It’s easy to write something that looks okay, but as soon as you want to tweak something to look exactly the way you imagine it and it is not a standard option, you end up reading weird package code and wishing you had a Phd in TeX editing.

TikZ has exactly the same problem. I understood the tutorials and the manual well enough, but I wanted to create class diagrams with it. I got lost quickly and the 500 page manual didn’t offer a straight-forward way either.

In the end, I installed the latest version of Inkscape and created all my illustrations with it. Well, actually I always tried to create them with TikZ first, got frustrated after losing an hour or two, and spent another hour creating them in Inkscape.

While Inkscape makes it harder to change an illustration later on and there is no way to layout diagrams automatically, you can still become quite fast with it after learning a few hotkeys.

I wanted to use Eclipse and Omondo’s UML plugin to create some diagrams of a Java subproject and it failed horribly..

Having to wait 20 minutes, while it hogs your computer at 100% CPU usage and 400 MB memory usage, to create a UML model of a 5 classes project is quite unacceptable!

Starting Eclipse later crashed it every time, too, by the way. I had to uninstall the damned plugin for Eclipse to start at all again.

In the end I recreated the classes in C++ and used Visual Studio’s class diagram viewer to display the classes. You can then print the diagram to PDF and edit it some more in Inkscape, which supports importing single-page PDFs.

I hope I’ll find time to write about game development related topics again in the next weeks. There are a few things I want to work on, but sadly university starts on Monday again and it will probably use up most of my time.

Cheers,
 Andreas