计算机图形学-04:光栅化与采样
屏幕映射
模型、视图和投影变换完成后,几何体位于规范观察体积 中。接下来要把连续的几何图元送到离散的显示设备,这一步称为光栅化 Rasterization。
视口变换先把 NDC 的 x、y 坐标映射到屏幕连续区域:
屏幕坐标采用左下角为原点、向右为 x、向上为 y 的约定。像素用整数索引 标识,但它代表的是单位方块 ,像素中心位于
宽度为 、高度为 的屏幕索引范围是 、,连续覆盖范围是 。z 坐标在视口阶段暂时保留,后续深度测试需要它。
屏幕与显示
图形学先把屏幕抽象成二维像素 Pixel数组。1920×1080 和 1280×720 是常见分辨率,后者通常简称 720p,前者简称 1080p。pixel 是 picture element 的缩写;在基础模型中,一个像素是内部颜色均匀的小方块,可以用 256 级灰度表示,也可以用 RGB 三个通道描述颜色。
“光栅 Raster”更准确地理解为规则的栅格或扫描图案,rasterize 是把内容按栅格离散地绘制到屏幕。物理显示设备并不都由理想方块构成,但屏幕数组模型便于建立光栅化算法。

图中的荧光屏可以把偏转信号变成可见轨迹。扫描式图像和直接描绘曲线的显示方式可以使用相似硬件,但输入组织方式不同;图形学中的像素数组是独立于这类物理实现的抽象。
连续轨迹绘图机和激光切割机也体现了“按控制信号逐点或逐线写入”的思想:前者驱动笔尖沿路径移动,后者驱动激光沿加工路径扫描金属或其他材料。它们与屏幕光栅化共享离散控制和扫描的观念,但输出介质不同,不能把物理轨迹设备直接等同于像素数组。
示波器可以用电子束在荧光屏上描出曲线;水平和竖直偏转信号分别采用正弦、余弦时,电子束会描出圆或其他参数曲线。阴极射线管 CRT 通过电子束的偏转和逐行扫描形成画面。早期电视还会使用隔行扫描:一帧由时间上相继显示的奇数行场和偶数行场组成,两个场交错后构成完整画面。它可以减少每个场的扫描量,但高速运动时场之间的位置不一致,边缘容易呈梳齿状或出现重影。
LCD 通过背光、偏振片和液晶分子的扭转改变透光率;“LED 显示器”有时指使用 LED 作为背光的 LCD,也可以指由发光二极管直接组成的主动发光面板,两者应区分;电子墨水通过电场移动带电颗粒,静态画面耗电较低,但颗粒翻转需要可见时间,刷新率较低。这些设备最终都要把颜色或亮度值组织成可观察的图像。
在现代系统中,显示图像通常先写入显存中的颜色缓冲区,显示控制器按刷新时序读取这块区域;深度缓冲和模板缓冲则为可见性测试提供辅助数据。显示设备如何发光,不会改变光栅化阶段对“像素数组”的数学抽象。

