光线追踪误区
误区介绍
- 此部分用于提升大众对光线追踪该技术的理解,同时记录了多种反例并逐一纠正。
- 观看此部分内容,可以避免被
光线追踪这个 噱头迷惑认知、蒙蔽双眼, 在充斥着错误说法的角落里仍能保持清醒。
概念普及
光线追踪
- 从微软在
DirectX 10 渲染引擎中为游戏添加光线追踪的新接口开始,光线追踪技术 正式 进入了游戏。- 光线追踪是一种
来自几何光学的通用技术(它通过 追踪 与光学表面发生交互作用的光线,得到 光线经过路径 的模型)。- 该技术可 提升 游戏画面的
真实性,但同时也 耗费 更多的性能用于光线的模拟计算。- 需要强调的是,这种技术 并不是 在
DirectX 10 时代才诞生的,它被提出、被研究已经 超过30 年了。- 近些年来也常被应用于
电影 3D 特效中。不过应用于电脑游戏中,还是从DirectX 10开始的。- —— 百度百科 · 《光线追踪》
混合光线追踪
也叫 部分光线追踪。
现阶段的
实时光线追踪技术处于 初步开发阶段,而
传统的屏幕空间技术已达到 炉火纯青 的境界。
实际上,大部分 支持实时光线追踪的
3A 游戏都 未采用完全光线追踪的渲染方案,而是 采用
传统 + 光追互补的 思路 构成画面:这样既能有 光追的效果,
也不至于因为 效率太低 导致
帧数难堪。
PTGI的思路也与此类似:将 整个着色器 的 部分渲染方案 用
光线追踪技术替代传统反射,做到 兼顾足够流畅 的
帧率与画质的 提升。
完全光线追踪
与
混合光线追踪技术相反,完全光线追踪技术只使用Compute Shader (计算着色器)渲染画面,抛弃传统的光栅化流程。目前该技术的 主要意义 在于 开创新的
图形开发思路。
误区与解释
Windows10 RTX 光影
有一部分玩家会对
Microsoft与NVIDIA合作出品的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 是怎样工作的 浏览它的技术分析文章:
伪光追
伪光追或称假光追:是在国内光影界流行的涉及光线追踪技术所谓 真伪问题 的多种 错误说法 的总称。
该词语在
图形学术语中 尚无明确的 定义与解释;多数认为 伪光追 存在的玩家认为该词代指下方第一个说法,但 至今未有任何成果表示 该说法所阐述的效果能被实现。
该概念其最早用于国内某技术成果的 包装宣传,遂成一种 没有实际意义 的但 具有宣传效果 的营销手段。
调查表明,持错误观点的玩家可能受以下几种混淆说法及因素影响:
认为可以使用非光追手段实现光线追踪效果:
光线追踪技术可作为实现 全局光照 的一种手段,但全局光照 并非 只有使用光线追踪一类技术才能实现。因此只能够说“非光线追踪技术同样能够实现全局光照”,而非偷换概念;
认为可以用真假区分
软 / 硬件光线追踪:一般解释是
基岩版 RTX才是真光追,其他的都是假的。如之前内容所述,光线追踪 由 是否采用算法 决定,与所用 GPU 无关。
硬件光线追踪的 优势 在于 效率更高,而非 独有技术,因此该说法是错误的;
将使用代码模拟光线追踪定为
伪光追:目前光线追踪技术的实现方法只有一种:通过在 着色器内 编写代码实现。
无论是使用了 光追核心 的
硬件实时光线追踪技术,还是 最初应用于电影 的 离线渲染技术,都依靠了该方法。直接将 代码模拟光线追踪 定为
伪光追,这种说法是完全错误的;
将
丁达尔效应、体积光等光影效果误视作光线追踪算法独有效果:此类特效确实可以采用光线追踪算法获取 更为精确 的渲染效果,但同时会 损失极大一部分 显卡算力,这会导致极其 糟糕 的流畅度体验。
因此大部分光影的此类特效都与光线追踪无关。
- 其他更多的错误说法。
如果你想要从更深层的角度去了解“伪光追”这个说法,可以观看下面的有关视频。
贴图光追
该说法来源已不可考, 笃信者的理由是:
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 光影,被 误以为 含有光线追踪成分。现该帖子已修改内容,避免了进一步的误导。