Badge

摘要:光线追踪(Ray Tracing)是计算机图形学中最具影响力的渲染技术之一,从电影级离线渲染到游戏实时渲染,其应用范围持续扩展。本文系统梳理光线追踪的完整理论体系:从光的物理本质与渲染方程的数学形式出发,深入分析 Whitted 风格光线追踪、路径追踪、光子映射等核心算法的设计原理与收敛特性,详细讨论 BVH 加速结构、重要性采样、去噪等工程优化方法,并涵盖 NVIDIA RTX 硬件加速、UE5 Lumen 等现代实时光线追踪系统架构。最后结合无人机仿真中的传感器渲染需求,探讨光线追踪在仿真领域的工程实践。

引言:从光栅化到光线追踪——渲染范式的转变

计算机图形学在过去三十年间经历了两次重大范式转变。第一次是 1990 年代固定管线到可编程着色器的转变,第二次就是当下正在发生的光栅化(Rasterization)到光线追踪(Ray Tracing)的转变。

光栅化的核心思想:将三维场景中的几何体投影到二维图像平面,通过深度测试(Z-buffer)确定可见性。其计算复杂度与场景中的三角形数量成正比,但对于反射、折射、软阴影、全局光照等效果,需要大量近似技巧(Shadow Map、环境贴图、Screen Space Reflection 等)。

光线追踪的核心思想:模拟光在场景中的物理传播路径,从相机出发反向追踪光线与场景的交互。其计算复杂度与图像分辨率×采样数×路径深度成正比,但能够自然处理反射、折射、全局光照等效果——它直接求解的是光的物理方程,而非视觉近似

这一范式转变的驱动力来自三个方面:

  1. 硬件成熟:NVIDIA RTX 系列 GPU 集成了专用的 RT Core 硬件加速单元,将光线与三角形求交的速度提升了 1-2 个数量级
  2. 算法突破:实时去噪算法(SVGF、NRD、DLSS Ray Reconstruction)使低采样率路径追踪的结果可用
  3. 需求升级:电影级视觉质量、物理级精确仿真对渲染真实感的要求持续提高

一、光的物理本质与渲染方程

1.1 光与物质的交互模型

光线追踪的物理基础是几何光学(Geometrical Optics),它将光视为沿直线传播的射线。光与物质表面的交互可以用双向反射分布函数(BRDF)来描述。

BRDF 定义

fr(ωi,ωo)=dLo(ωo)dEi(ωi)=dLo(ωo)Li(ωi)cosθidωi f_r(\omega_i, \omega_o) = \frac{dL_o(\omega_o)}{dE_i(\omega_i)} = \frac{dL_o(\omega_o)}{L_i(\omega_i)\cos\theta_i d\omega_i}

其中 ωi\omega_i 是入射方向,ωo\omega_o 是出射方向,θi\theta_i 是入射方向与表面法线的夹角。

BRDF 的两个基本性质

  1. Helmholtz 互易性(Reciprocity):

    fr(ωi,ωo)=fr(ωo,ωi) f_r(\omega_i, \omega_o) = f_r(\omega_o, \omega_i)
  2. 能量守恒(Energy Conservation):

    Ωfr(ωi,ωo)cosθidωi1,ωo \int_{\Omega} f_r(\omega_i, \omega_o) \cos\theta_i d\omega_i \leq 1, \quad \forall \omega_o

对于非漫射表面(如金属、玻璃),BRDF 的常见解析模型包括:

Cook-Torrance 微表面模型(金属材质):

fr(ωi,ωo)=F(ωi,h)G(ωi,ωo,h)D(h)4(ωin)(ωon) f_r(\omega_i, \omega_o) = \frac{F(\omega_i, h)G(\omega_i, \omega_o, h)D(h)}{4(\omega_i \cdot n)(\omega_o \cdot n)}

其中三个分量的物理含义:

  • D(h)D(h):法线分布函数(NDF),描述微表面法线的统计分布——常用 GGX(Trowbridge-Reitz)模型
  • G(ωi,ωo,h)G(\omega_i, \omega_o, h):几何遮蔽函数,描述微表面间的自遮挡效应
  • F(ωi,h)F(\omega_i, h):菲涅尔项,描述入射角对反射率的影响——可用 Schlick 近似高效计算

