A note of warning: Although the final project is to build a 3D game, this is not exactly a course about building video games: it is about building a 3D graphics engine such as sits under the hood of modern games. The course will be highly technical and a lot of work. We will not touch on many vital aspects of game design: character AI, the production process, artist tools, the network layer (for multiplayer or online games), interface design, multiplatform support, etc. In other words, don't take the class just because you like playing video games.
Students in this course should have previously taken COMP 600.457 -
Computer Graphics, COMP 600.456 - Rendering Techniques, or the
and have good programming skills. This level of experience is required
to achieve a successful project in the allotted time.
Real-Time Rendering (2nd edition) by Tomas Akenine-Moller and Eric Haines, AK Peters (2002).
This book is a significant update from the (excellent) first edition, and contains a great deal of additional material. In particular there are new chapters on advanced shading techniques, shading capabilities of modern hardware, and so on. It is an excellent book that anybody serious about a career in computer graphics ought to own. One of the best aspects of the book is the accompanying web site, a vast compendium of graphics resources that the authors keep very up-to-date.
3D Game Engine Design by David H. Eberly, Morgan Kaufmann Publishers (2001).
This book makes excellent reading for programmers serious about writing their own game engine. It is quite mathematical and not for the faint of heart. It comes with a lot of free software, including some very useful little modules, also available from the accompanying web page.
Level of Detail for 3D Graphics by David Luebke, Marvin Reddy, Jonathan Cohen, Amitabh Varshney, Benjamin Watson, and Robert Heubner, Morgan Kaufmann Publishers (2002).
Line your professor's pockets while learning about level of detail, a crucial tool for real-time rendering. Errata and links to code, models, and resources at the accompanying web page.
Game Programming Gems (series editor Mark Deloura).
There are three books in the series. Some of the material from the first two might be a bit dated, but much of it is still very relevant. Because these are about game design, they include non-graphics topics (e.g., character AI). Each book is a collection of "gems", submitted by different game programmers. Some are short useful code snippets, others are long involved packages or essays on different aspects of game programming.
I reserve the right to add a test, quiz, or "practicum exam".
The strength of the university depends on academic and personal integrity. In your studies, you must be honest and truthful. Ethical violations include cheating on exams, plagiarism, reuse of assignments, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition.
Academic honesty is required in all work you submit to be graded.
Except where the instructor specifies group work, you must solve all
homework and programming assignments without the
help of others. For example, you must not look at any other solutions
(including program code) to your homework problems or similar problems.
However, you may discuss assignment
specifications with others to be sure you understand what is required
by the assignment.
your instructor permits using
fragments of source code from outside sources, such as your textbook or
on-line resources, you must properly cite the source. Not citing it
constitutes plagiarism. Similarly, your group projects must list
everyone who participated.
Falsifying program output of results is prohibited.
Your instructor is free to override parts of this policy for particular assignments. To protect yourself: (1) Ask the instructor if you are not sure what is permissible. (2) Seek help from the instructor or TA, as you are always encouraged to do, rather than from other students. (3) Cite any questionable sources of help you may have received.
Students who cheat will suffer a serious course grade penalty in addition to being reported to university officials. You must abide by JHU's Ethics Code: report any violations you witness to the instructor. You may consult the associate dean of students and/or the chairman of the Ethics Board beforehand. For more information, see the guide on Academic Ethics for Undergraduates (http://www.advising.jhu.edu/ethics.html) and the Ethics Board web site (http://ethics.jhu.edu).
http://www.cs.jhu.edu/~cohen/IGG2005/syllabus.htmlThis is the home page for a series of course web pages. Included in these web pages are the course schedule, lecture notes, homework information, etc. Check the pages early and often - I will try to keep the modification dates of the various pages up to date to help you track changes (I will also inform you of important changes during class or via e-mail). All lectures slides which I present using PowerPoint and the digital projector will be made available on the course web pages, so you don't have to copy them down (do take additional notes, however). Any material which I do not present electronically will probably not be made available electronically, but you will still be responsible for learning the content.