4
$\begingroup$

I'm a math professor who will be teaching an undergraduate course in computer graphics next semester, and am looking for some resources to help me structure my course, specifically a textbook, although other resources/advice are welcome.

My students will have knowledge of Python, Java, and linear algebra. I would like to be able to spend some time on the following topics:

  • Building a basic 3d renderer (rasterizer) by hand in some programming language, using just a basic linear algebra library
  • The theory of color (fun, would probably only be a week)
  • Programming shaders in a common shader language

Is there a text that would work for some/all of this?

$\endgroup$
7
  • $\begingroup$ Are you looking for a more mathematical book that covers using programs to model computer graphics or are you looking for a book that covers more real world programming problems that use computer graphics? In other words are you looking to come from the bottom up or the top down? The problem with top down books is that they will have to drill all the way down from the top to get to the mathematical models, the problem with bottom up books is that they rarely connect the concepts to real world problems. Continued. $\endgroup$
    – Guy Coder
    Sep 11 at 10:26
  • $\begingroup$ There might be some books in the middle but I have not looked for books on computer graphics for some time as I learned the basics for my degree many decades ago and have been able to keep a pulse the on the progress over time so have a better understanding of the landscape and where to find resources to solve my problems for which are never specifically covered in books. $\endgroup$
    – Guy Coder
    Sep 11 at 10:32
  • 1
    $\begingroup$ I want my students to do practical projects to implement really basic graphics concepts from scratch. I imagine building a 3d rasterizer will take several weeks: introducing the graphics library, drawing lines, projecting from 3d, camera transformations, z-buffers, anti-aliasing. Similarly when we talk about shaders I want to focus on implementing the basics by hand: Lambertian and Blinn-Phong lighting, normal maps, vertex displacement, image-based lighting etc. I would want to talk about the basic mathematical theory, then we implement the theory by hand in code. $\endgroup$
    – TomKern
    Sep 11 at 13:30
  • $\begingroup$ I don't think I can do better than some of the answers to this question on the Game Dev sister site. If you find a part of that of value then post that as an acceptable answer. I am not after points here just useful information. Remember that a bounty is not for an answer but for more people to look at your question. $\endgroup$
    – Guy Coder
    Sep 11 at 13:56
  • 1
    $\begingroup$ I would suggest moving to the CS-SE since you want a math-theory outlook and the folks there are more theory centered than out here $\endgroup$
    – Rusi
    Sep 11 at 15:31
1
+50
$\begingroup$

other resources/advice are welcome

One topic worthy of teaching related to 3d graphics is collision detection.

Many people get it wrong on their first and even first few attempts. To really get it correct you have to study the mechanics of how the real world and modeled world differ and how to correctly model the problem.

If you are doing 3d graphics related to game design then these are also hard problems.

  1. Camera position. In video games I can't count how many times the camera position made it harder to play the game.
  2. Ladders. Some games don't even show a character climbing a ladder because it is so hard.
  3. Doors. Just watch this video. Why video game doors are so hard to get right

EDIT

Comments for which bounty was awarded.

I don't think I can do better than some of the answers to this question on the Game Dev sister site.

A more detailed write up noted in comment with above answer: Computer Graphics - Resource Materials for self-study

$\endgroup$
1
  • $\begingroup$ Awarding bounty for your links in the comments above. Thanks! $\endgroup$
    – TomKern
    Sep 17 at 13:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.