光线追踪误区

误区介绍

  • 此部分用于提升大众对光线追踪该技术的理解,同时记录了多种反例并逐一纠正。
  • 观看此部分内容,可以避免被 光线追踪 这个 噱头 迷惑认知蒙蔽双眼, 在充斥着错误说法的角落里仍能 保持清醒

概念普及

光线追踪

  • 从微软在 DirectX 10 渲染引擎 中为游戏添加 光线追踪新接口 开始,光线追踪技术 正式 进入了游戏。
  • 光线追踪是一种 来自几何光学的通用技术(它通过 追踪光学表面发生交互作用的光线,得到 光线经过路径模型)。
  • 该技术可 提升 游戏画面的 真实性,但同时也 耗费 更多的 性能 用于光线的 模拟计算
  • 需要强调的是,这种技术 并不是DirectX 10 时代 才诞生的,它被提出、被研究已经 超过 30 年了。
  • 近些年来也常被应用于 电影 3D 特效 中。不过应用于电脑游戏中,还是从 DirectX 10 开始的。
  • —— 百度百科 · 《光线追踪》

混合光线追踪

  • 也叫 部分光线追踪

    • 现阶段的 实时光线追踪技术 处于 初步开发阶段

    • 传统的屏幕空间技术 已达到 炉火纯青 的境界。


  • 实际上,大部分 支持实时光线追踪的 3A 游戏未采用 完全光线追踪 的渲染方案,


  • 而是 采用 传统 + 光追互补思路 构成画面:

    • 这样既能有 光追的效果

    • 也不至于因为 效率太低 导致 帧数 难堪。


  • PTGI 的思路也与此类似:

    • 整个着色器部分渲染方案光线追踪技术代传统反射

    • 做到 兼顾足够流畅帧率画质提升


完全光线追踪

  • 混合光线追踪技术 相反,完全光线追踪技术 只使用 Compute Shader (计算着色器) 渲染画面,抛弃 传统的光栅化 流程。

  • 目前该技术的 主要意义 在于 开创新的 图形开发思路


误区与解释

Windows10 RTX 光影

  • 有一部分玩家会对 MicrosoftNVIDIA 合作出品的 Windows 10 Bedrock 版 RTX 光影过于乐观 的态度,


  • 而对民间开发者编写的 Java Edition 光追光影 缺乏关注甚至认为它们 并非 真光追抱有抵触态度,我们也对此观点进行了纠正。


  • 对于 真伪光追,我们在下方 伪光追 中有说明。对于 RTX 光影,我们有以下研究结果:

    • 经部分破译微软宣传的 渲染龙( Render Dragon )引擎,已知现在的 Windows 10 版 RTX 光影 调用了 37着色器,均属于 Compute Shader (计算着色器)

    • 这也意味着 Windows 10 版 RTX 光影 完全使用RTX 显卡光追核心 计算渲染 所有 的画面效果,没有采用 任何光栅化 流程。

    • 从目前的结果分析来看,我们认为 Win10 版 RTX 光影 使用的 基础技术 优于 软件光追光影(采用完全光线追踪渲染方案)

    • 但由于该光影编写组的 水平问题,代码中含有 非常多不合理 的甚至 自相矛盾 的部分。

    • 这也导致部分渲染 效果不合理,整体呈现的 画风诡异,也不被 大部分 光影爱好者认同。

    • 当然,我们并非在此倡导 捧一踩一 的饭圈文化,而是 阐述 我们 研究的结果


  • 光影的喜好 完全由个人决定,错误的渲染效果 并不意味着 一定是糟糕的,提升 现今着色器的 图形技术 才是我们的追求目标。


  • 如果你想要了解 Win10 版 RTX 光影 更详细的技术情况,可通过该链接 Minecraft RTX 是怎样工作的open in new window 浏览它的技术分析文章:


伪光追

  • 伪光追 或称 假光追

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

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

    • 多数认为 伪光追 存在的玩家认为该词代指下方第一个说法,但 至今未有任何成果表示 该说法所阐述的效果能被实现。


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

    2. 调查表明,持错误观点的玩家可能受以下几种混淆说法及因素影响:

      • 认为可以使用非光追手段实现光线追踪效果:

        • 光线追踪技术 可作为实现 全局光照 的一种手段,但全局光照 并非 只有使用 光线追踪一类技术 才能实现。

        • 因此只能够说“非光线追踪技术同样能够实现全局光照”,而非偷换概念;


      • 认为可以用真假区分 软 / 硬件光线追踪

        • 一般解释是 基岩版 RTX 才是真光追,其他的都是假的。

        • 如之前内容所述,光线追踪是否采用算法 决定,与所用 GPU 无关。

        • 硬件光线追踪的 优势 在于 效率更高,而非 独有技术,因此该说法是错误的;


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

        • 目前光线追踪技术的实现方法只有一种:通过在 着色器内 编写代码实现

        • 无论是使用了 光追核心硬件实时光线追踪技术,还是 最初应用于电影离线渲染技术,都依靠了该方法。

        • 直接将 代码模拟光线追踪 定为 伪光追,这种说法是完全错误的;


      • 丁达尔效应体积光 等光影效果误视作光线追踪算法独有效果:

        • 此类特效确实可以采用光线追踪算法获取 更为精确 的渲染效果,但同时会 损失极大一部分 显卡算力,这会导致极其 糟糕 的流畅度体验。

        • 因此大部分光影的此类特效都与光线追踪无关。


      • 其他更多的错误说法。
  • 如果你想要从更深层的角度去了解“伪光追”这个说法,可以观看下面的有关视频。

点击查看【bilibili】open in new window


贴图光追

  • 该说法来源已不可考, 笃信者的理由是:

    • Java 版光追光影可以不使用 RTX 系列RX6000 系列以上 显卡。

    • 然而,实时光线追踪技术本质算法,与是否使用 硬件光追 没有关系,核显能运行光影也并不能推论出该光影是否含有光追算法。

    • 而且 贴图光追 这个技术根本不存在于 Minecraft

    • 如果你想要知道一个光影有没有光追算法,可以通过下面的方法来检查。


区分是否存在光追

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

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

  • 如果你想通过自己的努力去检测,从 光的性质 入手是一个很好的检验手段。

  • 你可以去观察光影是否有 小孔成像,或是研究光线是否存在 二次以上的反弹

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


Java 版的那些事

  • 累计下来,有几个光影发生了一些有趣的事,在此整理一下:

    • Sildurs Vibrant Shaders - 田园光追级光影

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

      • 但在某论坛中被打上了 田园光追级光影 的标签,理由是 体验达到了光追光影的水准,至今仍存在。


    • BSL - (伪)光追光影

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

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


    • SEUS_PTGI_E13

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

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

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

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


    • Complementary Shaders

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

      • 然而在某论坛的搬运帖里再次被打上 光追 标签,原因在于:该光影宣传时 提到 它的场景色调是 模仿 Windows10 Bedrock 版 RTX 光影,被 误以为 含有光线追踪成分

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