光线追踪、光线投射、光线行进和路径追踪之间有什么区别?
What is the difference between ray tracing, ray casting, ray marching and path tracing?
据我所知,标题中提到的所有技术都是看起来非常相似的渲染算法。所有基于光线的技术似乎都围绕着通过图像的每个像素投射光线,这些像素应该代表真实光线。这允许渲染非常逼真的图像。
事实上I am making a simple program that renders such images myself based on Raytracing in one Weekend。
现在的问题是我想以某种方式命名这个程序。我使用术语“光线追踪器”,因为这是书中使用的术语。
不过我听过很多不同的术语,我很想知道光线追踪、光线匹配、光线投射、路径追踪和可能的任何其他常见 ray-related 算法之间到底有什么区别。我能够在网上找到这些技术的一些比较,但是他们都只比较了其中的两个并且一些定义重叠,所以我想问一下关于所有四种技术的问题。
我对此的理解是:
光线投射
使用光栅图像来保存场景并且通常在第一次命中时停止(没有反射和光线分裂)并且不一定在每个像素的基础上投射光线(通常是每行或每列屏幕)。这个的 3D 版本称为 Voxel space ray cast 但是地图不是体素 space 而是使用 2 个光栅图像 RGB,Height
。
有关详细信息,请参阅:
(返回)射线追踪
这通常遵循光的物理特性,因此光线在反射和折射中分裂,我们通常会在命中一定次数后停止。场景用 BR 网格或分析方程或两者表示。
有关详细信息,请参阅:
- GLSL 3D Mesh back raytracer
- GLSL 3D Volumetric back raytracer
back
意味着我们将光线从相机投射到场景(以每个像素为基础)而不是从光源投射到任何地方......以错误的照明为代价大大加快了这个过程(但这可以通过在此之上的其他方法来补救)...
其他热量我不太确定,因为我不使用这些技术(至少有意):
路径追踪
是使用 Monte Carlo(随机)方法避免光线追踪中递归光线分裂的优化技术。所以它实际上并没有分割光线,而是在 2 个选项之间随机选择(类似于现实世界中光子的行为方式),然后将更多渲染帧混合在一起。
射线行进
是一种优化技术,通过使用 SDF(带符号的距离函数)来确定沿射线的安全前进,因此它不会撞到任何东西,从而加速射线追踪。但仅限于分析场景。
据我所知,标题中提到的所有技术都是看起来非常相似的渲染算法。所有基于光线的技术似乎都围绕着通过图像的每个像素投射光线,这些像素应该代表真实光线。这允许渲染非常逼真的图像。
事实上I am making a simple program that renders such images myself based on Raytracing in one Weekend。
现在的问题是我想以某种方式命名这个程序。我使用术语“光线追踪器”,因为这是书中使用的术语。
不过我听过很多不同的术语,我很想知道光线追踪、光线匹配、光线投射、路径追踪和可能的任何其他常见 ray-related 算法之间到底有什么区别。我能够在网上找到这些技术的一些比较,但是他们都只比较了其中的两个并且一些定义重叠,所以我想问一下关于所有四种技术的问题。
我对此的理解是:
光线投射
使用光栅图像来保存场景并且通常在第一次命中时停止(没有反射和光线分裂)并且不一定在每个像素的基础上投射光线(通常是每行或每列屏幕)。这个的 3D 版本称为 Voxel space ray cast 但是地图不是体素 space 而是使用 2 个光栅图像
RGB,Height
。有关详细信息,请参阅:
(返回)射线追踪
这通常遵循光的物理特性,因此光线在反射和折射中分裂,我们通常会在命中一定次数后停止。场景用 BR 网格或分析方程或两者表示。
有关详细信息,请参阅:
- GLSL 3D Mesh back raytracer
- GLSL 3D Volumetric back raytracer
back
意味着我们将光线从相机投射到场景(以每个像素为基础)而不是从光源投射到任何地方......以错误的照明为代价大大加快了这个过程(但这可以通过在此之上的其他方法来补救)...
其他热量我不太确定,因为我不使用这些技术(至少有意):
路径追踪
是使用 Monte Carlo(随机)方法避免光线追踪中递归光线分裂的优化技术。所以它实际上并没有分割光线,而是在 2 个选项之间随机选择(类似于现实世界中光子的行为方式),然后将更多渲染帧混合在一起。
射线行进
是一种优化技术,通过使用 SDF(带符号的距离函数)来确定沿射线的安全前进,因此它不会撞到任何东西,从而加速射线追踪。但仅限于分析场景。