CS 130: Computer Graphics
General
- 11:00 AM - 12:20 PM, Chung 142
- Textbook: Fundamentals of Computer Graphics, by Shirley, Ashikhmin, Marschner (4th edition on reserve at the library)
- Syllabus: pdf.
Instructor
Craig Schroeder
Office Hours: MWF 12:30 PM - 1:30 PM, Chung 309, or by appointment
Email: craigs@cs.ucr.edu
Teaching Assistant
TBD
Office Hours: TBD
Email: TBD
Learning Outcomes
In this course you will learn about current techniques in computer graphics. By the end of the course, you should be familiar with:
- Computer representations of geometric objects
- points, lines, rays, segments, planes, triangle, spheres
- Computer representations of images
- Pixels, RGB, CMYK and the physical/anatomical basis for them
- Raytracing
- Basic algorithm
- Computing ray-object intersections
- Computing object normals
- Illumination and shading models
- Features: shadows, reflections, transparency, texture mapping
- Hardware rendering pipeline
- GPU pipeline
- Rasterization
- Transformations
- Affine: scale, translation, rotation
- Pipeline transformations
- Homogeneous coordinates
- Barycentric coordinates
- Clipping
- Using matrix and vectors to solve geometrical problems.
- Marching cubes.
- Bezier curves.
Schedule
|
| Date |
Topic |
Reading |
Notes |
| 06/22 |
introduction, math, raster colors |
2.1-2.4.8, 3, 21 |
math, images |
| 06/24 |
math, raytracing |
2.5.5-2.5.7, 2.6, 4-4.4.4, 4.6 |
math, ray tracing |
|
| 06/29 |
normals |
2.5 |
normals |
| 07/01 |
lighting, shading, falloff |
4.5, 10 |
lighting, shading, falloff |
|
| 07/06 |
shadows, reflections |
4.7, 4.8 |
shadow, reflection |
| 07/08 |
transmission |
13.1 |
transmission |
|
| 07/13 |
barycentric coordinates, triangles, meshes |
2.7, 12.1 |
barycentric coordinates, meshes |
| 07/15 |
antialiasing, acceleration |
13.4, 12.3-12.5 |
antialiasing, acceleration |
|
| 07/20 |
texture mapping |
11 |
texture mapping |
| 07/22 |
midterm |
|
|
|
| 07/27 |
modern pipeline, rasterize lines |
8.1.1 |
lines |
| 07/29 |
rasterize triangles, z-buffer, transforms-linear |
8.1.2, 8.2, 6 |
triangles, z-buffer |
|
| 08/03 |
pipeline, pipeline transforms |
8.2, 8.4, 7 |
|
| 08/05 |
pipeline transforms, pers-correct interp |
7 |
pers-correct interp |
|
| 08/10 |
clipping, clipping |
8.1.3-8.1.6 |
clipping, clipping |
| 08/12 |
rotations |
|
|
|
| 08/17 |
curves, curves |
15, 15 |
|
| 08/19 |
marching cubes, marching cubes |
16.3, 16.3 |
|
|
| 08/24 |
review |
|
|
| 08/26 |
TBD |
|
|
|
Note on academic integrity
All assignments are to be completed individually unless otherwise stated. The following are not allowed in this course. For the purposes of this course, they are violations of academic integrity. Violations of academic integrity will result in a score of 0 for the relevant assignment and a lowering of the final course grade by one letter grade (e.g., from A to B). In more severe or repeat cases, violations will result in an 'F' for the course and a referral to the campus academic integrity committee.
- Working on homework/projects with another student other than your partner.
- Sharing solutions with another student other than your partner.
- Asking or paying anyone to complete any portion of the course for you.
- Copying or referring to homework/project solutions, code, or pseudocode from any source (other than course resources such as lecture notes or the course textbook).
- Working on homework/projects in a public Github repository (or anything else that results in your work being visible to other students or visible publicly), whether during or after the course. Working in a private Github repository is permitted, provided that repository stays private forever and is never shared. If you wish to share your code from this course with potential employers, please do so privately.
- Use of generative AI (ChatGPT, Copilot, etc.) is strictly prohibited in this course.
- Looking up answers/hints to homework, projects, or coding problems online. ("Researching the question.") The Internet is a very useful resource, and there are many reasonable places for it in this course (C++ library reference, as a supplement to lectures, further information on interesting topics, etc.) But there is a fine line between using the Internet as a tool for learning and using the Internet as a tool for cheating. If you are not sure, ask.
The following are explicitly allowed.
- Office hours (TA or instructor) are a great resource if you are stuck on a problem or otherwise struggling.
- There are no restrictions on using resources from the course (course textbook, lectures, lecture notes, course website, etc.).
- You may work on homework/projects with your partner.
- You may use past exams from this course as study aids. They are publicly available from the course websites from prior quarters.
If you find yourself struggling in the course, seek help early. The longer you wait, the fewer options will be available.
Start homework/projects early, especially coding parts. If you start the night before, your chances of successful completion are slim. Although the coding is not intended to take a long time, the time required for debugging is unpredictable and varies wildly from student to student.
Grading
| 10% | discussion |
| 10% | homework |
| 30% | project |
| 20% | midterm |
| 30% | final |
I do not follow a strict grading scheme, nor do I follow a strict curve.
Instead, I do a hybrid between the two. (1) I do not curve individual
assignments or exams, though I do include extra credit on some items.
Curving only occurs at the end, if it occurs at all. (2) I never curve
down. 90% is at least an A-, 80% is at least a B-, 70% is at least a C-,
and 60% is at least a D. I will occasionally set lower cutoffs when the
score distribution warrants it. (3) Other cutoffs (between A vs A-, B+ vs B,
etc.) are based on the distribution of scores.