MineGraph Docs Help

光线追踪相关误区

光线追踪与着色器

有不少人喜欢强行区分两者,而事实上他们从未熟知真正的概念:

  • 光线追踪:一种应用广泛的算法 ,在下方有更多细节说明;

  • 着色器:承载算法的载体

两者包含而非对立,只是一些人喜欢将后者贴上 非光线追踪 的标签,概念理解错误而不自知。

官方光线追踪

下称 BERTX

有一部分玩家会对 微软英伟达 合作出品的 BERTX 持过于乐观的态度,而对民间开发者编写的 Java 版光追光影缺乏关注甚至认为它们并非光追而抱有抵触态度

经部分破译微软宣传的渲染龙引擎,已知 BERTX 调用了 37 个着色器,均属于 计算着色器 ,同时,BERTX 在光照处理中没有采用任何光栅化流程。

从结果分析看,我们认为 BERTX 依仗的基础优于软件光追光影(采用完全光线追踪渲染方案,使用 DirectX RayTracing API ),这也是大多数乐观玩家的理由。但由于该光影编写组的水平问题代码中含有非常多不合理的甚至自相矛盾的部分 。这也导致部分渲染效果不合理 ,整体呈现的画风诡异 ,也不被大部分光影爱好者认同。
对此,国外已推出基于官方版修改的第三方社区 BetterRTX 光影。感兴趣的玩家可在 这篇文章 了解详情。

光影的喜好由个人决定 ,我们不在此强求别人改变观点,但是希望大家对待不同光影有一个正确的态度。

延迟渲染

顾名思义,在延迟渲染中,渲染将延迟至所有物体绘制到屏幕空间的缓冲中。在最后逐光源着色,计算阴影,生成最终图像。

伪光追

伪光追 或称 假光追拟光追类光追 ,是光线追踪相关误区的重灾区

  • 本文仅解释 Minecraft 中的 伪光追 说法,其他游戏尚对其有不同解释。

  • 是对在国内光影界流行的涉及光线追踪技术所谓真伪问题的多种错误说法的总称。

  • 该名词在图形学术语中尚无明确的定义与解释

  • 多数认为 伪光追 存在的玩家认为该词代指下方其中一种说法,但至今未有任何成果能够佐证该说法。

伪光追 的来源:

  • 该概念其最早用于国内某技术成果的包装宣传 ,遂成一种没有实际意义 ,但具有宣传效果的营销手段。

  • 于 2019 年左右被一些名气较高的 UP 错误宣传,流毒无穷,至今未消。

首先我们应明确一个概念: 伪光追不存在,也不能用来指代光线追踪以外的所有渲染技术 。我们调查了所有原因,然而它们的本质都是错误应用二极管思维, 强行将原本有其它命名的技术归类为伪光追

以下是我们记载的各种各样将技术称为伪光追原因:

将使用光栅化效果称为伪光追

光线追踪主要用于实现 全局光照 效果(包括体积光、焦散等)。
使用光栅化实现光照本质上是为了避开求交算法昂贵的开销(特别是早期 GPU 性能不够强),使用数学方法拟合其部分效果并叠加。
也可以说, 光栅化实现的光照效果在流程上和光线追踪并不沾边 ,只是在数学上的近似 (我希望以后没有贵物会挤出来一个似光追)。

然而由于各种光栅化技术对光照的贡献不好界定,比如我们通常将天空颜色乘以一个小值来模拟天空环境光照,并将其乘到场景上:

vec3 color = albedo.rgb * skyColor * 0.01;

然而它和后处理中提升画面亮度的代码没有本质区别:

vec3 finalColor = color * 2.0;

它们本质上都是画面颜色乘以一个值,因此将前者称为伪光追是极其鲁莽的

这个例子还可以说明,光栅化不仅仅是为了拟合光线追踪,它还能胜任其他处理工作,所以更不可以将光栅化直接称为伪光追