1.2 渲染方程——全局光照的数学形式

渲染方程(Rendering Equation)由 Kajiya 于 1986 年首次提出,是光线追踪算法的理论基础:

Lo(p,ωo)=Le(p,ωo)+Ωfr(p,ωi,ωo)Li(p,ωi)(ωin)dωi L_o(p, \omega_o) = L_e(p, \omega_o) + \int_{\Omega} f_r(p, \omega_i, \omega_o) L_i(p, \omega_i) (\omega_i \cdot n) d\omega_i

该方程的关键含义:

  • Lo(p,ωo)L_o(p, \omega_o):从点 pp 沿方向 ωo\omega_o 出射的辐射亮度
  • Le(p,ωo)L_e(p, \omega_o):点 pp 自身发射的辐射亮度(自发光项)
  • Ωdωi\int_{\Omega} \cdots d\omega_i:对所有入射方向的半球积分
  • Li(p,ωi)L_i(p, \omega_i):从方向 ωi\omega_i 到达点 pp 的入射辐射亮度——这本身包含了场景中其他物体的反射,使得方程具有递归性质

渲染方程的递归本质是光线追踪算法设计中最核心的挑战。将 Li(p,ωi)L_i(p, \omega_i) 展开为另一表面点的 LoL_o,渲染方程就变成了一个高维积分方程,其维数等于路径中的弹射次数。Kajiya 证明了该方程的解对应 Neumann 级数展开的无限和。

1.3 路径积分形式

将渲染方程重新表述为路径积分形式(Path Integral Formulation)为蒙特卡洛求解提供了直接理论基础:

Ij=ΩLe(x0x1)G(x0x1)k=1n1fr(xk+1xkxk1)G(xkxk+1)We(xn1xn2)dA(x0)dA(xn1) I_j = \int_{\Omega} L_e(x_0 \to x_1) \cdot G(x_0 \leftrightarrow x_1) \cdot \prod_{k=1}^{n-1} f_r(x_{k+1} \to x_k \to x_{k-1}) \cdot G(x_k \leftrightarrow x_{k+1}) \cdot W_e(x_{n-1} \to x_{n-2}) dA(x_0) \cdots dA(x_{n-1})

其中几何项 G(xy)G(x \leftrightarrow y) 包含了可见性函数 V(x,y)V(x, y)(判断两点间是否有遮挡)和几何衰减因子 cosθxcosθyxy2\frac{|\cos\theta_x \cos\theta_y|}{\|x - y\|^2}

路径积分形式的关键洞察是:渲染结果是所有可能光路贡献的积分。每条路径 xˉ=x0x1xk\bar{x} = x_0 x_1 \cdots x_k 对应一条从光源到相机的完整光子传输路径。

二、光线追踪核心算法

2.1 Whitted 风格光线追踪

Turner Whitted 在 1980 年提出的递归光线追踪算法是光线追踪领域的奠基之作。其核心流程:

  1. 对每个像素,从相机发出一条主光线(Primary Ray)
  2. 光线与场景求交,找到最近交点
  3. 在交点处计算:
    • 局部光照:使用 Phong/Blinn-Phong 模型计算直接光照
    • 反射方向:递归发射反射光线
    • 折射方向:若材质透明,按 Snell 定律发射折射光线
    • 阴影光线:向各光源发射检测光线,判断是否被遮挡

Whitted 算法虽然能产生反射、折射和硬阴影效果,但其局限在于:

  • 只处理完美镜面反射和折射
  • 漫射表面只计算直接光照
  • 无法产生焦散(Caustics)、软阴影颜色渗透(Color Bleeding)等效果

2.2 路径追踪——Kajiya 的革命

路径追踪(Path Tracing)由 Kajiya 在 1986 年提出,是渲染方程的第一个通用蒙特卡洛求解器。其核心思想:对于每个像素,只追踪一条完整路径,用这条路径的贡献作为该像素辐射亮度的无偏估计

算法流程

1
2
3
4
5
6
for each pixel:
radiance = 0
for s = 1 to S (采样数):
ray = generate_camera_ray(pixel)
radiance += trace_path(ray)
pixel_color = radiance / S
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function trace_path(ray):
hit = scene.intersect(ray)
if no hit: return 0

