2484 字
12 分钟
【RTR4读书笔记】第一章 简介

本来不打算给第一章写笔记,因为强迫症,还是给第一章来个简单的总结吧。

1.1 内容概述#

本节对全书26章进行了简要介绍,按技术领域分组如下:

核心基础(Ch2-4)#

Ch2 - 图形渲染管线

  • 一组操作步骤:场景描述 → 可见图像
  • 实时渲染的核心

Ch3 - 图形处理单元(GPU)

  • 固定功能单元 + 可编程单元
  • 实现渲染管线各阶段

Ch4 - 变换

  • 控制:位置、朝向、尺寸、形状
  • 相机:位置、视角

着色与外观(Ch5-9)#

Ch5 - 着色基础

  • 材质和光源定义
  • 表面外观(写实/风格化)
  • 抗锯齿、透明度、伽马矫正

Ch6 - 纹理

  • 快速访问图像并显示在表面
  • 多种纹理化方法

Ch7 - 阴影

  • 增强真实感和表现力
  • 快速阴影计算方法

Ch8 - 光和颜色

  • 两个核心问题:
    1. 渲染前:如何量化光和颜色
    2. 渲染后:如何转换为可显示数值(考虑屏幕属性和观察环境)

Ch9 - 基于物理的着色(PBR)

  • 从物理现象出发
  • 各种材质的着色模型
  • 材质混合和过滤方法

光照(Ch10-11)#

Ch10 - 局部光照

  • 复杂光源的算法
  • 考虑光源的物理形状

Ch11 - 全局光照

  • 光线与场景多次相交
  • 环境光遮蔽(AO)和定向遮蔽
  • 漫反射和镜面表面的全局光照

特效与高级技术(Ch12-17)#

Ch12 - 图像空间特效

  • 图像过滤和重投影
  • 后处理特效:镜头光晕、动态模糊、景深

Ch13 - 超越多边形

  • 替代方法:图像、点云、体素、样本集合
  • 各有独特优势

Ch14 - 体积和半透明渲染

  • 体积材质表示
  • 光线与体积材质的相互作用
  • 应用:大气效果、毛发散射等

Ch15 - 非真实感渲染(NPR)

  • 卡通渲染、水彩效果等风格
  • 直线和文本生成

Ch16 - 多边形技术

  • 多边形数据表示
  • 数据压缩

Ch17 - 曲线和曲面

  • 复杂表面表达
  • 质量/速度权衡、紧凑表示、平滑表面

优化(Ch18-20)#

Ch20 - 高效着色

  • 两大性能问题:
    1. 大量光源降低性能
    2. 过度绘制(片元可见性不确定时着色)

Ch18 - 管线优化

  • 找到性能瓶颈并处理
  • 多线程优化

Ch19 - 加速算法

  • 剔除技术(Culling)
  • 层次细节(LOD)

专题(Ch21-24)#

Ch21 - VR/AR

  • 高且稳定的帧率
  • 高效生成逼真图像

Ch22 - 相交测试

  • 用途:渲染、用户交互、碰撞检测
  • 高效几何相交算法

Ch23 - 图形硬件

  • 硬件组件:颜色深度、帧缓冲等
  • GPU案例学习

Ch24 - 展望未来

  • 技术发展趋势预测
  • 给读者的建议
TIP

网站资源的重要性:

实时渲染领域变化快,书籍关注基本概念和长效技术,网站提供最新信息和持续更新


1.2 符号和定义#

1.2.1 数学符号#

本书建立了一套严格的数学符号体系,贯穿全书使用。

表1.1 符号总结

类型表示方式说明
角度α,β,θ\alpha, \beta, \theta实数
标量a,b,ca, b, c 等小写字母实数
向量/点v(粗体小写)列向量
矩阵M(粗体大写)方阵或矩形
平面π\pi法线+距离
三角形v0v1v2\triangle v_0v_1v_2三个顶点
向量和点的表示#

列向量形式(计算机图形学广泛使用):

v=(vxvyvz)\mathbf{v} = \begin{pmatrix} v_x \\ v_y \\ v_z \end{pmatrix}

行向量简化形式(为了阅读方便):

  • 写作:(vx,vy,vz)(v_x, v_y, v_z)
  • 实际代表:(vx,vy,vz)T(v_x, v_y, v_z)^T
IMPORTANT

为什么使用列向量 计算机图形学约定,与矩阵左乘的习惯一致

齐次坐标#

核心概念:用4个分量表示3D坐标

v=(vx,vy,vz,vw)T\mathbf{v} = (v_x, v_y, v_z, v_w)^T

第4分量的含义

  • vw=0v_w = 0:表示向量(方向,无位置)
  • vw=1v_w = 1:表示(位置)

