光线追踪,路径追踪,光线步进,光线投射

光线追踪(Ray Tracing)应该是最基础的,核心是发射光线检测交点,模拟反射折射。但传统方法可能只处理镜面效果,而真实世界还有漫反射,这时候路径追踪(Path Tracing)就派上用场了,通过多次采样和蒙特卡洛方法处理复杂光照,尤其是全局光照效果,不过计算量很大。

光线步进(Ray Marching)听起来和光线投射有点像,但主要用于处理隐式表面,比如SDF。它是一步步推进光线检测距离,而不是直接求交,适合烟雾、云层或者程序化生成的场景。而光线投射(Ray Casting)是最简单的,主要用于快速检测视线是否碰撞物体,比如早期的3D游戏或者体积渲染的初始步。

路径追踪是光线追踪的扩展,而光线步进和光线投射是不同用途的技术


1. 光线投影

核心思想:这是最简单、最基础的技术。对于屏幕上的每个像素(更具体地说,从相机/视点出发通过该像素的一条射线),沿着这条射线的方向投射一条光线。

关键操作:找到这条光线与场景中最近的物体的交点。

输出:通常直接使用交点处物体的颜色(或简单纹理)作为该像素的颜色。不考虑光照计算(如阴影、高光)或光线在交点后的行为(反射、折射)。

应用:早期3D游戏(如《德军总部3D》)、体积渲染(如CT/MRI数据可视化的第一步)、简单的视线检测(如判断物体是否可见)。

特点:速度快,实现简单,效果非常基础(类似无光照的线框图填充了颜色)


2. 光线追踪

核心思想:在光线投射的基础上进行扩展。同样从相机发射光线(主光线)并找到第一个交点。

关键操作:在交点处,根据物体的材质属性,模拟光线的后续行为:

  • 反射:生成一条新的反射光线,继续追踪。
  • 折射:生成一条新的折射光线(如果物体透明),继续追踪。
  • 阴影:从交点向光源发射一条阴影光线(或称为“感觉光线”)。如果这条光线在到达光源前被其他物体阻挡,则该交点处于阴影中。

输出:像素颜色是交点处物体自身的颜色(考虑纹理)、直接光照(考虑阴影)以及递归追踪到的反射/折射光线带来的颜色贡献的综合结果。

应用:电影特效、高质量离线渲染、需要精确反射/折射效果的场景。

特点:能生成非常逼真的镜面反射、折射、硬阴影效果。计算量比光线投射大很多(尤其是递归深度深时),通常用于非实时渲染。经典光线追踪通常只精确模拟镜面反射/折射,对漫反射的处理是近似或简化的。


3. 路径追踪

核心思想:这是光线追踪的一种具体实现方法,并且是当前最主流的、能物理正确地模拟全局光照的技术。它基于蒙特卡洛积分。

关键操作:

  • 从相机发射主光线。
  • 找到交点后,不再确定性地计算反射/折射方向。
  • 而是根据交点处材质的双向反射分布函数,随机地选择一个新的光线方向进行追踪(重要性采样)。
  • 这个过程递归进行,直到光线达到最大深度、射出场景或根据俄罗斯轮盘赌终止。
  • 每条路径(从相机出发,经过一系列反弹,最终到达光源或射出场景)对像素颜色的贡献被累积。
  • 对每个像素发射多条路径(采样数),最后取平均值来减少噪声。

输出:像素颜色是所有成功路径贡献的平均值。它能自然产生软阴影、漫反射互光照、焦散等复杂光照效果。

应用:现代电影渲染引擎(如皮克斯的RenderMan、迪士尼的Hyperion)、高端产品可视化、追求物理真实感的离线渲染。

特点:是无偏的蒙特卡洛方法(理论上无限采样收敛到真实解),能处理所有类型的光传输(漫反射、光泽、镜面)。计算量极大,噪声随采样数减少而减少,是离线渲染的黄金标准。路径追踪是解决渲染方程的一种有效且流行的蒙特卡洛方法。


4. 光线步进

核心思想:这是一种不依赖显式几何求交的渲染技术,特别适合渲染隐式定义的表面(如由有符号距离场定义的形状)、体积效果(云、烟、火)和程序化生成的内容。

关键操作:

  • 同样从相机发射光线。
  • 不直接计算光线与物体的精确交点。
  • 沿着光线方向,一步一步地前进。
  • 在每一步的位置,调用一个距离函数(通常是SDF - Signed Distance Field)。这个函数告诉你当前位置到最近物体表面的最短距离。
  • 以这个距离(或更小一点)作为下一步的步长。因为该距离保证了在这个步长范围内不会碰到任何表面。
  • 重复这个过程,直到:

    距离值小于一个很小的阈值(认为已到达表面)。

    步数超过最大值。

    光线累计行进距离超过最大距离。

  • 如果到达表面,则计算该点的光照和着色。

输出:像素颜色可以是到达表面的着色结果,或者是在行进过程中累积的体积效果(如烟雾的颜色、密度)。

应用:Shadertoy上的实时艺术演示、程序化建模和动画、体积效果渲染(云、烟)。

特点:非常灵活,能渲染传统多边形难以表达的复杂形状和体积。效率高度依赖于距离函数的计算速度和步进策略。需要仔细控制步长和精度以避免走过头(漏掉表面)或效率过低。通常不直接处理复杂的全局光照(如多次漫反射反弹),但可以结合环境光遮蔽或其他近似技术。


总结与关系:

光线投射是基础:发射光线,找最近交点,简单着色。

光线追踪是扩展:在交点处模拟光线的物理行为(反射、折射、阴影),追求更真实的效果(尤其是镜面效果)。

路径追踪是实现光线追踪的一种具体且强大的方法:使用随机采样和蒙特卡洛积分来物理正确地计算所有类型的光传输(包括困难的漫反射全局光照),是离线渲染的基石。

光线步进是一种替代的求交/渲染技术:通过逐步前进和距离函数来渲染隐式表面和体积,不依赖传统几何求交。它有时会与光线追踪/路径追踪结合使用(例如,在体积内部使用光线步进采样,在表面使用路径追踪),但其核心的步进机制是独特的。

特性光线投射光线追踪路径追踪光线步进 
核心目标简单可见性/基本着色精确反射/折射/阴影物理正确的全局光照渲染隐式表面/体积 
求交方式直接几何求交(最近)直接几何求交(最近)直接几何求交(最近)逐步逼近 (距离函数引导) 
光照模型无光照或极简直接光照+镜面反射/折射+阴影所有光传输 (直接+间接, 漫+镜)通常简单或自定义 (体积累积) 
阴影无硬阴影软阴影 (自然产生)可模拟 (如Voxel AO) 
反射/折射无有 (确定性)有 (随机采样)可能模拟 (复杂) 
全局光照无有限/近似 (通常无漫反弹)有 (核心能力)通常无/近似 (如AO) 
计算成本低中高极高 (大量采样)中高 (依赖步数和SDF复杂度) 
主要应用简单3D, 体积初探电影特效 (镜面主导)电影特效, 产品渲染 (物理真实)程序化内容, 体积效果, 艺术Demo 
实时性容易困难 (现代硬件逐步支持)非常困难 (离线为主)可能 (精心优化/简单场景) 
物理基础弱部分强 (基于渲染方程)弱 (但SDF本身有数学基础) 


 


版权声明:本文为CSDN博主「@Dinosaur」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2301_81589795/article/details/149356007