Lecture 1: Overview of Computer Graphics¶
本课程内容参考B站视频的内容学习: GAMES101-现代计算机图形学入门-闫令琪
计算机图形学¶
- 有关投影、曲线、表面的数学
- 光影物理
- 3D图形表示和处理
- 动画/模拟
简单来说,计算机图形学包含Modeling、Rendering、Simulation三大部分。
什么是计算机图形学¶
图形学 vs 图像处理 vs 计算机视觉
这三个领域经常被混淆,但它们有本质区别:
| 领域 | 输入 → 输出 | 典型任务 |
|---|---|---|
| 计算机图形学 | 模型/场景 → 图像 | 渲染、建模、动画 |
| 图像处理 | 图像 → 图像 | 滤波、降噪、增强 |
| 计算机视觉 | 图像 → 模型/信息 | 识别、检测、三维重建 |
计算机图形学的核心任务是 将三维场景描述转化为二维图像,即"渲染(Rendering)"。除此之外还包括几何建模(Modeling)、物理模拟(Simulation)和动画(Animation)等方向。
图形学的应用领域¶
典型应用
- 影视特效 — 皮克斯、工业光魔等公司的 CG 动画与视觉特效
- 电子游戏 — 实时渲染技术驱动的游戏画面
- CAD/CAM — 计算机辅助设计与制造
- 科学可视化 — 医学影像、流体仿真可视化
- 虚拟现实 / 增强现实 — VR/AR 中的实时渲染
- 机器人仿真 — 训练与测试环境
:material-pipeline: 渲染管线概述¶
渲染管线(Rendering Pipeline) 是将三维场景描述转换为最终二维图像的一系列有序步骤。理解管线是学习图形学的基础。
graph LR
A["顶点数据\n(Vertices)"] --> B["顶点着色器\nVertex Shader"]
B --> C["图元装配\nPrimitive Assembly"]
C --> D["光栅化\nRasterization"]
D --> E["片段着色器\nFragment Shader"]
E --> F["帧缓冲\nFramebuffer"]
F --> G["屏幕图像\nImage"]
管线各阶段详解
-
顶点处理(Vertex Processing):将顶点从模型坐标系经过 Model、View、Projection 变换到裁剪空间(Clip Space),再映射到屏幕坐标。这一步通常由 顶点着色器(Vertex Shader) 完成。
-
图元装配(Primitive Assembly):将变换后的顶点组装为三角形等基本图元。
-
光栅化(Rasterization):将连续的三角形离散化为片段(Fragment),即像素候选。这一步决定了哪些像素被三角形覆盖。
-
片段处理(Fragment Processing):对每个片段计算颜色,涉及纹理采样、着色(Shading)等操作,通常由 片段着色器(Fragment Shader) 完成。
-
帧缓冲操作(Framebuffer Operations):执行深度测试(Z-Test)、模板测试(Stencil Test)、混合(Blending)等,最终写入帧缓冲。
光栅化简介¶
光栅化(Rasterization) 是实时渲染中最核心的技术之一,其本质是将连续的几何图元(主要是三角形)转换为离散的像素集合。
为什么用三角形¶
三角形的独特优势
- 是最简单的多边形,三个顶点唯一确定一个平面
- 任何复杂曲面都可以用三角形网格(Triangle Mesh)近似
- 三角形内外判断算法高效且明确
- 硬件高度优化(GPU 原生支持三角形光栅化)
采样判断¶
光栅化的核心问题是:对于屏幕上的每个像素中心点 \((x+0.5, y+0.5)\),判断它是否在三角形内部。常用方法是 向量叉积法(详见 Lecture 5)。
光栅化的挑战¶
走样与抗锯齿
由于采样是在离散的像素网格上进行的,必然会产生 走样(Aliasing) 现象——表现为锯齿状边缘。解决方案包括:
- MSAA(多重采样抗锯齿):在每个像素内使用多个采样点
- FXAA / TAA:后处理抗锯齿技术
- 超分辨率渲染:以更高分辨率渲染后降采样
这些内容将在 Lecture 6 中详细讨论。
GAMES101 课程结构总览¶
graph TD
L1["L1 概述"] --> L2["L2 线性代数"]
L2 --> L3["L3 变换"]
L3 --> L4["L4 变换续"]
L4 --> L5["L5 光栅化 1"]
L5 --> L6["L6 光栅化 2"]
L6 --> L7["L7 着色 1"]
L7 --> L8["L8 着色 2"]
L8 --> L9["L9 着色 3"]
L9 --> L10["L10 几何 1"]
L10 --> L11["L11 几何 2"]
L11 --> L12["L12 几何 3"]
L12 --> L13["L13 光线追踪 1"]
L13 --> L14["L14 光线追踪 2"]
L14 --> L15["L15 光线追踪 3"]
L15 --> L16["L16 光线追踪 4"]
L16 --> L17["L17 材质"]
L17 --> L18["L18 进阶渲染"]
L18 --> L19["L19 相机与透镜"]
L19 --> L20["L20 颜色"]
L20 --> L21["L21 动画 1"]
L21 --> L22["L22 动画 2"]
本课程共 22 讲,覆盖从数学基础到前沿渲染技术的完整知识体系。后续笔记将逐步展开每一讲的核心内容。