左侧 iPhone 6S 的红、绿、蓝子像素近似按竖条排列,右侧 Galaxy S5 使用交错布局,绿色样本更密。一个逻辑像素并不必然对应三个同形同面积的小方块,算法中的均匀方块模型与实际发光结构需要区分。
物理子像素的排列会影响显示端的采样密度。人眼对绿光更敏感,一些显示面板或相机感光器会提高绿色通道的采样密度;相机中的 Bayer 彩色滤色阵列属于感光器采样结构,不能拿来命名显示器的交错子像素布局。彩色打印机的半色调网点则属于减色系统,墨水或网点叠加越多,结果通常越暗;屏幕的 RGB 通道数值越高,结果通常越亮。
三角形图元
复杂曲面通常先离散成网格,再由图元装配成三角形 Triangle。三角形有几个重要性质:三个不共线的顶点确定唯一平面;它是最简单的非退化多边形;简单多边形可以剖分为三角形;三角形是凸集,内部和外部容易判定;三个顶点的颜色、法线、纹理坐标等属性可以在内部连续插值。
四边形可能不共面,非凸多边形或带洞多边形的内部规则也更复杂。三角形固定三个顶点,覆盖测试和插值规则稳定,适合 GPU 以相同程序并行处理大量图元。
三角形还具有明确的凸性:一点在三条有向边的同一侧,当且仅当它位于三角形内部或边界上。三个顶点上的属性可以用重心权重连续过渡,这些属性包括颜色、法线、深度和纹理坐标。三角形顶点数量固定,也让图元装配、裁剪和并行执行具有稳定的数据结构。
点采样光栅化
设屏幕空间中的三角形为 。定义连续的二值指示函数;在离散位置读取这个函数的值,就是采样 Sampling。
光栅化的最简单实现是遍历屏幕中的像素,在每个像素中心采样一次:
1 | for (int y = 0; y < height; ++y) { |
这里的采样是从连续函数的指定位置读取函数值。图形学还会采样时间、方向、体积、表面反射性质和纹理坐标;医学 CT 与核磁共振得到的三维组织数据,也需要通过采样与可视化处理。

图中格线划分像素方块,红色三角形仍是连续屏幕空间中的图元。在每个方块中心执行上述测试,就得到该像素的二值覆盖结果。中心没有落在三角形内时,即使三角形覆盖了这个像素的一部分面积,单点方法仍会把它判为背景;细窄三角形还可能穿过像素却完全错过中心。
内部测试
设三角形顶点按逆时针排列为 ,测试点为 。沿循环顺序使用三条有向边:
三角形逆时针时, 全部大于等于 0,点在三角形内部或边界上;顺时针时,三个值全部小于等于 0。叉积的绝对值是有向面积的两倍,符号表示测试点位于有向边的左侧还是右侧。
边界点需要统一规则。若共享边两侧的三角形都把边界判为内部,会重复着色;若都判为外部,则可能留下裂缝。硬件通常使用左上规则,把水平顶边或左侧边固定分给一个三角形。
包围盒与遍历
三角形只覆盖屏幕上的一小块区域,没必要遍历整个屏幕。计算它的轴对齐包围盒 AABB:
候选像素只需在这个矩形内测试。对细长、倾斜的三角形,包围盒中会有较多无效像素;逐扫描线求左右边界、使用边函数增量更新或采用分块光栅化,可以进一步缩小候选范围。边函数写成 时,水平移动一个像素只需增加 ,竖直移动一个像素只需增加 ,硬件可以避免重复计算完整叉积。

蓝色矩形包含整个橙色三角形,矩形以外的样本不必测试。矩形内部仍有不少黑点位于三角形外,所以包围盒只缩小候选集合,最后还要执行精确的三条边测试。
背面剔除
对于绕序一致、封闭且不透明的物体,背向相机的表面通常不会出现在最终图像中,可以在光栅化前直接跳过。屏幕空间三角形 的有向面积为
在当前屏幕坐标约定下, 表示投影顶点为逆时针绕序,通常作为正面; 表示顺时针绕序,通常作为背面。 时三角形投影退化为线段,也可以直接剔除。
背面剔除只判断朝向,不负责判断前向表面是否被另一个物体遮挡;后者由深度测试解决。薄片、双面材质、透明外壳和内部观察场景可能需要关闭剔除。镜像变换或屏幕 y 轴翻转会改变绕序,因此剔除规则必须和坐标系及顶点绕序约定一起设置。
走样
单中心采样把连续三角形变成 0 或 1 的像素值。倾斜边界在屏幕上呈阶梯状,这种伪影称为锯齿 Jaggies;从采样理论看,它属于混叠 Aliasing,也称走样。伪影 Artifact 是计算结果偏离预期的上位概念,混叠特指采样不足造成的信息混淆。

左图的放射状图案包含许多细窄三角形,右图放大它的局部:斜边被表示成一系列水平或竖直台阶,有些细缝还会被漏掉。变化来自二值覆盖判定,连续斜边并没有真的改变形状。
空间采样的另一个例子是摩尔纹 Moiré。细密周期纹理经过较稀疏的采样后,可能被误解成低频的大块条纹。

左侧衬衫保留细密纹理,右侧降低采样率后再放大。右侧领带和衬衫上的粗条纹不属于原来的衣物,原有高频被混入了较低频。拍摄另一块显示屏时,相机采样网格与屏幕子像素排列也会产生相似现象。
时间采样会出现车轮效应 Wagon-Wheel Effect。电影或视频用离散帧记录旋转过程,相邻帧中轮辐的位置可以对应多个运动方向;将这些位置匹配成连续运动时,就可能得到反向旋转的判断。

图中的转盘有许多重复扇区。相邻帧若转过接近一个扇区的角度,图案会与原位置几乎重合;再多转或少转一点,观察到的差异可能对应一个缓慢反向运动。静态图片只展示了重复结构,反转现象来自连续帧的时间采样。
三种现象都与“信号变化比样本分布能够区分快”有关。空间里的斜边和细格纹,时间里的快速转动,可以用同一套采样理论分析。反走样需要先对连续信号滤波再采样,采样之后再模糊只能降低伪影的可见程度。
频率与傅里叶
一个一维余弦信号可以写成
其中 是单位距离内的周期数, 是振幅, 是相位,周期为 。频率越高,信号在相同距离内变化越多。
傅里叶级数说明,周期函数可以表示为常数项以及不同频率的正弦、余弦函数的线性组合。对阶跃或方波,加入的频率项越多,近似越精确;要精确表示突变边缘,理论上需要无限多个高频分量。
傅里叶变换 Fourier Transform把空间域信号变为频率域频谱:
两者互为逆变换,携带相同信息,只是组织方式不同。图像没有时间含义时,仍可把空间位置当作自变量,把对应的频率域称为空间频率域。

自然图像的平滑区域通常贡献较多低频信息,尖锐边缘、细小几何缝隙和高反差纹理包含更多高频信息。频谱图中心通常表示低频,离中心越远表示变化越快;图像边界做周期延拓时若左右或上下不连续,会产生沿频率轴延伸的高频亮线,应与图像内容本身区分。
在二维频谱中,频率向量指向亮度变化最快的方向,而不是纹理条纹延伸的方向。竖直条纹沿水平方向变化,因此能量会沿水平频率轴展开;中心亮点代表直流或平均亮度。理解这一点可以把图像中的边缘方向与频谱中的亮线方向联系起来。
频谱与滤波
这里先讨论线性滤波 Linear Filtering,它可以在频率域表示为对不同频段的保留或衰减。
- 低通滤波保留低频,去掉高频,图像变得平滑、边缘变模糊;
- 高通滤波去掉低频,只保留快速变化,结果突出边缘;
- 带通滤波保留一个中间频带,可以突出特定尺度的纹理。

右侧频谱中心被清空,左侧整体明暗随之消失,发丝、外轮廓和衣服边缘仍然存在。高通保留快速变化,大面积平缓区域没有足够的高频成分,因此在结果中变暗。

右侧只剩中心附近的频段,左侧仍能辨认头部和衣服的大形状,但发丝和锐利边缘被平滑。频谱保留范围越小,能够表示的变化越缓慢,空间图像越模糊。

右侧保留一个圆环:中心低频和外围高频都被清空。左侧只剩某种尺度的轮廓和过渡带,整体亮度与最细纹理均被削弱。把三幅结果一起比较,可以把频域中保留的位置与空间图像中保留的结构对应起来。
滤波可以用频谱图的中心和外围直观理解,也可以在空间域中通过卷积完成。盒式滤波器的旁瓣会让部分高频泄漏,频率硬截断对应的空间核还可能产生振铃;因此低通并不意味着所有波纹都会消失。
对二维图像,低通结果保留大面积明暗结构,去掉细纹理和锐利边缘;高通结果通常接近边缘或细节图;带通结果突出某个空间尺度。空间核的大小决定平均邻域,频率响应则决定哪些变化速度能够通过,两种描述是同一个滤波过程的两面。
采样的频域
理想规则采样可以用冲激梳表示。采样间隔为 时,空间域冲激梳为
其中 是 Dirac delta 分布,满足
连续信号与冲激梳相乘:
冲激梳的频域间隔为采样角频率 :
根据卷积定理,时域相乘变成频域卷积:
所以采样在频率域中的效果是把原始频谱按采样频率周期复制。采样越密,复制间隔越大;采样越稀,复制副本越靠近。这就是“空间稀疏对应频域拥挤”的来源。

按行对照两列:上排是连续信号及其原始频谱,中排是空间中的采样梳及频率中的采样梳,下排是采样结果和周期平移的频谱副本。减小采样频率会使右下图的副本靠近,直至发生重叠;此时不同连续频率可以产生相同离散样本。

图的上半部分比较滤波前后的频谱,低通先去掉超过采样能力的外围频率;下半部分再用较低采样率复制变窄后的频谱,副本之间保持间隔,因此不会互相重叠。若跳过上一步直接采样,原始高频就会折回低频形成错误图案。
采样极限
设信号最高频率为 ,采样频率为 。为了让相邻频谱副本不重叠,需要满足奈奎斯特条件:
对给定信号, 称为奈奎斯特率 Nyquist Rate;对给定采样频率, 称为奈奎斯特频率 Nyquist Frequency。临界情况下还要考虑频带端点和相位,因此工程上通常留出余量,不把采样频率恰好压在等号上。
当 时,频谱副本重叠,高频内容混入低频区域。离散采样点无法区分两个频率不同但样本相同的信号,因为
这也是混叠不可逆的原因:同一组离散样本可能来自多个不同的连续信号。
对带限信号,奈奎斯特条件和理想重建能够保证恢复;对三角形边界这样的非带限信号,条件只能作为分析和近似的依据。提高显示分辨率通常能减轻锯齿,因为频谱副本间距变大、重叠区域减少,但无限高频仍然存在。
几何边界是阶跃信号,理论上含有无限高频。提高分辨率可以减轻锯齿,却不能把非带限信号变成带限信号;真正的反走样要在采样前限制频带。
卷积
连续信号 与滤波核 的卷积定义为
工程上可以把它理解为一个窗口沿信号移动,在每个位置把窗口权重与覆盖的信号值逐项相乘再求和。权重为 的窗口作用于 时结果为 3,作用于 时结果为 4;每个位置都得到邻域的加权平均。
卷积 Convolution的定理给出
空间域做卷积等价于频域逐点相乘;空间域逐点相乘则等价于频域卷积。于是可以选择在图像邻域中做加权平均,也可以先变换到频域相乘,再做逆变换。

图中把“图像与空间域卷积核”的路径和“分别变换到频域、逐点相乘、再逆变换”的路径并列展示;两条路径都得到平滑的输出,说明卷积定理把邻域平均与频率选择连接起来。
最简单的二维盒式滤波器是 的九个 。每个输出像素是周围九个像素的平均,整体变得模糊;系数和为 1 可以保持常量图像的亮度。
一维宽度为 的归一化盒核为
它的傅里叶变换可以逐步算出:
因此它是 sinc 函数:
空间核越宽,频域主瓣越窄,主要保留的频率越低,图像越模糊;sinc 旁瓣仍会让部分高频通过。
这里采用 的定义,并在 处按极限取 1,所以归一化盒核的零频响应为 1。盒核的正空间权重不会像理想频域硬截断那样产生明显过冲,但旁瓣会带来高频泄漏和轻微波纹。
二维方形盒核可以分离成 x、y 两个一维盒核,频域响应也分离为两个 sinc 的乘积。旁瓣的正负交替意味着某些频段会出现相位反转,这也是盒式滤波器不等价于理想无波纹低通的原因。

左侧白色方块是空间域中的方形盒核,右侧是它的频谱幅值:中心主瓣外仍有沿水平、竖直方向排列的衰减旁瓣,这个十字结构来自两个一维 sinc 的可分离乘积。结合前面的变换式,扩大白色方块会使右侧中心主瓣收窄,主要通过的频率降低;旁瓣仍然存在,盒核没有严格的截止频率。
预滤波
反走样的顺序是:先对连续信号做低通预滤波,衰减当前采样网格无法表达的高频,再进行离散采样。频域上,预滤波把原始频谱变窄;采样后虽然仍会复制,但副本不再重叠。
先采样再模糊会得到 blurred aliasing。采样已经把高频折叠到低频,之后的模糊无法判断哪些低频来自原信号、哪些来自折叠错误,只能把错误结果一起变软,不能恢复真实边界。
覆盖率
对纯色三角形,单位像素盒滤波后的值就是图元在像素中的覆盖率。若像素区域为 ,定义
单位像素面积为 1 时, 就是被覆盖面积的比例。纯色前景与背景的颜色可以按覆盖率混合:
覆盖 1/8 的像素得到 12.5% 的前景颜色和 87.5% 的背景颜色;覆盖一半时取两者各半;完全覆盖时取纯前景颜色。这样,原本被二值采样丢掉的边缘面积信息重新进入像素值。
精确计算任意三角形与像素方块的交集面积需要求交、分类和多边形面积计算,逐像素执行代价很高,所以实时硬件通常采用多采样近似。
超采样
在一个像素内部放置 个子采样点,通过平均 inside 值近似覆盖率:
2×2 子样本可以得到 0%、25%、50%、75% 和 100% 五种覆盖率;4×4 子样本得到 17 个离散等级。样本越多,面积估计通常越准确,但覆盖测试、深度和存储成本也随之增加。
要区分两种常见实现。SSAA 对每个子样本都执行完整着色,再把结果降采样,计算量和存储量都随样本数增加。MSAA 主要为子样本保存覆盖和深度,属于同一图元的样本通常可以共享一次着色,再按覆盖率解析到像素。MSAA 改善的是几何边缘,不会自动消除着色器或纹理内部的高频。
MSAA 不是提高屏幕分辨率。4×4 的 16 个子样本只是为了估计一个原像素的覆盖率,屏幕仍然有原来的像素数量。工业实现也不一定使用规则 4×4 网格,常用不规则样本分布,部分样本可以在邻近像素间复用,因此 4× MSAA 的实际开销通常低于完整四倍渲染。
如果把一个像素内部布置 个样本,覆盖率估计会更细,但每个像素需要 10,000 次覆盖判断,实时渲染通常无法接受。这个极端例子说明了覆盖精度和计算量之间的直接取舍。

实线划分原像素,虚线把每个像素分成四块,每块中心都有一个样本。红点在三角形内,灰点在外;某个像素有三个红点时,覆盖率近似为 3/4,只有一个红点时近似为 1/4。子样本的平均只估计覆盖面积,三角形本身仍是连续的。

结果图使用每像素 4×4 个样本。与前面单点采样的放大图比较,红色尖边和浅色背景之间出现中间颜色,细缝也较连续。它们来自多个样本的平均,边缘仍有有限分辨率下的离散误差,不能等同于精确的连续面积积分。
解析与透明
多采样结束后,需要把子样本合成为一个屏幕像素,这一步称为 resolve。若每个子样本的最终可见颜色为 ,简单不透明情况下
每个子样本应先完成覆盖判断、深度测试和必要的透明混合,再做 resolve;过早平均会丢失样本之间的遮挡关系。覆盖率描述几何图元占据像素的面积比例,透明度描述材质让光透过的比例,两者可以同时出现,不能把透明度直接当成覆盖率。
采用 Source-Over 混合时,直通透明度(Straight Alpha)为
预乘透明度(Premultiplied Alpha)把颜色存成 ,混合式简化为
颜色混合应在线性光空间进行,再根据显示编码转换到输出空间;预乘形式还能避免完全透明像素携带无效 RGB 背景色,但不能修复错误的前后顺序。
Source-Over 不满足交换律。两层不透明度都为 时,A 覆盖 B 与 B 覆盖 A 得到的预乘颜色分别为 和 ;透明图元仍然需要正确的前后顺序或专门的顺序无关透明算法。
工程抗锯齿
FXAA Fast Approximate Anti-Aliasing 在已得到的颜色图像上检测高对比度边缘,再沿边缘方向进行平滑。它不增加几何采样,也不能恢复已经混叠的真实覆盖率,优点是成本低,代价是可能让局部图像变软。
TAA Temporal Anti-Aliasing 把样本分布到时间上。每帧可以抖动像素内的采样位置,再利用运动向量把上一帧样本重投影到当前帧,累积静态场景的覆盖信息。物体移动、遮挡变化或历史样本失效时,需要拒绝无效历史,否则会产生拖影和重影。
这两种方法和 MSAA 的位置不同:MSAA 在单帧内增加空间覆盖样本,TAA 利用多帧历史,FXAA 在已经采样后的图像上做视觉平滑。它们都不能绕开采样造成的信息损失,只是在不同阶段降低可见伪影。
超分辨率
超分辨率和反走样都处理样本不足,但发生阶段不同。把 512×512 图像放大到 1024×1024 时,原始高频细节已经没有被采到,只能依据插值、局部统计或训练得到的先验估计缺失信息。反走样在采样前限制频带,超分辨率在采样后重建高分辨率信号。
DLSS 等深度学习超采样方法属于后者:模型从大量高、低分辨率图像中学习局部细节的补全方式。它可能得到视觉上合理的高频,但这些细节是估计结果,不是从低分辨率样本中无损恢复出来的原始信息。
从连续几何到离散像素、从采样伪影到频域解释,再到预滤波和工程抗锯齿,这条链条到这里已经闭合。深度缓冲会在下一篇开头接上可见性问题。