// 直接光照采样
direct_light = sample_direct_light(hit)

// 继续路径(俄罗斯轮盘赌决定是否终止)
if russian_roulette() == continue:
new_direction = sample_brdf(hit)
new_ray = Ray(hit.point, new_direction)
indirect = trace_path(new_ray) * brdf / pdf
else:
indirect = 0

return direct_light + indirect

路径追踪的收敛性:路径追踪以 O(1/N)O(1/\sqrt{N}) 的速率收敛到渲染方程的真解,其中 NN 是每像素采样数。这意味着要减少 50% 的噪声,需要 4 倍的采样量。

2.3 蒙特卡洛积分与方差缩减

路径追踪的核心数学工具是蒙特卡洛积分。对于积分 I=Ωf(x)dxI = \int_{\Omega} f(x) dx,其蒙特卡洛估计量为:

I1Ni=1Nf(Xi)p(Xi),Xip(x) I \approx \frac{1}{N} \sum_{i=1}^{N} \frac{f(X_i)}{p(X_i)}, \quad X_i \sim p(x)

其中 p(x)p(x) 是概率密度函数。当 p(x)f(x)p(x) \propto f(x) 时,估计量的方差为零——这就是重要性采样(Importance Sampling)的理论基础。

BRDF 重要性采样:对于漫反射 BRDF fr=ρd/πf_r = \rho_d / \pi,按照余弦分布采样 cosθ\cos\theta

p(θ,ϕ)=cosθsinθπ p(\theta, \phi) = \frac{\cos\theta \sin\theta}{\pi}

变换后的采样公式:

θ=arccos(ξ1),ϕ=2πξ2,ξ1,ξ2U[0,1] \theta = \arccos(\sqrt{\xi_1}), \quad \phi = 2\pi\xi_2, \quad \xi_1, \xi_2 \sim U[0,1]

多重重要性采样(Multiple Importance Sampling, MIS)是 Veach 提出的方差缩减关键技术。当从 BRDF 和光源两个不同的分布采样时,MIS 通过加权组合两个估计量来降低方差:

F=1nfi=1nff(Xi)wf(Xi)pf(Xi)+1ngj=1ngf(Yj)wg(Yj)pg(Yj) F = \frac{1}{n_f} \sum_{i=1}^{n_f} \frac{f(X_i) w_f(X_i)}{p_f(X_i)} + \frac{1}{n_g} \sum_{j=1}^{n_g} \frac{f(Y_j) w_g(Y_j)}{p_g(Y_j)}

其中常用的权重函数是幂启发式(Power Heuristic):

ws(x)=(nsps(x))βk(nkpk(x))β,β=2 w_s(x) = \frac{(n_s p_s(x))^\beta}{\sum_k (n_k p_k(x))^\beta}, \quad \beta = 2

2.4 光子映射与双向方法

光子映射(Photon Mapping)由 Henrik Wann Jensen 在 1996 年提出,专门用于处理焦散等路径追踪难以高效计算的路径类型。

光子映射的两阶段流程:

阶段一——光子追踪:从光源发射大量光子(数百万到数十亿),追踪光线在场景中的传播路径,将光子存储在与表面相交的光子图(Photon Map)中:

1
2
3
4
5
6
emit photons from light sources
for each photon:
while photon not terminated:
trace photon through scene
store photon at surface intersection
probabilistically absorb/reflect/transmit

阶段二——渲染:从相机发射光线,在交点处查询光子图,通过密度估计计算间接光照:

Li(x,ω)1πr2p=1Nfr(x,ωp,ω)Φp L_i(x, \omega) \approx \frac{1}{\pi r^2} \sum_{p=1}^{N} f_r(x, \omega_p, \omega) \Phi_p

其中 rr 是查询半径,Φp\Phi_p 是光子的通量。

双向路径追踪(Bidirectional Path Tracing)将路径追踪和光子映射的思想统一:同时从光源和相机生成子路径(Sub-path),然后将子路径的端点连接起来形成完整路径。这种方法能高效处理路径追踪难以采样的路径类型(如 Eye-Caustic-Light 路径)。

2.5 实时路径追踪与去噪

实时路径追踪面临的核心矛盾:物理精度需要大量采样,实时性能要求极小采样量

