Skip to content

Extra FX 标志

Extra FX 是 Custom Shaders Patch 的另一个扩展,基于场景的深度和法线信息添加了大量屏幕空间效果,如局部反射、SSAO、反弹光、体积车头灯或时间抗锯齿。为了使整个系统工作,它需要第二次渲染场景(在主渲染通道之前),以准备法线缓冲区和额外数据,如运动缓冲区(用于运动模糊)或反射信息(用于 SSLR)。

关于非透明透明度和车窗

这些效果的实现方式是,为了处理车窗和类似表面,几乎所有这些透明表面都会被渲染到 Extra FX 缓冲区中,因此它们看起来是不透明的。一个例外是从内侧看到的车窗,默认情况下它们不会在 Extra FX 缓冲区中渲染,甚至会被排除在主渲染通道之外,只在 Extra FX 效果应用后才绘制。这样,它们会覆盖所有效果,但对于内部视角来说,这通常是更好的行为。

因此,Extra FX 不会影响玻璃后面的任何东西,车窗的反射可能看起来有些奇怪,但请注意侧后视镜如何在侧窗中反射,同时侧窗又在侧后视镜中反射。

现在回到正题。有时你可能想覆盖此行为。一些弹出式仪表在挡风玻璃上被错误地运动模糊,或者某些车灯玻璃确实需要在其下面有局部反射等等。和往常一样,你可以通过扩展配置来实现:

ini
[EXTRA_FX]
DELAYED_RENDER = ...  ; 所有参数都是网格列表
SKIP_GBUFFER = ...
MASK_GBUFFER = ...
BLEND_GBUFFER = ...
AUTOFIX = 1   ; 1 是默认值

注意

你需要非常小心这些选项。就像该领域的大多数东西一样,这里的一切都是一堆权宜之计。不同的情况可能需要不同的解决方案。

DELAYED_RENDER

简单地从 Extra FX 中跳过网格,并在 Extra FX 应用后绘制它。适用于车辆仪表板挡风玻璃上方的弹出式仪表等。

请注意,由于这些网格是单独渲染的,它们不会获得与车辆相同的照明调整。内部反射的遮罩也不会作用于它们。而且在启用 TAA 时,即使设置中启用了 MSAA,它们也不会获得 MSAA。所以,对于大多数情况来说,这不是一个好的选择。

SKIP_GBUFFER

从 Extra FX 中跳过网格,但仍像往常一样在主渲染通道中渲染它。对于大多数情况下几乎看不见的东西可能效果不错,比如仪表板仪表上的玻璃(而且该玻璃仍然会正确地进行内部反射遮罩)。

但是,如果跳过的网格不是那么透明,可能看起来很糟糕:

注意玻璃后面的反射看起来好像在玻璃前面。

MASK_GBUFFER

新添加且仍有些实验性的选项,但我认为它应该适用于大多数 SKIP_GBUFFER 失败的情况。

它不是完全跳过网格,而是仍然在 Extra FX 缓冲区中渲染,但以完全不同的方式,降低 SSLR 的反射以考虑到该网格。它仍然会在 SSAO 等效果中产生伪影,但总的来说,与 SSLR 相比,在车灯玻璃之类的情况下这些伪影要不太明显得多。

BLEND_GBUFFER

用于仅应略微更改某些属性(如反射强度)而不改变底层表面形状的覆盖层。如果贴纸需要与某些平滑渐变混合,这很有用。

AUTOFIX

为这些标志添加一些自动猜测,例如标记赛道的凹槽。

关于运动模糊和 TAA

这些也有一些问题,以及调整行为的选项。

ini
[EXTRA_FX]
ROTATING_FILTER = ...  ; 所有参数也是网格列表
MOVING_FILTER = ...
GLASS_FILTER = ...

ROTATING_FILTER

将节点标记为旋转,这样在进行运动模糊和 TAA 时会忽略旋转。不需要将其添加到指针之类的东西上,但如果你有像快速旋转的风扇看起来有故障的东西,这就是解决方案。车轮默认被添加到此处。

为什么需要这个?

要做运动模糊,着色器需要知道像素自上一帧以来移动的方向(和速度)。想象一个旋转车轮的区域:

上一帧在 A 点,现在在 B 点,但简单的减法给着色器一个完全错误的运动方向!所以如果要对这样的东西进行模糊处理,车轮看起来会非常不正常,同时向内和向外泄漏。我还没有找到大厂是如何处理的(一种方法可能是保留倒数第二帧并进行一些巧妙的曲线插值,但运动模糊着色器本身就已经非常昂贵了),至少完全忽略旋转可以防止它看起来疯狂。

MOVING_FILTER

最近为 TAA 添加的一项改进是现在会比较对象以减少残影。默认情况下 Custom Shaders Patch 将整辆车标记为移动实体,但如果你想减少模拟仪表的残影,请在此处列出它们,它们会被标记为单独移动的内容。对于车辆,默认值是 ARROW_?, STEER_?, SHIFT_?

GLASS_FILTER

TAA 的另一个选项,用于将表面切换到快速响应模式。TAA 会减少对前帧的关注,从而提高反应速度,代价是可能增加锯齿。适用于数字仪表(上面的玻璃或后面的表面)、导航屏幕或某些车窗,如果相机移动导致车窗后面的内容产生太多残影。

你可以使用 Extra FX 调试应用中的调试模板视图来检查每个网格被标记为什么。亮紫色区域是快速响应的。

关于半透明草地 FX

默认情况下,Grass FX 的程序化草地不会在 G-buffer 中渲染,从而将时间几乎减半。在大多数低草和哑光表面的赛道上,这完全没问题,但在一些高草或后面有反射表面(如水面)的赛道上,草地看起来会出现故障和透明。要修复,请使用:

ini
[EXTRA_FX]
FORCE_GRASSFX_GBUFFER_PASS = 1

Extra FX 设置中也有一个选项可以为所有赛道启用该通道。

引用来源