REST增强版 - ReShade效果着色器切换器

REST增强版 - ReShade效果着色器切换器

增强版《博德之门3》ReShade效果着色器切换器。在特定渲染阶段注入选定的ReShade效果,使其能显示在后续的雾气、后处理和UI之下。支持D3D11和Vulkan、自动场景色彩、DLSS/超分辨率渲染、改进的着色器查找和诊断功能。

[size=5][b]REST Enhanced - ReShade Effect Shader Toggler[/b][/size]

REST EnhancedReShade Effect Shader Toggler (REST) 的扩展版本,正在积极开发中。它旨在让选定的 ReShade 效果在《博德之门 3》渲染管线的特定位置运行,而不仅仅是在 ReShade 常规的帧末阶段执行。

这对于环境光遮蔽、光照以及其他场景空间着色器类效果尤其有用,这些效果应当出现在后续的游戏雾效、后处理和 UI 元素下方,而不是绘制在最终图像之上。

《博德之门 3》一直是我开发和测试 REST Enhanced 的主要环境,同时使用了 Direct3D 11 和 Vulkan

增强版还引入了 Auto Scene Colour(自动场景颜色),它可以自动识别相关的实时场景颜色目标,并处理由 DLSS 等渲染技术引起的分辨率差异。

这意味着 REST 可以将通常渲染在帧末的 ReShade 效果,改为放置在《博德之门 3》渲染管线中更合适的位置。

[b][size=5]安装[/size][/b]

[size=4]要求[/size]

你必须已经为《博德之门 3》安装了启用附加组件支持的 ReShade

REST Enhanced 同时支持:

  • Direct3D 11
  • Vulkan

对于《博德之门 3》,请使用 64 位附加组件:

ReshadeEffectShaderToggler.addon64

[size=4]安装步骤[/size]

  1. 下载 REST Enhanced 发布版本。
  2. 解压 ReshadeEffectShaderToggler.addon6
  3. 将其放置在你的 ReShade 安装所使用的《博德之门 3》可执行文件旁边。
  4. 启动游戏。
  5. 打开 ReShade 叠加层。
  6. 打开 Add-ons 选项卡,确认 REST Enhanced / ReShade Effect Shader Toggler 已加载。
  7. 从 REST 界面配置着色器组。

现有的 REST 配置文件仍然兼容。

REST 将其配置存储在:

ReshadeEffectShaderToggler.ini

先前的配置也会自动保留为:

ReshadeEffectShaderToggler.ini.bak

[b][size=5]主要功能[/size][/b]

[size=4]基于着色器的 ReShade 注入[/size]

REST 允许你标记游戏着色器,并将选定的 ReShade 技术与其关联。

效果不再是在整个游戏帧完成后应用,而是由 REST 在渲染管线中的选定位置执行。

对于《博德之门 3》,这可以让效果在以下后续阶段之前渲染:

  • 雾效
  • 后处理
  • UI 合成
  • 其他游戏渲染阶段

这对于屏幕空间效果特别有用,否则它们会错误地显示在菜单、雾效或界面元素之上。

[size=4]Auto Scene Colour[/size]

Auto Scene Colour 旨在减少寻找可用注入点时所需的手动渲染目标配置量。

REST 会分析所选着色器关联的实时渲染目标,并可以自动确定所选 ReShade 效果所需的场景颜色表面。

它还支持游戏内部渲染分辨率与最终 ReShade/输出分辨率不同的情况。

例如,我测试过的某个《博德之门 3》Vulkan 配置使用:

Scene: 2560x1440
Output: 3840x2160
Format: R11G11B10_FLOAT
Staging: Vulkan image blit
Boundary: post-pass RT transition
Techniques: Lumenite_Kernel -> Lumenite_LSAO

这允许这些效果在选定的场景边界处渲染,同时后续的《博德之门 3》雾效和 UI 渲染仍位于它们之上。

确切的着色器哈希值和合适的注入点可能因游戏版本、渲染器、图形设置和缩放器配置而异。

[size=4]Direct3D 11 和 Vulkan 支持[/size]

《博德之门 3》是我在两种渲染器下的主要测试目标。

[size=4]Direct3D 11[/size]

D3D11 路径已经过大量测试,特别是在以下方面:

  • DLSS
  • 内部分辨率渲染
  • 原生分辨率暂存
  • 多通道 ReShade 效果
  • UI 与雾效分离

[size=4]Vulkan[/size]

Vulkan 实现包括:

  • 原生分辨率图像位块暂存
  • 安全的延迟注入边界
  • 渲染通道和子通道感知
  • 资源状态恢复
  • 安全的着色器预览处理
  • Vulkan 专用的 Auto Scene Colour 诊断

Vulkan 实现刻意避免在不安全的游戏渲染通道边界内注入效果。

[size=4]改进的着色器查找[/size]

REST Enhanced 显著改进了原始的着色器查找工作流程。

功能包括:

  • 响应式着色器查找界面
  • 自适应双列着色器列表
  • 确定性着色器排序
  • 按住上一个 / 下一个导航
  • 上一个已标记 / 下一个已标记
  • 标记 + 上一个 / 标记 + 下一个
  • 复制着色器哈希
  • 重新扫描活动着色器
  • 搜索
  • 全部 / 已标记 / 未标记过滤
  • RGB / R / G / B 预览通道
  • 保留会话 UI 状态
  • 改进的 Vulkan 预览安全性

双列列表遵循与上一个/下一个导航相同的顺序,先沿左列向下移动,然后继续到右列顶部。

