PascalGilcher的路径追踪ReShade问答

导读 PascalGilcher,也以他的用户名MartyMcFly闻名,可以被认为是最著名的ReShade模组制作者,这主要归功于他突破性的SSRTGI(屏幕空间光线追踪

PascalGilcher,也以他的用户名MartyMcFly闻名,可以被认为是最著名的ReShade模组制作者,这主要归功于他突破性的SSRTGI(屏幕空间光线追踪全局照明)着色器。自2019年5月首次亮相以来,SSRTGI一直是ReShade预设和图形增强包的主要内容,甚至在Wccftech上也经常对其进行介绍。它变得如此普遍,甚至NVIDIA也将光线追踪着色器的一个版本添加到其GeForceExperienceFreestyle后处理效果套件中。

然而,2023年图形渲染领域的新流行词是路径追踪。这是从环境光遮挡、阴影或反射等选择效果的有限光线追踪到几乎完全放弃光栅化效果以支持路径追踪管道的演变的下一步。今年4月,PC游戏玩家通过《赛博朋克2077Overdrive模式》预览首次体验到了这项技术,该技术立即确立了视频游戏新图形标准的地位。

缺点是路径跟踪对任何硬件来说都是极其繁重的。只有最新的GeForceRTX40系列显卡才能通过DLSS2(超分辨率)和DLSS3(帧生成)的组合轻松运行《赛博朋克2077》Overdrive模式。

这使得Pascal推出的新的正在开发的路径追踪ReShade插件更加令人惊讶,因为它无法利用DLSS,甚至无法利用GeForceRTXGPU中嵌入的RT核心。即便如此,帕斯卡坚信性能会比基于常规三角形的方法更好。

我与他进行了一次有趣的长时间交谈,讨论了他的路径追踪方法、向Patreon订阅者发布该方法的预计时间,以及他的插件如何替换或注入许多其他效果。跳过视频以阅读完整编辑的文字记录。

首先,我知道您与NVIDIA保持联系-他们不久前甚至在GeForceExperience的Freestyle中实现了您的RTGI。你和他们谈过这件事了吗?

当然,他们会对它感兴趣,但由于这是一个持续的事情,我不确定我是否真的可以谈论它。所以我们只能说我对这种可能性感兴趣。

我知道您已经为此工作了几年,对吧?

或多或少。当ReShadeAPI出现时,它允许您修改游戏调用,这意味着无论游戏尝试渲染什么,它都会将其传达给ReShade,ReShade现在有一个界面,显示“好吧,游戏想要做这个事情”。你对此有什么要说的吗?

这样,您就可以根据游戏要执行的操作来设计执行任何类型任务的插件。假设游戏试图呈现特定的效果。然后你可以说不,你不会那样渲染。例如,您可以阻止渲染游戏中的某种效果或渲染某个对象。在ReShadeAPI正式发布之前我就开始研究这个问题了。但我最近又把它捡起来了。

是否有任何特殊原因让您再次拿起它,或者它只是您的工作量中安排的?

起初我对此并没有太多经验,显然因为它是新的。总体而言,我对C++也没有太多经验,同时我还发布了另外两个附加组件来完成其他事情。我现在已经好多了。我最近尝试做一些事情,我说“好吧,这个附加组件可以做到这一点”。所以我尝试用新东西更新它,但这完全破坏了它。所以我说‘好吧,那很糟糕。我想我需要再看一下”。

然后我回头一看,原来阻碍我进一步进步的很多问题都变得非常明显了。这就像你正在看自己六年级的考试,回想起来你会意识到它是多么容易。所以,我看着它并说我现在可以做得更好。我一直想再次拿起它,因为这是一个非常好的概念,所以我重新开始,现在我已经再次致力于它,我相信现在已经两个月了,试图延续所有功能。

据我了解您的工作,它遵循基于体素的方法。DigitalFoundry将其比作Minecraft的SEUS路径追踪。您的评估正确吗?

是和不是。我想你可以称之为体素。基本上,这只是3D像素的一个词。我的做法是,它存储数据并将其四舍五入到游戏世界中最近的立方体,但它不会存储所有数据。NVIDIA有一个关于光线追踪环境光遮挡的演示,您可以实际查找,名为“空间散列”。基本上,这意味着每当你在游戏世界中看到某些东西时,它都会尝试找到它所在的最近的立方体,并将其输入到无法容纳所有立方体的数据结构中。这就像您试图将100名租户安置在一座只能容纳大约10人的房子里。

因此,我实际上不需要存储整个空间。例如,在像《我的世界》这样的游戏中,您将拥有包含空气的每个体素。从技术上讲它没有被使用,但它仍然消耗内存,这意味着存储所有数据将非常消耗内存。如果我要存储该基础设施所使用的所有体素,我将消耗40-50GB的VRAM,大约是顶级GPU的两倍。我使用的称为稀疏存储模型,这意味着我不会存储每个节点,因为我们只存储实际存在的节点。大约占可能存在的总数的2%或3%。这非常有效,我可以存储比平时多得多的数据。

您说陈旧的数据已被删除。我想这意味着当你在世界中移动时,系统会自动清除旧数据并获取新数据。

正确的。假设您有一个全黑的图像,上面有一些白色像素。如果必须存储所有像素并且图像非常大,则会消耗大量内存。但是,如果您有一个仅包含白色像素的列表,并且不存储黑色像素,那么您只会存储大约五个像素,这是非常少量的数据,而且我可以减少存储量。因此,实际的卷支持高达2000倍或类似的值,但如果我要存储它,它将比RTX4090消耗更多的VRAM。事实上,我得到了300-400MB的内存。