用真/假区分软/硬件光线追踪

这种说法一般认为 BERTX 才是真光追。

如之前内容所述, 光线追踪由是否采用光线求交算法决定,与所用 GPU 无关,甚至与是否使用 GPU 无关,区别的只是性能表现。

  • 基岩版限制 GPU 型号的原因更多与市场有关,在游戏中主要的原因则为没有加速核心的显卡难以流畅运行游戏

  • 所谓硬件光线追踪是指使用硬件内的相应核心对光线求交过程进行加速 ,而非独有算法和技术 ,因此该说法是错误的。

将使用代码模拟光线追踪认定为伪光追

光线追踪最初的目的就是在计算机上模拟光路的传播
无论是使用了光追加速核心的硬件实时光线追踪技术,还是最初应用于电影的离线渲染技术,都依靠着色器完成。

直接将代码模拟光线追踪定为伪光追,这种说法自相矛盾

将贴图光追视为为伪光追

这里所谓的 贴图光追 在一部分笃定者眼里指的是 Java 版的光线追踪光影所产生的光照;另一部分笃定者则认为 PBR 资源包让光影在纹理表面产生了真实的光线交互,创造出不同的质感,所以这些资源包产生了贴图光追。

  • PBR 无论在光栅化流程还是光线追踪流程中,都和前文一样,是数学上对物理现象的近似

    • 唯一不同的是,纯光栅化流程中,我们忽略了那些需要积分的部分,也就是说无法反射场景 (除了用数学描述的大气和云)。

    • 而光线追踪流程中,光线追踪这个过程本身充当了蒙特卡洛积分的部分,让表面得以反射场景。

  • 而 PBR 资源包只是定义了纹理的材质属性,从而让支持 PBR 的光影允许将这些参数导入渲染方程

    • 事实上,没有 PBR 资源包时,一部分支持 PBR 的光影将表面材质默认视为完全粗糙的非金属。

    • 另一部分则硬编码了一部分方块的材质属性(如金块、铁块等)。

真正的“贴图光追”见 下文

认为构建 Minecraft 所用的语言无法实现光线追踪

MC 使用的图形渲染库为 OpenGL JE 、OpenGL ES BE(安卓/iOS) 、DirectX BE(Windows/XBox) ,与构建游戏本体时使用的编程语言无关。

将一些 Java 版光影提供的 RTX 预设 视为拟光追

这些类似的预设只是尝试模拟了基岩版 BERTX 的色彩风格 。而此说法可能造成歧义,使用户认为该光影使用了 RTX 技术。

我们也不提倡一些宣传品的标题直接使用此语句作为宣传语,而不进行任何解释。

将基岩版最新引入的延迟渲染技术视为伪光追

参考 前文 ,若将其视为伪光追 ,则所有光影无一幸免。

将屏幕空间路径跟踪视为伪光追

下称 SSPT

SSPT 是受限于 屏幕空间 ,效果不及其它 世界空间 光线追踪解决方案,有说法由此认为 SSPT 并非光线追踪技术。

然而,SSPT 的目的是进行廉价且高质量的屏幕空间渲染,包括全局光照和反射,其是使用了求交算法的正统光线追踪。

贴图光追(预烘焙)

该说法来源已不可考, 笃信者的理由是 Java 版光追光影不使用也不能使用光追单元,因此只能是利用贴图进行渲染。

  • 然而和前文一样,是否为光线追踪和是否使用光追单元没有关系 ,所谓光追单元只能加速求交 ,而不是独占算法 。核显能运行光影也并不能推论出该光影是否含有光追算法。

  • 所谓贴图光追在渲染技术上的真正学名应为贴图光 ,更准确地说是预烘焙。它能够将事先渲染好的场景以纹理形式“贴”到场景中,被广泛应用于一些场景固定的游戏。

    • 但在地形随机、场景复杂的 Minecraft 中,这种技术的效果并不理想,也从未被光影或资源包开发者使用过。