直接选择基于实际的着色器哈希,避免显示的着色器与所选着色器之间出现不匹配。

[size=4]组共享[/size]

REST 组可以复制到剪贴板并直接从剪贴板导入。

这使得在用户之间共享可用的《博德之门 3》着色器配置变得更加容易。

导入的组会被刻意创建为:

  • 非活动状态
  • 无快捷键

这可以防止共享配置在导入后立即意外改变你的游戏渲染。

[size=4]配置安全[/size]

REST Enhanced 包含更安全的配置保存系统。

保存时:

  1. 新配置写入临时文件。
  2. 临时配置会被重新解析并验证。
  3. 现有配置保留为备份。
  4. 验证后的配置以原子方式替换当前 INI。

还包含配置版本字段,以便将来兼容和迁移处理。

[size=4]诊断[/size]

Auto Scene Colour 包含详细的诊断信息,旨在让识别合适的渲染目标更加容易。

界面可以报告:

  • 当前着色器哈希
  • 场景目标
  • 场景分辨率
  • 效果分辨率
  • 资源格式
  • 暂存路径
  • Vulkan 注入边界
  • 所选技术顺序
  • 成功渲染次数
  • 最近的候选目标

Recent candidates 视图会将属于同一着色器/目标候选的重复活动分组显示,而不是用重复的 Waiting / Matched / Successful 条目填满诊断信息。

[size=4]稳定性改进[/size]

REST Enhanced 包含原项目之外的许多运行时和并发修复。

在 BG3 压力测试期间发现的一个重要 Vulkan 问题涉及使用不同预览资源快速循环切换着色器目标。

旧的预览图像可能会在仍被已记录或正在执行的 Vulkan 命令引用时被销毁,最终导致:

VK_ERROR_DEVICE_LOST

REST 现在会在替换这些预览资源之前,安全地刷新 ReShade 的即时命令列表并同步 Vulkan 图形队列。

该修复通过使用按住上一个/下一个导航持续循环大型着色器集合进行了压力测试。

[b][size=5]优化[/size][/b]

[size=4]REST Enhanced 还包含许多内部性能改进:[/size]

  • 缓存配置脏状态
  • 缓存并排序 ReShade 技术元数据
  • 减少着色器哈希复制
  • 减少所选技术复制
  • Vulkan 待处理工作快速路径
  • 无待处理工作时跳过延迟的 Vulkan 工作
  • 为保持正确性而保留的渲染通道跟踪

[size=4]要求[/size]

  • 《博德之门 3》
  • 启用附加组件支持的 ReShade
  • 64 位 REST Enhanced 附加组件

[size=4]支持的 BG3 渲染 API:[/size]

  • Direct3D 11
  • Vulkan

REST Enhanced 本身也支持 x86 和 x64 上的 D3D10、D3D11、D3D12 和 Vulkan,不过 《博德之门 3》的 D3D11 和 Vulkan 是我主要的实际测试目标

不需要特定的 ReShade 预设或着色器包。

你选择注入的 ReShade 效果完全由你决定。

[b][size=5]兼容性与注意事项[/size][/b]

REST 不会更改《博德之门 3》的游戏文件。

着色器哈希值和理想注入点可能会因以下因素而变化:

  • 游戏更新
  • 图形 API
  • 分辨率
  • DLSS 或其他缩放器
  • 图形设置
  • 驱动行为
  • ReShade 配置

因此,为某一套配置创建的配置不应自动假定对每位用户都能完全相同地工作。

如果 Auto Scene Colour 无法识别安全兼容的目标,REST 会避免不安全注入,而不是强制执行该操作。

[b][size=5]欢迎反馈与测试[/size][/b]

我正在积极寻求反馈、错误报告和测试,以便继续开发 REST Enhanced。

使用 D3D11 和 Vulkan 的《博德之门 3》一直是我的主要测试环境,但还有许多硬件、游戏设置、分辨率和缩放器的组合是我无法自行测试的。

我尤其希望获得以下方面的反馈:

  • D3D11
  • Vulkan
  • DLSS
  • 不同的输出分辨率
  • 不同的内部渲染分辨率
  • 其他缩放器
  • 大型着色器集合
  • Auto Scene Colour 目标检测
  • 不同的 ReShade 着色器包
  • 异常渲染行为
  • UI 或工作流程改进

正面的报告也有用。

了解某个特定配置工作正常,有助于确定哪些部分已经稳定,以及哪些地方需要更多测试。

报告问题时,请尽可能包含:

  • 《博德之门 3》版本
  • D3D11 或 Vulkan
  • ReShade 版本
  • REST Enhanced 版本
  • GPU
  • 分辨率
  • 缩放器及质量模式
  • Auto Scene Colour 是否启用
  • 相关着色器哈希
  • REST 诊断信息
  • ReShade 日志
  • 如有可能,附带截图或短视频

反馈可以发布在 Nexus Mods、ReShade 论坛帖子或 GitHub 上。

[b][size=5]链接[/size][/b]

[size=4]GitHub 仓库[/size] https://github.com/Pav-Osmolski/ReshadeEffectShaderToggler

[size=4]ReShade 论坛帖子[/size] REST Enhanced - ReShade Effect Shader Toggler with Auto Scene Colour

[b][size=5]致谢[/size][/b]

REST Enhanced 建立在原始 REST / ShaderToggler 贡献者和 ReShade 项目的工作之上。

非常感谢原始作者和贡献者,他们的工作使这个项目成为可能。

当前 REST Enhanced 的开发、文档和测试由 DeViLhoOD(又名 gofftiddums) 完成。