Skip to content

BlueMicro233/GAMES101-projects

Repository files navigation

写在前面

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 帮助解决)

持续施工中...

About

Solutions of a legendary computer graphics course GAMES101's homework.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors