GAMES101 是最好的中文图形学课程,不接受反驳。学习这门课程可以对图形学(尤其是闫老师的课很注重 Rendering 这块)在做什么有个自上而下的基础认知,不像国内很多图形学课从盘古开天辟地给你讲理论,结果到最后什么都不懂。
闫老师的授课给人一种亲切和有趣感,这种拉近听众与学科之间距离是很多课程难以做到的(当然也有图形学本身就散发魅力的原因)。由于图形学的确有难度,有趣和好玩的体验其实蛮重要的。
做这些作业是真的挺有必要的(因为学的是计算机图形学,怎么能少得了代码实现?)。不过有人会说:“助教框架都写好了,学生基本上就是在实现一些接口,学到了什么?” 此言差矣! 你要知道现在的历史情境下,图形学造轮子比以前还更没用了(工业界在近几十年积累了大量优秀的成品,现在更是 LLM 飞速发展)。只有高效地掌握核心思想的人才能达成最好的学习。
同时笔者还认为,这种规模的作业正适合以前从未接触过正经 C++ 项目的大一大二学生拿来作为基本的工具链入门。
虽然笔者在两年多以前就接触到了这个神课,并且刷了不止一遍。但是作业还真没认真做过,由于之前上高中并没有时间配环境和写代码,现在得赶紧补上(
只包含 Rendering 相关的部分,几何造型不感兴趣所以没做(
Note
GAMES101 的课程作业在对应标题内容的下一节课放出,并且在下一节课通常会有重要知识补充。
例如 hw3 需要的法线计算实际上是在 Lecture 10 Geometry 1 (Introduction) 的前半部分介绍的,而不是在 Lecture 09 Shading 3 (Texture Mapping Cont.) 的部分。
-
hw1:旋转矩阵和透视投影矩阵。
- Lecture 01 Overview of Computer Graphics
- Lecture 02 Review of Linear Algebra
- Lecture 03 Transformation
- Lecture 04 Transformation Cont.
-
hw2:光栅化和 Z-Buffer 算法。
- Lecture 05 Rasterization 1 (Triangles)
- Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)
-
hw3:图形流水线、着色器、纹理映射、局部光照模型(Blinn-Phong)等
- Lecture 07 Shading 1 (Illumination, Shading and Graphics Pipeline)
- Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)
- Lecture 09 Shading 3 (Texture Mapping Cont.)
-
hw5:递归式光线追踪 - 光线方程
$r(t) = \vec{o} + t \vec{d}$ 、成像平面上各像素的光线、光线-三角形求交算法(Moller-Trumbore 算法)- Lecture 13 Ray Tracing 1
这些作业经过我的验证都能在最新的 Windows 11 (x86) 和 macOS 26 Tahoe (aarch64) 上跑通。(它们之间只有 CMakeList.txt 的差异,这个可以询问 LLM 帮助解决)
持续施工中...