区分光追和光栅

  • 如果你身边有一些研究 Minecraft 图形的(最好是自己做过光影/纹理的)朋友,你可以拿着光影包名称去询问他们。

  • 如果你身边没有这类朋友,你可以直接在社区提问 ,了解的人自然会来解答。

  • 若想通过自己的能力检测,从光的粒子性质入手是一个很好的检验手段。

    • 间接光照:

      • 观察光影是否有小孔成像;

      • 研究光线是否存在二次以上的反弹

      • 能否投射出准确的遮蔽阴影;

      • 观察方块光源能否投射出清晰的阴影(虽然方块光源在一定程度上属于直接光照,但是在 Minecraft 中,大多数时候都将其当作间接光照处理,有例外是 Rethinking Voxels)。

    • 直接光照:

      • 一些光影引入了光线追踪平行光(太阳/月亮光照),你可以通过观察屏幕边缘物体接触处的平行光阴影 (为了排除屏幕空间阴影和软阴影(半影)的干扰)是否锐利来判断。

    • (世界空间)反射:

      • 观察能否反射镜头之外和被遮挡的物体;

        • 对于 Java 版,实体和未编码进体素的物体无法反射;

        • 一些光影存在反射捕获功能,即可以将你看到过的场景记录下来并将其作为环境贴图进行反射。

          • 对于这类光影,你可以尝试重载光影来刷新缓存,或在场景远处建一面镜墙,再在近处建立一面镜墙,然后观察它们反射的内容是否随着反射面位置不同而变化。

但注意,由于当前技术水平限制,我们所谓的光线追踪技术并不能模拟出光的波动性质 (例如不能模拟出双缝干涉现象)。

你可以在 这里 查找一些我们目前收集到的光影的光线追踪信息。

那些年被误会的光影

时至今日,有一些光影和光线追踪相关的趣事,在此记录:

  • Sildur's Vibrant Shaders - 《田园光追级光影》

    • 该光影由国外作者 Sildur 编写,效果不输于很多高端光影,帧数十分舒服,属于传统光栅光影。

    • 但在某论坛中被打上了 田园光追级光影 的标签,理由是 体验达到了光追光影的水准 ,随着论坛关停,这篇帖子也终于沉入互联网的大海。

  • BSL - 《(伪)光追光影》

    • 该光影作者为 CaptTatsu ,同样也属于传统光影

    • 但在B站某宣传视频中被强行扣上 最棒的室内伪光追光影 的帽子,在评论区快变成光追普及区后, 去掉了

  • BSL_Edit_Pasquale - 《伪光追光影》

    • BSL 早期的一个魔改版本,作者 Pasquale

    • 2019 年 7 月 13 日,Pasquale 在推特宣布已获取到 BSL 作者的魔改授权

    • 同年 9 月 23 日,Pasquale 在自己的 Discord 上正式发布该光影。

    • 从发布至今,这位作者都并未提及自己的光影与光线追踪技术有任何关联 。而国外也并不流行伪光追这种说法。

  • SEUS_PTGI_ E13

    • 这个光影出现的原因大部分人都不清楚,它并不存在于作者发布的任何帖子上,但又好像有着一定的信服力。

    • 其实它来自一个国外翻版网站(现已被关闭)。

    • 最明显的标志是:这个网站出来的文件名往往是以下划线 _ 为分隔,而 Patreon 获取到的都是空格分隔。

    • 据分析,它应该是 E11 版本的轻度修改,并未有很大变动。

  • Complementary Shaders

    • 由 BSL 魔改而来,属于中规中矩的一个生存光影,在 CurseForge 上有发布。

    • 然而在某论坛的搬运帖里再次被打上光追标签,原因在于:该光影宣传时提到它的场景色调中包含模仿 BERTX 的预设,被误以为引入了光线追踪渲染技术。

    • 现该帖子已修改内容,避免了进一步的误导。

Last modified: 23 August 2024