在每像素 1-4 个采样(SPP)的限制下,直接计算结果的噪声不可接受。解决方案是时域累积+空间去噪的组合策略:

时域重组(Temporal Reprojection):利用前一帧已累积的采样结果,通过 Motion Vector 将上一帧像素映射到当前帧:

Lˉt(x)=αLt(x)+(1α)Lˉt1(x) \bar{L}_{t}(x) = \alpha L_t(x) + (1-\alpha) \bar{L}_{t-1}(x')

其中 xx'xx 在前一帧的对应位置,α\alpha 是累积因子(通常 α0.05\alpha \approx 0.05)。这种方法的有效性依赖于成功的反向重投影可见性验证

SVGF(Spatiotemporal Variance-Guided Filtering)是时域去噪的代表算法:

  1. 计算每个像素的方差估计
  2. 使用边缘感知的交叉双边滤波进行空间滤波
  3. 通过时域累积进一步降低噪声

NVIDIA NRD(Neural Real-Time Denoising)结合了手工设计的信号处理管道和神经网络特征提取,支持 ReBLUR(抗混叠)、SIGMA(阴影)、SPECULA(反射)等专用去噪模块。

三、加速结构与求交算法

3.1 光线-三角形求交

光线与三角形求交是光线追踪中最频繁的计算操作。Möller-Trumbore 算法是最广泛使用的交点检测算法:

光线的参数形式:R(t)=O+tDR(t) = O + tD,三角形上的点可表示为重心坐标形式:

O+tD=(1uv)V0+uV1+vV2 O + tD = (1 - u - v)V_0 + uV_1 + vV_2

写成矩阵形式:

[DV1V0V2V0][tuv]=OV0 \begin{bmatrix} -D & V_1 - V_0 & V_2 - V_0 \end{bmatrix} \begin{bmatrix} t \\ u \\ v \end{bmatrix} = O - V_0

应用 Cramer 法则可直接求解 t,u,vt, u, v。若 0<u,v,u+v<10 < u, v, u+v < 1t>0t > 0,则光线击中三角形内部。该算法的优点是只需一次除法操作,数值稳定性好。

3.2 包围盒层次结构

包围盒层次结构(Bounding Volume Hierarchy, BVH)是现代光线追踪最主流的加速结构。BVH 是一棵二叉树,每个节点对应场景中一个空间区域的轴对齐包围盒(AABB),叶子节点包含几何体。

BVH 构建——SAH 策略

表面面积启发式(Surface Area Heuristic)是 BVH 构建的经典优化准则。对于给定节点,其光线求交的期望代价为:

C=Ctrav+SA(L)SA(P)NLCisect+SA(R)SA(P)NRCisect C = C_{trav} + \frac{SA(L)}{SA(P)} \cdot N_L \cdot C_{isect} + \frac{SA(R)}{SA(P)} \cdot N_R \cdot C_{isect}

其中 SASA 是包围盒表面积,NL,NRN_L, N_R 是左右子树的几何体数量,CtravC_{trav} 是遍历节点代价,CisectC_{isect} 是求交代价。SAH 通过在空间轴向上划分候选位置,选择使代价最小的划分方案。

实际构建流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
struct BVHNode {
AABB bounds;
union {
struct { BVHNode *left, *right; }; // 内部节点
struct { Triangle *triangles; int count; }; // 叶子节点
};
};

function build_bvh(triangles, depth):
bounds = compute_bounds(triangles)
if triangles.count < THRESHOLD:
return create_leaf(bounds, triangles)

// SAH 搜索最优划分
best_cost = INFINITY
best_axis = 0
best_position = 0

for axis in [x, y, z]:
sort(triangles, by centroid on axis)
for each split position:
cost = compute_sah_cost(triangles, axis, position)
if cost < best_cost:
best_cost = cost
best_axis = axis
best_position = position

left_tris, right_tris = split(triangles, best_axis, best_position)
left = build_bvh(left_tris, depth+1)
right = build_bvh(right_tris, depth+1)
return create_internal_node(bounds, left, right)

GPU 优化 BVH 构建:现代 BVH 构建广泛采用基于 Morton Code 的线性构建方法。首先计算每个三角形中心点的 Morton Code(将三维坐标交错编码为 64 位整数),然后按 Morton Code 排序,最后通过相邻代码的二进制前缀差异确定层次结构。这种方法将 O(nlogn)O(n \log n) 的 SAH 构建降为 O(n)O(n),是实时 BVH 构建的标准方案。

3.3 NVIDIA RT Core 与硬件加速

NVIDIA 从 Turing 架构(RTX 20 系列)开始引入专用的 RT Core 硬件单元。RT Core 在硬件层面实现了:

  1. 光线-AABB 求交:每个 RT Core 每时钟周期可同时测试 4 个 AABB 与光线的相交情况
  2. 光线-三角形求交:使用优化过的 Möller-Trumbore 算法,单周期完成
  3. BVH 遍历:硬件维护遍历栈,自动完成栈溢出处理

RT Core 的关键性能指标

架构 GPU RT Core 数量 光线/秒(GigaRays/s)
Turing RTX 2080 Ti 68 10 GRays/s
Ampere RTX 3090 82 35 GRays/s
Ada Lovelace RTX 4090 128 92 GRays/s
Blackwell RTX 5090 170 150+ GRays/s

硬件加速的代价是灵活性降低——RT Core 只支持三角形求交,不支持自定义图元。对于毛发粒子、体积云等非三角形几何体,需要额外的软件回落路径。

四、现代光线追踪系统架构

4.1 混合渲染管线

当前主流的实时渲染引擎(UE5、Unity HDRP)都采用混合渲染架构:场景中主要物体通过光栅化渲染,光线追踪作为补充层处理光栅化无法高效实现的效果。

混合渲染管线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
光栅化通道 (Rasterization Pass)
├── G-Buffer 生成(位置、法线、材质参数、深度)
└── 阴影映射 (Shadow Maps)

光线追踪通道 (Ray Tracing Pass)
├── 反射 (Ray Traced Reflections)
├── 阴影 (Ray Traced Shadows)
├── 环境光遮蔽 (Ray Traced AO)
└── 全局光照 (RTXGI / Lumen)

后处理通道 (Post-Processing)
├── 去噪 (SVGF / NRD)
├── 时域抗锯齿 (TAA / DLSS)
└── Tone Mapping

4.2 虚幻引擎 5 Lumen 系统

UE5 的 Lumen 是一种全动态的全局光照和反射系统,代表了实时全局光照技术的当前最高水平。Lumen 的核心设计理念是在不依赖 Hardware RT 也能运行的同时,利用 Hardware RT 获取更好的质量和性能。

Lumen 的两级追踪策略

一级——屏幕追踪(Screen Tracing):在 G-Buffer 中沿反射方向步进,查询是否有可见的表面。速度极快但只覆盖屏幕可见区域。

二级——有符号距离场追踪(SDF Tracing):对于屏幕追踪未命中的方向(如屏幕外的反射内容),使用场景的 SDF 表示进行球体追踪。SDF 是场景几何体的低精度表示,通过 Distance Field 的快速查询实现高效光线行进:

1
2
3
4
5
6
7
8
9
10
function sdf_trace(ray, sdf_scene):
t = 0
for i in range(MAX_STEPS):
dist = sdf_scene.query(ray.origin + t * ray.direction)
if dist < EPSILON:
return HIT
if t > MAX_DISTANCE:
return MISS
t += dist
return MISS

Lumen 的全局光照计算

Lumen 使用Voxel Radiance Cache在场景中缓存间接光照。每个缓存点存储入射辐射亮度的球谐函数(SH)表示,在渲染时通过在缓存点之间追踪光线来更新间接光照。

4.3 OptiX 与离线渲染架构

NVIDIA OptiX 是面向离线渲染和科学计算的光线追踪框架。OptiX 的关键设计是将光线追踪管线抽象为可编程的几个阶段:

1
2
Ray Generation (自定义) → Intersection (硬件/软件) → 
Any Hit / Closest Hit (自定义) → Miss (自定义)

OptiX 7.x 引入了更底层的 API,允许开发者直接控制 BVH 构建和光线发射,被 Blender Cycles、Redshift、Arnold 等主流渲染器广泛采用。

Blender Cycles 的架构(应用了 OptiX 加速):

1
2
3
4
5
场景数据 → BVH构建 (OptiX) → 路径追踪核心
├── 直接光照采样 (Next Event Estimation)
├── BRDF采样 (BSDF importance sampling)
├── 体积散射 (Volume integration)
└── 降噪 (OptiX Denoiser / OIDN)

Cycles 在 RTX 4090 上的基准性能(BMW 27 场景):

  • CPU 渲染(Ryzen 7950X):约 45 秒
  • GPU CUDA 渲染(RTX 4090):约 9 秒
  • GPU OptiX 渲染(RTX 4090):约 5 秒

五、光线追踪在无人机仿真中的工程实践

5.1 传感器仿真中的光线追踪需求

无人机仿真对视觉真实感的要求远高于游戏渲染。光线追踪传感器仿真需要处理的场景包括:

相机传感器仿真

  • 镜头光学效应:畸变、色差、渐晕——可通过光线追踪模拟真实镜头群的光路
  • 多光谱渲染:可见光(RGB)、近红外(NIR)、长波红外(LWIR)各波段有独立的光学特性
  • 曝光与噪声:基于物理的传感器噪声模型(读出噪声、散粒噪声、固定模式噪声)

LiDAR 仿真

  • 激光脉冲的发射→反射→接收过程本质就是光线追踪
  • 多回波检测(Multiple Returns)需要追踪光线穿过半透明物体
  • 大气衰减建模(雾、雨、雪条件下的激光衰减)

雷达仿真

  • 射线发射后的多次反射(多路径效应)
  • 雷达散射截面(RCS)与材质属性相关
  • Doppler 频移模拟

5.2 Gazebo 中的光线追踪集成

Gazebo Sim(原 Ignition Gazebo)使用 OGRE 2 作为渲染引擎,其渲染管线主要基于光栅化。然而,新一代传感器件(如高分辨率 RGB 相机、LiDAR)的精确仿真正在向光线追踪迁移:

现有方案

  • Gazebo 的 GpuRays 传感器通过 GPU 加速计算深度和颜色
  • gpu_lidar 插件的射线模拟是在着色器中完成的光栅化近似

光线追踪增强方案

将光线追踪引入 Gazebo 传感器仿真的可行架构:

1
2
3
4
仿真场景 → 渲染数据导出 → 外部光线追踪引擎 → 传感器数据
├── RTX Direct Illumination (RTXDI)
├── 物理材质系统 (MDL)
└── 特定波段光谱渲染

5.3 合成数据生成中的光线追踪

已有文章涉及基于 Blender Cycles(光线追踪渲染器)的无人机检测数据集生成。在此基础上的进一步优化方向:

域随机化与光线追踪的结合

域随机化(Domain Randomization)是 Sim-to-Real 迁移的关键技术。在光线追踪渲染场景中,可以在物理正确的框架内随机化:

  • 光源随机化:基于物理的 HDRI 环境光混合(通过 Blender 的 Environment Texture 节点)
  • 材质随机化:BSDF 参数(粗糙度、金属度、IOR)在物理约束范围内采样
  • 相机参数随机化:焦距、光圈(直接影响景深效果的物理参数)
1
2
3
4
5
6
7
8
9
10
11
for each sample in dataset:
# 光线追踪参数随机化
env_map = random_hdri(sun_elevation, cloud_cover)
drone_material = random_bsdf(roughness_range, metallic_range)
camera_params = random_camera(focal_length, aperture)

# Blender Cycles 渲染
render = cycles_render(scene, camera_params, samples=512)
annotations = generate_annotations(scene)

save(render, annotations, labels)

路径追踪采样的质量敏感度

合成数据生成中的每像素采样数(SPP)选择需要在渲染质量和渲染时间之间权衡:

应用场景 SPP 范围 渲染时间 (1080p, RTX 4090) 噪声水平
快速预训练 64-128 0.5-1.5 秒 中等
精细训练 256-512 2-5 秒
高保真验证 1024+ 8-15 秒 极低

值得注意的是,研究表明神经网络在噪点数据上训练也可以达到良好的域迁移效果——这表明合成数据生成中不一定要追求完美无噪的渲染结果。

六、前沿趋势与技术展望

6.1 神经渲染与光线追踪的融合

神经辐射场(NeRF)和 3D Gaussian Splatting 代表了与物理渲染路径不同的另一条技术路线。两者的融合正在催生新的研究方向:

神经重建+光线追踪:从多视角图像重建场景的隐式表示后,用传统光线追踪对新视点进行渲染,结合了神经表示的几何灵活性和物理渲染的光学精度。

可微分光线追踪:通过对光线传播过程进行微分,可以直接优化场景的几何、材质和光照参数,实现逆渲染(Inverse Rendering)——从照片反推出场景的物理属性。

6.2 实时全光线追踪的前景

目前的实时渲染仍是混合渲染的天下,但全光线追踪(Fully Path Traced)的 Demo 已经出现:

  • 《Cyberpunk 2077》光线追踪超速模式:在 RTX 4090 上实现了每帧 1-2 SPP 的全路径追踪 + DLSS 3.5 Ray Reconstruction
  • 《Portal with RTX》:基于 RTX Remix 的完全路径追踪重制
  • 《Minecraft RTX》:路径追踪 + 时域累积,每像素约 4 SPP

全光线追踪面临的挑战:

  1. 去噪算法的延迟:时域累积会引入残影(Ghosting)和模糊
  2. 漫反射间接光照的收敛:需要大量采样才能收敛
  3. 动态场景的时域稳定性:光源/物体的移动破坏时域累积的一致性

6.3 扩展现实与物理仿真

光线追踪在扩展现实(XR)和物理仿真领域的应用正在从传统渲染扩展到以下方向:

  • 毫米波虚拟天线阵列波束追踪:通信仿真中的光线追踪
  • 声学光线追踪:声场仿真,用于无人机噪声预测
  • 概率光线传播:电磁散射的统计建模

七、总结

光线追踪技术经历四十余年的发展,从 Whitted 1980 年的开创性工作到今天的实时路径追踪,经历了完整的学术→离线→实时的演进路径。核心要点总结如下:

理论层面

  • 渲染方程是光线追踪的数学基础,路径积分形式为蒙特卡洛求解提供了框架
  • 路径追踪是渲染方程的第一个通用无偏求解器,以 O(1/N)O(1/\sqrt{N}) 速率收敛
  • 重要性采样、MIS 是降低方差的关键技术

工程层面

  • BVH 是主流加速结构,SAH 是构建最优 BVH 的指导准则
  • RT Core 硬件加速将光线追踪从离线推向了实时
  • 时域累积与空间去噪的结合使 1-4 SPP 的渲染结果可用

应用层面

  • 混合渲染是当前实时渲染的主流架构
  • 光线追踪在传感器仿真中提供物理精确的视觉结果
  • 合成数据生成中需要在渲染质量和速度间做合理权衡

参考文献

  1. Kajiya, J. T. (1986). The rendering equation. ACM SIGGRAPH Computer Graphics, 20(4), 143-150. DOI: 10.1145/15886.15902
  2. Whitted, T. (1980). An improved illumination model for shaded display. Communications of the ACM, 23(6), 343-349. DOI: 10.1145/358876.358882
  3. Veach, E., & Guibas, L. J. (1995). Optimally combining sampling techniques for Monte Carlo rendering. ACM SIGGRAPH, 419-428. DOI: 10.1145/218380.218498
  4. Jensen, H. W. (1996). Global illumination using photon maps. Eurographics Workshop on Rendering, 21-30.
  5. Lafortune, E. P., & Willems, Y. D. (1993). Bi-directional path tracing. Proceedings of Compugraphics, 145-153.
  6. Cook, R. L., & Torrance, K. E. (1982). A reflectance model for computer graphics. ACM Transactions on Graphics, 1(1), 7-24. DOI: 10.1145/357290.357293
  7. Möller, T., & Trumbore, B. (1997). Fast, minimum storage ray-triangle intersection. Journal of Graphics Tools, 2(1), 21-28. DOI: 10.1080/10867651.1997.10487468
  8. Schlick, C. (1994). An inexpensive BRDF model for physically-based rendering. Computer Graphics Forum, 13(3), 233-246. DOI: 10.1111/1467-8659.1330233
  9. Karis, B. (2013). Real shading in Unreal Engine 4. SIGGRAPH Course: Physically Based Shading in Theory and Practice.
  10. NVIDIA. (2022). NVIDIA RTX Path Tracing Technical Overview. NVIDIA Developer Documentation.