为什么需要齐次坐标?

  1. 统一表示点和向量
  2. 使平移、旋转、缩放都能用矩阵乘法
  3. 透视投影需要 ww 分量
WARNING

点和向量的区别

  • 点:有位置,可以平移
  • 向量:只有方向和长度,平移无意义
  • 齐次坐标通过 ww 分量区分两者

索引方式的灵活性

  • 下标:(vx,vy,vz)(v_x, v_y, v_z)(v0,v1,v2)(v_0, v_1, v_2)
  • 数字索引在算法中更方便

二维向量

  • 直接跳过第三个分量
  • (vx,vy)T(v_x, v_y)^T
矩阵表示#

常用尺寸2×22 \times 2, 3×33 \times 3, 4×44 \times 4

3×33 \times 3 矩阵为例

M=(m00m01m02m10m11m12m20m21m22)M = \begin{pmatrix} m_{00} & m_{01} & m_{02} \\ m_{10} & m_{11} & m_{12} \\ m_{20} & m_{21} & m_{22} \end{pmatrix}

元素访问

  • mijm_{ij}:第 ii 行,第 jj
  • i,j[0,2]i, j \in [0, 2](从0开始索引)

方程1.2 - 向量分离表示

M=(m,0m,1m,2)M = \begin{pmatrix} \mathbf{m}_{,0} & \mathbf{m}_{,1} & \mathbf{m}_{,2} \end{pmatrix}
  • m,j\mathbf{m}_{,j}:第 jj列向量
  • mi,\mathbf{m}_{i,}:第 ii行向量(以列向量形式表示)

列向量的命名索引

M=(mxmymz)M = \begin{pmatrix} \mathbf{m}_x & \mathbf{m}_y & \mathbf{m}_z \end{pmatrix}

M=(mxmymzmw)M = \begin{pmatrix} \mathbf{m}_x & \mathbf{m}_y & \mathbf{m}_z & \mathbf{m}_w \end{pmatrix}

4×44 \times 4

TIP

列向量表示的优势 变换矩阵的每一列代表变换后的基向量,直观理解变换效果

平面表示#

标准形式

π:nx+d=0\pi: \mathbf{n} \cdot \mathbf{x} + d = 0
  • n\mathbf{n}:平面法线(描述朝向)
  • dd:标量(到原点的有向距离)
  • x\mathbf{x}:平面上的任意点

法线的含义

  • 平面:所有点具有相同法线
  • 曲面:每个点的法线不同

空间划分

  • 正半空间:nx+d>0\mathbf{n} \cdot \mathbf{x} + d > 0
  • 负半空间:nx+d<0\mathbf{n} \cdot \mathbf{x} + d < 0
  • 平面上:nx+d=0\mathbf{n} \cdot \mathbf{x} + d = 0
三角形表示#
v0v1v2\triangle v_0 v_1 v_2

三个顶点定义一个三角形

表1.2 数学运算符#
序号符号含义
1vu\mathbf{v} \cdot \mathbf{u}点乘
2v×u\mathbf{v} \times \mathbf{u}叉乘
3vT\mathbf{v}^T向量转置
4v\mathbf{v}^\perp垂直算子(2D)
5M\|M\|矩阵行列式
6a\|a\|标量绝对值
7v\|\mathbf{v}\|向量范数(长度)
8[x]+[x]_+非负限制
9[x]0,1[x]_{0,1}0-1限制
10n!n!阶乘
11(nk)\binom{n}{k}二项式系数

重点运算符详解

垂直算子(Graphics Gems IV)

  • 作用:2D向量旋转90°
  • 定义:v=(vy,vx)T\mathbf{v}^\perp = (-v_y, v_x)^T

行列式的多种表示

  • A|A|
  • mathbfa b c|mathbf{a}\ \mathbf{b}\ \mathbf{c}|(列向量表示)
  • det(a,b,c)\det(\mathbf{a}, \mathbf{b}, \mathbf{c})

限制操作符(着色计算中频繁使用):

操作符8 - 非负限制

[x]+=max(x,0)[x]_+ = \max(x, 0)

将负数部分限制到0

操作符9 - 0-1限制

[x]0,1={0,x<0x,0x11,x>1[x]_{0,1} = \begin{cases} 0, & x < 0 \\ x, & 0 \le x \le 1 \\ 1, & x > 1 \end{cases}
IMPORTANT

限制操作符的重要性 着色计算中大量使用,确保颜色值在合法范围内

:::

阶乘(方程1.5):

n!=n(n1)(n2)321n! = n(n-1)(n-2) \cdots 3 \cdot 2 \cdot 1

特例:0!=10! = 1

二项式系数(方程1.6):

(nk)=n!k!(nk)!\binom{n}{k} = \frac{n!}{k!(n-k)!}
坐标系统术语#

坐标平面(轴对齐平面):

  • x=0x = 0平面
  • y=0y = 0平面
  • z=0z = 0平面

主轴/主方向/标准基

  • ex=(1,0,0)T\mathbf{e}_x = (1, 0, 0)^T:X轴
  • ey=(0,1,0)T\mathbf{e}_y = (0, 1, 0)^T:Y轴
  • ez=(0,0,1)T\mathbf{e}_z = (0, 0, 1)^T:Z轴

标准正交基

  • 相互垂直的单位向量
  • 本书默认使用(除非特殊说明)
区间表示#
符号含义
[a,b][a, b]闭区间,包含aabb
(a,b)(a, b)开区间,不包含aabb
[a,b)[a, b)左闭右开,包含aa不包含bb
(a,b](a, b]左开右闭,不包含aa包含bb
表1.3 特殊数学函数#

atan2函数

πatan2(y,x)π-\pi \le \text{atan2}(y, x) \le \pi

对比标准反正切:

π2<arctan(x)<π2-\frac{\pi}{2} < \arctan(x) < \frac{\pi}{2}

atan2的优势

  1. 输出范围更大(全角度)
  2. 两个参数,避免除零
  3. 常用于计算 arctan(y/x)\arctan(y/x)

对数约定

log(n)=ln(n)=loge(n)\log(n) = \ln(n) = \log_e(n)
WARNING

重要约定 本书中 log\log 始终表示自然对数,不是常用对数 log10\log_{10}

颜色表示

(r,g,b),r,g,b[0,1](r, g, b), \quad r, g, b \in [0, 1]

1.2.2 几何定义#

渲染图元#

硬件支持的图元

  • 点(Point)
  • 线(Line)
  • 三角形(Triangle)
TIP

历史上的例外

  • Pixel-Planes:可绘制球体
  • NVIDIA NV1:可绘制椭球体
  • 现代GPU几乎全部只支持三角形
术语层次#

几何实体(Geometric Entities)

  • 基本图元的集合

模型/物体(Model/Object)

  • 几何实体的集合
  • 示例:
    • 简单:一条直线
    • 复杂:一辆车(车门+轮子+…)
  • 高级表示:
    • Bezier曲线
    • Bezier曲面
    • 细分曲面

场景(Scene)

  • 环境中所有待渲染模型的集合
  • 额外包含:
    • 材质信息
    • 灯光信息
    • 观察信息(相机)
IMPORTANT

物体的层次性 物体可以包含其他物体,例如:

  • 车 = 4个车门 + 4个轮子 + …
  • 形成树状层次结构
实际中的灵活性#
  • 一个物体通常包含一系列渲染图元
  • 但也有例外:物体可以是高级几何表示
  • 物体可以嵌套其他物体

1.2.3 着色#

“Shading”的双重含义

计算机图形学中,“着色(shading)”、“着色器(shader)“及其派生词指向两个不同概念:

含义1:视觉外观#

计算机生成的视觉效果

示例术语

  • 着色模型(Shading Model)
  • 着色方程(Shading Equation)
  • 卡通渲染(Toon Shading)
含义2:可编程组件#

渲染系统中的可编程部分

示例术语

  • 顶点着色器(Vertex Shader)
  • 像素着色器(Pixel Shader)
  • 着色器语言(Shading Language)
TIP

如何区分 通过上下文判断:

  • 讨论算法/效果 → 视觉外观
  • 讨论编程/管线 → 可编程组件

第一章核心要点总结#

数学基础#

齐次坐标系统

  • 第4分量区分点(1)和向量(0)
  • 统一矩阵变换
  • 支持透视投影

限制操作符

  • [x]+[x]_+:非负限制
  • [x]0,1[x]_{0,1}:0-1限制
  • 着色计算核心工具

平面方程

  • 法线 + 距离定义
  • 空间划分为正负半空间

符号规范#

向量和矩阵

  • 列向量为主
  • 行向量用于简化书写
  • 矩阵可按列向量分离

运算符系统

  • 点乘、叉乘、转置
  • 行列式、范数
  • 特殊:垂直算子(2D)

几何层次#

三层结构

图元(点/线/三角形)

模型/物体

场景

扩展性

  • 物体可嵌套
  • 支持高级表示(Bezier、细分曲面)

术语澄清#

“Shading”双重含义

  1. 视觉外观(算法)
  2. 可编程组件(程序)

通过上下文区分

【RTR4读书笔记】第一章 简介
https://monsterstation.netlify.app/posts/cg/rtr4/chapter1/rtr4-note-1/
作者
Furry Monster
发布于
2026-04-10
许可协议
CC BY-NC-SA 4.0

评论