本来不打算给第一章写笔记,因为强迫症,还是给第一章来个简单的总结吧。
1.1 内容概述
本节对全书26章进行了简要介绍,按技术领域分组如下:
核心基础(Ch2-4)
Ch2 - 图形渲染管线
- 一组操作步骤:场景描述 → 可见图像
- 实时渲染的核心
Ch3 - 图形处理单元(GPU)
- 固定功能单元 + 可编程单元
- 实现渲染管线各阶段
Ch4 - 变换
- 控制:位置、朝向、尺寸、形状
- 相机:位置、视角
着色与外观(Ch5-9)
Ch5 - 着色基础
- 材质和光源定义
- 表面外观(写实/风格化)
- 抗锯齿、透明度、伽马矫正
Ch6 - 纹理
- 快速访问图像并显示在表面
- 多种纹理化方法
Ch7 - 阴影
- 增强真实感和表现力
- 快速阴影计算方法
Ch8 - 光和颜色
- 两个核心问题:
- 渲染前:如何量化光和颜色
- 渲染后:如何转换为可显示数值(考虑屏幕属性和观察环境)
Ch9 - 基于物理的着色(PBR)
- 从物理现象出发
- 各种材质的着色模型
- 材质混合和过滤方法
光照(Ch10-11)
Ch10 - 局部光照
- 复杂光源的算法
- 考虑光源的物理形状
Ch11 - 全局光照
- 光线与场景多次相交
- 环境光遮蔽(AO)和定向遮蔽
- 漫反射和镜面表面的全局光照
特效与高级技术(Ch12-17)
Ch12 - 图像空间特效
- 图像过滤和重投影
- 后处理特效:镜头光晕、动态模糊、景深
Ch13 - 超越多边形
- 替代方法:图像、点云、体素、样本集合
- 各有独特优势
Ch14 - 体积和半透明渲染
- 体积材质表示
- 光线与体积材质的相互作用
- 应用:大气效果、毛发散射等
Ch15 - 非真实感渲染(NPR)
- 卡通渲染、水彩效果等风格
- 直线和文本生成
Ch16 - 多边形技术
- 多边形数据表示
- 数据压缩
Ch17 - 曲线和曲面
- 复杂表面表达
- 质量/速度权衡、紧凑表示、平滑表面
优化(Ch18-20)
Ch20 - 高效着色
- 两大性能问题:
- 大量光源降低性能
- 过度绘制(片元可见性不确定时着色)
Ch18 - 管线优化
- 找到性能瓶颈并处理
- 多线程优化
Ch19 - 加速算法
- 剔除技术(Culling)
- 层次细节(LOD)
专题(Ch21-24)
Ch21 - VR/AR
- 高且稳定的帧率
- 高效生成逼真图像
Ch22 - 相交测试
- 用途:渲染、用户交互、碰撞检测
- 高效几何相交算法
Ch23 - 图形硬件
- 硬件组件:颜色深度、帧缓冲等
- GPU案例学习
Ch24 - 展望未来
- 技术发展趋势预测
- 给读者的建议
TIP网站资源的重要性:
实时渲染领域变化快,书籍关注基本概念和长效技术,网站提供最新信息和持续更新
1.2 符号和定义
1.2.1 数学符号
本书建立了一套严格的数学符号体系,贯穿全书使用。
表1.1 符号总结
| 类型 | 表示方式 | 说明 |
|---|---|---|
| 角度 | 等 | 实数 |
| 标量 | 等小写字母 | 实数 |
| 向量/点 | v(粗体小写) | 列向量 |
| 矩阵 | M(粗体大写) | 方阵或矩形 |
| 平面 | 法线+距离 | |
| 三角形 | 三个顶点 |
向量和点的表示
列向量形式(计算机图形学广泛使用):
行向量简化形式(为了阅读方便):
- 写作:
- 实际代表:
IMPORTANT为什么使用列向量 计算机图形学约定,与矩阵左乘的习惯一致
齐次坐标
核心概念:用4个分量表示3D坐标
第4分量的含义:
- :表示向量(方向,无位置)
- :表示点(位置)
为什么需要齐次坐标?
- 统一表示点和向量
- 使平移、旋转、缩放都能用矩阵乘法
- 透视投影需要 分量
WARNING点和向量的区别
- 点:有位置,可以平移
- 向量:只有方向和长度,平移无意义
- 齐次坐标通过 分量区分两者
索引方式的灵活性:
- 下标: 或
- 数字索引在算法中更方便
二维向量:
- 直接跳过第三个分量
矩阵表示
常用尺寸:, ,
以 矩阵为例:
元素访问:
- :第 行,第 列
- (从0开始索引)
方程1.2 - 向量分离表示:
- :第 个列向量
- :第 个行向量(以列向量形式表示)
列向量的命名索引:
或
()
TIP列向量表示的优势 变换矩阵的每一列代表变换后的基向量,直观理解变换效果
平面表示
标准形式:
- :平面法线(描述朝向)
- :标量(到原点的有向距离)
- :平面上的任意点
法线的含义:
- 平面:所有点具有相同法线
- 曲面:每个点的法线不同
空间划分:
- 正半空间:
- 负半空间:
- 平面上:
三角形表示
三个顶点定义一个三角形
表1.2 数学运算符
| 序号 | 符号 | 含义 |
|---|---|---|
| 1 | 点乘 | |
| 2 | 叉乘 | |
| 3 | 向量转置 | |
| 4 | 垂直算子(2D) | |
| 5 | 矩阵行列式 | |
| 6 | 标量绝对值 | |
| 7 | 向量范数(长度) | |
| 8 | 非负限制 | |
| 9 | 0-1限制 | |
| 10 | 阶乘 | |
| 11 | 二项式系数 |
重点运算符详解:
垂直算子(Graphics Gems IV):
- 作用:2D向量旋转90°
- 定义:
行列式的多种表示:
- (列向量表示)
限制操作符(着色计算中频繁使用):
操作符8 - 非负限制:
将负数部分限制到0
操作符9 - 0-1限制:
IMPORTANT限制操作符的重要性 着色计算中大量使用,确保颜色值在合法范围内
:::
阶乘(方程1.5):
特例:
二项式系数(方程1.6):
坐标系统术语
坐标平面(轴对齐平面):
- 平面
- 平面
- 平面
主轴/主方向/标准基:
- :X轴
- :Y轴
- :Z轴
标准正交基:
- 相互垂直的单位向量
- 本书默认使用(除非特殊说明)
区间表示
符号 含义 闭区间,包含和 开区间,不包含和 左闭右开,包含不包含 左开右闭,不包含包含 表1.3 特殊数学函数
atan2函数:
对比标准反正切:
atan2的优势:
- 输出范围更大(全角度)
- 两个参数,避免除零
- 常用于计算
对数约定:
WARNING重要约定 本书中 始终表示自然对数,不是常用对数
颜色表示:
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)
- 统一矩阵变换
- 支持透视投影
限制操作符:
- :非负限制
- :0-1限制
- 着色计算核心工具
平面方程:
- 法线 + 距离定义
- 空间划分为正负半空间
符号规范
向量和矩阵:
- 列向量为主
- 行向量用于简化书写
- 矩阵可按列向量分离
运算符系统:
- 点乘、叉乘、转置
- 行列式、范数
- 特殊:垂直算子(2D)
几何层次
三层结构:
图元(点/线/三角形)
↓
模型/物体
↓
场景扩展性:
- 物体可嵌套
- 支持高级表示(Bezier、细分曲面)
术语澄清
“Shading”双重含义:
- 视觉外观(算法)
- 可编程组件(程序)
通过上下文区分

