术语台已经备好,本节把实验室里第一场正式对质安排上:同一段场景,分别交给光栅化管线和光线追踪管线,逐项核对双方交付的成绩单。看完这场对质你会发现,"光线追踪取代光栅化"是一个从一开始就问错了的问题——真正的答案是按效果的物理性质分账。这一节也直接决定你日后在工程里怎么选型,请把对照表抄下来。
设想一个极简场景:房间一面墙上挂着平面镜,镜面正对窗外一条霓虹街道,相机站在镜子侧面。用纯光栅化管线渲染,镜子通常靠屏幕空间反射(SSR)技术实现:把上一帧已经画进屏幕缓冲的颜色,沿反射方向二次采样。麻烦在于,霓虹街道此刻在相机视野之外——SSR 只能查屏幕里已有的像素,屏幕外的信息它一概不知,镜子里那片区域只能拿天空色或粗糙近似充数。换成光线追踪:主光线命中镜面后派生反射射线,这条射线完全不管"屏幕里有没有",一头扎进加速结构查询,命中街道建筑,返回霓虹牌的颜色。同一个像素,两条路线一个交白卷一个交满分,差别不在算力,在信息视野:光栅化的世界止步于屏幕缓冲,光线追踪的世界是整个场景数据库。
把这个反例记牢,它几乎是所有"光追值不值得开"讨论的原型:光追赢在可见性判断的全局性,输在每次判断的昂贵单价。下面把账算全。
几何处理的方向是根本分歧。光栅化是物中心的:遍历每个三角形,经矩阵变换投影到屏幕,光栅化成像素并填充,物体推着走;光线追踪是视中心的:从每个像素出发反向查询场景,谁被看见才处理谁。物中心意味着复杂度正比于场景三角形总量,与屏幕上实际可见多少无关——一个百万三角形场景哪怕只露出百分之一,光栅化也要把全部顶点过一遍管线(当然,视锥剔除和遮挡剔除会救场);视中心意味着复杂度正比于像素数乘射线数,看不见的三角形天然免费。
透明与排序是光栅化的老伤。半透明玻璃需要按深度排序后从后往前画,排序在大面积交叠时既贵又脆弱;光线追踪沿路径累积透射能量,天然无需排序,多层玻璃依次折射是递归的自然结果。
阴影质量的差距更直观。光栅化的阴影贴图是把场景从光源视角再画一遍存深度,分辨率不足就渗出锯齿或走样;光线追踪的阴影射线是精确的几何遮挡判断,边缘干净利落,配合面积光源采样还能自然软阴影——代价是每盏每像素一条射线的开销。
间接光照则是最悬殊的一项。颜色溢出(红地毯把红光反弹到白墙上)在光栅化里需要预烘焙光照贴图、光照探针或屏幕空间近似,全是各种打补丁;在路径追踪里它是随机弹跳的统计必然,不需要任何额外模块。反过来,光栅化在直接光照的主体部分上效率碾压:数百万三角形每秒填充、材质着色高度优化、数十年的硬件投入,这些都不是光追短期内能追平的。

对照表落地成一次完整决策。需求:一辆车的展厅渲染,车漆要映出天花板灯带、地面要映出车身、四周是落地玻璃。第一步列效果清单:车漆清漆层的高频反射、地面长距离反射、玻璃内外多次折射、灯带的焦散光斑。第二步逐项过账:车漆反射以屏幕内为主但频率高,SSR 拉丝伪影明显,判给光追反射(半分辨率射线加降噪);地面反射视角低平、屏幕外内容多,SSR 盲区致命,判给光追;玻璃折射光栅化基本无解,判给光追;灯带焦散在实时预算内谁也算不动,降级为预烘焙光斑贴图,标注为已知妥协。第三步定管线结构:G-buffer 与主体着色仍走光栅化,反射折射阴影走光追查询,各自产出汇入合成器。结果:相比全光追方案帧时间减半以上,相比纯光栅方案画面可信度显著提升。解读:混合不是妥协的耻辱,而是把每像素预算花在光栅化确实无能为力的可见性问题上。变式:若场景换成静态建筑可视化,全预计算路径追踪烘焙反而最优——选型永远先问动态性与可见性复杂度,再谈技术先进性。
对照表里"复杂度基准不同"这句话值得单独拆开讲,它是全部选型讨论的数学地基。光栅化的成本是三角形单价的线性叠加:场景里三角形数量翻倍,逐三角形变换与填色的工作量大致跟着翻倍,每个像素被多少三角形覆盖就付多少份钱。光线追踪的成本是每条射线在加速结构里走一趟的对数:一亿三角形与十万三角形相比,BVH 的深度只涨了两三层,单条射线的开销几乎持平——射线数量才是主变量。两条成本曲线放在同一张坐标系里必然相交,交点落在哪里,取决于场景规模、材质复杂度与每像素光线数三个变量。
把变量代入具体档位会看得更清楚。每像素一条阴影射线、场景五百万三角形:这一项落在交点的光栅化一侧,所以实时管线里的阴影要做分级降载,第 7 章会展开。一面镜子要映出整条街、屏幕外内容占九成:哪怕每像素只追一条反射射线也必须走光追,因为屏幕空间近似在这种场景下结构性失明。表格里再补一行常被忽略的带宽账:光栅化逐三角形是一次性读写、相邻像素高度复用,光追逐射线是随机跳转、缓存命中率天然吃亏——这也是第 9 章性能剖析里访存延迟常年排第一的根源。
| 情形 | 成本主变量 | 倾向的管线 | 一句话理由 |
|---|---|---|---|
| 直接光照与主体着色 | 三角形数量 | 光栅化 | 单价低、硬件流水线三十年打磨 |
| 屏幕外反射与折射 | 可见性复杂度 | 光线追踪 | 屏幕空间方法拿不到屏外几何 |
| 大规模植被与粒子 | 几何数量 | 光栅化 | 线性单价优势压倒一切 |
| 少量精确长距离镜面 | 射线数量 | 光线追踪 | 单射线成本与场景规模近似无关 |
| 无排序透明 | 可见性排序 | 光线追踪 | 按几何顺序天然命中,免排序 |
还有一条经验值得记下:两条成本曲线本身都在移动。分辨率翻倍会同时惩罚光栅化的填色量与光追的射线数,但降噪器成熟之后,"半分辨率追踪加时序上采样"成了标准答案,等于把射线数砍掉四分之三;实例化与压缩顶点格式又让光栅化侧的场景规模不再线性吃满带宽。所以不要把今天的交点当成永久判决——每次硬件换代、每次算法升级,都要把这张账重新对一遍。
选型时先找到自己场景里每个效果的主变量,再看它落在交点哪一侧。这是第 7 章混合管线排班的全部逻辑,也是第 10 章离线与实时两条生产线分工的底层依据。
一个练习帮你把这张表用活:打开任意一款带光追的游戏画质菜单,对着设置项逐条问"它调的是哪个变量"——反射距离是射线 tmax、反射精度是每像素射线数、反射降噪强度是历史信任权重。三问之后菜单不再是黑盒,而是本章成本模型的运行时界面;能把画质选项翻译回成本变量的人,调参数永远快人一步。反过来,当你看到"反射质量"滑杆在高端卡上默认拉满、在核显上直接消失,也就看到了交点位置在不同硬件上的移动——同一款游戏,两套成本账。
对质结束,判定清晰:光追负责光栅化答不出的可见性问题。但它凭什么算得"物理正确"?这就需要给"光"本身建立度量与方程——下一章请出实验室的两件核心仪器:辐射度量学与渲染方程。