CS 791: Non-photorealistic rendering (Winter 2010)


Non-photorealistic rendering refers to a broad set of techniques for creating imagery that deliberately departs from the standards of fidelity to the real world. One common goal for non-photorealistic rendering is to use computer graphics as a medium for creating art and design.

This term, I will turn my focus to the geometric side of art, design and ornamentation. Throughout history, geometric patterns have formed an important part of human expression. Ornament can even be found on artifacts dating back into prehistory.

It is only in the last century or two that we have developed the mathematical tools necessary to study the patterns we have created intuitively for millennia. Even more recently, we have computational tools that let us construct these patterns efficiently and painlessly, opening ever wider horizons of artistic expression.

This course is about the mathematical and computational tools that make it possible to analyze existing patterns and synthesize new ones.


March 22: Didn't like my definition of symmetry, watch the great physicist Feynmann give a definition. This link might work; if not, go to the main page for the Tuva project and navigate to Lecture 4: Symmetry in Physical Law.

March 22: Please keep in mind that this Thursday's lecture (March 25) is cancelled.

March 16: The lecture notes now cover all material up to last Thursday (March 11th).

March 10: I felt bad about not having included a bonus question for A3, so I'm adding one in.

March 10: Daniel asked what the significance was of the "contact" tag in the .tl files for Assignment 3. In Section 4 of my 2005 paper, I discuss the need to adjust contact positions away from edge midpoints in tilings constructed via the rosette dual (something I talked about in class, too). This field gives a parameter value (between 0 and 1) along the tile edge where the adjusted contact position should be. You're under no obligation to support these adjusted contact positions, though it'll make your results a bit more attractive.

February 24: Assignment 3 is now posted.

February 16: Several students have asked about the tiling in Question 1(d) of Assignment 2. You should imagine this tiling continuing off to infinity in all directions, with only the one row shifted. All other rows are aligned vertically. If you're still confused, here is a larger patch of the same tiling that will hopefully make the continuation clear.

February 16: Lecture notes are now up to date (they cover everything up to February 11th).

Jan 23: Several students have been asking about good libraries for image loading. Edgar suggests DevIL, which looks like a convenient means of opening image files and easily extracting pixels. He suggests you looks at the function ilCopyPixels.

Jan 17: I have added a note at the bottom of the Assignment 1 page about using Frame Buffer Objects do render Voronoi diagrams (or anything else) offscreen. The note includes a pointer to some sample code if you're having trouble getting started.

Jan 9: Assignment 1 is now posted. I may make minor adjustments, but at a high level it's set.

Jan 4: I'm finally getting around to setting up the web page for this offering of CS 791. Watch this sidebar for updates.

Course information



Assignment 1 18%
Assignment 2 18%
Assignment 3 18%
Project proposal 6%
Project content 16%
Project presentation 6%
Project write-up 8%
Participation 10%

Previous offerings

Although this course will generally remain in the field of nonphotorealistic rendering, I will make changes each time I teach it. Note that prior to 2010, the course operated as CS 798.
Craig S. Kaplan Last updated: