RenoDX 使用指南:DirectX 游戏着色器替换与画面调优引擎
【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx
RenoDX(Renovation Engine for DirectX Games)是一套基于 Reshade add-on 系统的游戏修改工具集,可以替换着色器、注入缓冲区、添加覆盖层、升级交换链与纹理资源,并把用户设置写入磁盘。它适合两类人:想在不改动游戏可执行文件的前提下调整 DirectX 游戏画面的玩家,以及需要在游戏内做实时渲染检查的 mod 开发者。若只使用现成的 addon,你唯一需要额外安装的是 Reshade。
为什么需要这样一个工具
直接改游戏画面通常面临三个障碍:
- 游戏着色器以编译后的字节码形式存在,想调整色调映射、色彩分级等后期环节,必须先反编译再改;
- 直接给游戏 exe 打补丁对版本敏感,游戏一更新就容易失效,每个版本都要重新做兼容;
- 改动过程中缺少手段确认“当前这一帧走到了哪个 pass、目标缓冲是什么格式”,只能靠猜。
RenoDX 的路线是通过 Reshade 的 addon 机制挂钩 DirectX,绕过对 exe 的逐版本修补。项目 README 将这一设计描述为兼容面较广的前提,因为 hook 工作由 Reshade 统一承担。
RenoDX 项目定位与适用人群
| 维度 | 说明 |
|---|---|
| 一句话定位 | 基于 Reshade addon 的 DirectX 游戏修改工具集,含各游戏 mod、devkit 调试工具和独立实用 addon |
| 适合 | 只想改特定游戏画面的玩家:构建或部署对应游戏的 addon 即可 |
| 适合 | mod 作者:转储着色器、热重载迭代、验证 HDR 资源行为 |
| 不适合 | Reshade 无法注入的游戏(非 DirectX 渲染或受反作弊限制的运行时) |
| 运行平台 | Windows;着色器侧支持 HLSL,并内置 DXBC/DXIL 与 Vulkan/OpenGL SPIR-V 的编译路径 |
RenoDX 核心功能与用户目标对照
| 用户目标 | 项目能力 | 实际效果 |
|---|---|---|
| 修改特定画面环节 | 按着色器 CRC32 哈希匹配并替换为自定义 HLSL | 不动游戏逻辑,修正色调映射、色彩处理等问题 |
| 提升中间渲染数据质量 | 交换链升级、纹理资源升级,资源克隆可改用r16g16b16a16_float | 让管线在后期环节保留高于 1.0 的 HDR 数据 |
| 显示调试或自定义信息 | 覆盖层与缓冲区注入 | 在游戏内叠加调试或自定义 UI |
| 参数持久化 | 设置系统写盘,支持预设与三级复杂度(Simple / Intermediate / Advanced) | 重启后参数恢复,普通用户只看简单档 |
| 降低 GPU 占用与发热 | 独立 FPS Limiter addon,帧率上限 0–480 | 限流控功耗,缓解画面撕裂 |
RenoDX 安装与首次构建步骤
按“先验证环境、再完成基础配置、后扩展功能”的顺序走一遍,可以得到一个可用的构建产物。
安装 Reshade 到目标游戏。这是 RenoDX 的核心依赖,没有 Reshade 时 addon 无法被加载。
准备构建环境:MSVC 2022 Build Tools、CMake、Windows SDK(最低 10.0.26100.0,
fxc.exe来自 SDK)。获取源码并初始化子模块(本地克隆,仅用于阅读与本地构建):
git clone https://gitcode.com/GitHub_Trending/re/renodx运行项目自带的引导脚本,把 DXC、Slang、glslang 等着色器工具下载并整理到
bin目录,同时在缺少 SDK 时尝试安装:powershell -ExecutionPolicy Bypass -File .\scripts\setup-dev-env.ps1 -Install不带参数的默认调用只预览检测结果,不会改动文件;脚本不会把本地较新的工具降级,仅当配置版本更新时才升级。
配置并构建(以 Clang x64 为例,第一条读取 preset 并报告工具链版本,第二条生成发布产物):
cmake --preset clang-x64 && cmake --build --preset clang-x64-release
可执行的验证点:构建完成后,在构建目录中确认已生成renodx-{mod}.addon64文件(例如renodx-generic.addon64)。每个src/games/下的游戏目录对应一个以文件夹命名的 addon 目标。把该文件放进对应游戏的 Reshade 目录后启动游戏,若 Reshade 配置里能看到该 addon 的设置面板,说明链路打通。若配置阶段出现工具版本告警,可用cmake -P .\cmake\tool-versions.cmake打印项目当前配置的最低版本,对照检查。
RenoDX 功能拆解:着色器替换与 devkit 调试
按 CRC32 替换着色器
- 能力:用自定义 HLSL 顶替游戏中某个已编译着色器。
- 做法:着色器文件按
{CRC32}.{TARGET}.hlsl命名(如0xA771E2C6.ps_4_0.hlsl,CRC32 为十六进制、TARGET 含ps_6_6这类着色器目标)。CMake 会自动搜索src/games/**/*.hlsl,编译并内嵌后输出对应 addon。构建产物名由文件夹名决定。 - 适合谁:想修特定游戏特定 pass 的玩家与 mod 作者。已支持的游戏逐个放在
src/games/下,每个文件夹的metadata.json记录游戏 id、标题、维护者与部署用的 Steam AppID。
devkit 实时检查与 MCP 桥接
- 能力:在运行中的游戏里查看帧、draw call、着色器与资源,并支持转储。
- 做法:用 debug preset 单独构建
devkit与mcp_bridge两个目标,得到renodx-devkit.addon64和renodx-mcp-bridge.exe。游戏内 addon 通过命名管道暴露帧状态,桥接进程把它转成 MCP 工具服务,可接入支持 MCP 的编辑器客户端。常用入口:devkit_status查看设备状态、devkit_queue_snapshot请求下一帧快照、devkit_snapshot_summary看帧摘要。 - 适合谁:需要定位渲染管线细节的 mod 开发者。详细工具分组与流程见
docs/DEVKIT_MCP.md。
设置系统与 FPS Limiter
- 能力:把参数界面化并持久化;单独提供帧率限制 addon。
- 做法:addon 通过设置声明(键名、标签、取值范围、提示语、所属层级)注册界面,模板集中在
src/templates/settings.hpp;FPS Limiter 则是src/addons/fpslimiter/下的独立目标,构建后随 addon 面板启用。 - 适合谁:需要给用户暴露可调参数的 addon 开发者;想控帧率降功耗的普通用户。
RenoDX 替换色调映射着色器的实践流程
以下流程按docs/DEVKIT_MCP.md描述的实际工作顺序,核心原则是从帧的末尾往回查,而不是从第一个找到的亮色调着色器开始。
- 连接 devkit,用
devkit_status和devkit_select_device选定活动设备。多数游戏会暴露多个 D3D 设备,其中 draws 或 tracked shaders 为 0 的通常不是活动渲染器。 devkit_queue_snapshot请求快照并等待下一次 present,再devkit_list_draws列出靠后的 pass。- 先分辨场景合成、UI 文本、最终 blit 三类 pass,再用
devkit_get_draw查看候选 pass 的渲染目标格式、SRV 输入与混合状态。这一步回答的关键问题是:HDR 在最终 blit 之前是否已经丢失。 - 对确认的 pass 用
devkit_dump_shader转储原始着色器。转储的二进制放在临时目录,不要放进可编辑的 live 目录——同一哈希下二进制会遮蔽可编辑源码。DXBC(SM4/5)用cmd_Decompiler.exe反编译,DXIL(SM6)走内置 DXC 反编译路径。 - 把可编辑 HLSL 放入 live 目录,依次
devkit_set_live_shader_path、devkit_load_live_shaders热加载,再用devkit_get_shader确认来源显示为File,即替换生效。 - 若涉及 HDR,用
devkit_set_resource_clone做资源克隆回读,以 EXR 转储或数值分析为准。注意 PNG 预览只反映 SDR,不能单独作为“HDR 是否保留”的判据。 - 路径验证通过后,把行为固化进 addon 的着色器注册逻辑。文档明确提醒:不要把仍然依赖 devkit 手动开关或 overlay 打开状态的中间态当成品交付。
RenoDX 常见报错与排错
| 现象 | 优先检查 |
|---|---|
| 替换不生效 | 文件名里的 CRC32 或着色器目标写错;live 目录混入了同哈希的转储二进制,遮蔽了 HLSL |
| 设备列表里选不出目标 | 存在多个 D3D 设备,选到了非活动渲染器(draws/shaders 为 0) |
| 热重载后游戏卡住 | live 加载是在 present 时入队处理的,卡住时先重建最新版 devkit |
| MCP 连接丢失 | 客户端传输断开不等于游戏端 backend 消失,重连桥接进程后复查devkit_status |
| 反编译文本缺失 | 反编译对并非所有着色器都有保证,退回反汇编,或转储后用外部反编译器处理 |
游戏自带dxcompiler.dll冲突 | 用devkit_set_tools_path指向仓库bin目录,让 devkit 加载项目工具链而非游戏自带版本 |
RenoDX 进阶边界与注意事项
- 新建 mod 的约定:从
src/games/generic/模板起步,文件夹名即 addon 目标名;着色器命名必须符合{CRC32}.{TARGET}.hlsl,元数据字段可对照仓库根的renodx-metadata-schema.json校验。参与贡献时在本地克隆内进行,并按项目约定提交,仓库本身只读。 - devkit 的行为边界:文档将“某些克隆与预览流程需要 devkit overlay 本会话已触碰过资源”明确列为 devkit 自身限制,而非 mod 的要求;decomp 不保证覆盖所有着色器;桥接进程是本机 Windows 进程,需要与游戏同机运行,不适合远程托管场景。
- 使用边界:能否使用此类工具最终受限于游戏服务条款,多人在线环境请自行确认规则。
- 回归测试:
test/目录包含交换链变更检测、着色器注入行为、描述符缓存竞争等集成测试,可参考test/README.md了解覆盖范围。
RenoDX 文档与目录资源入口
| 资源 | 路径 |
|---|---|
| 构建与贡献指南 | docs/CONTRIBUTING.md |
| devkit 与 MCP 工作流 | docs/DEVKIT_MCP.md |
| C++ 代码风格 | docs/CXX_STYLE.md |
| 各游戏 mod(一文件夹一游戏) | src/games/ |
| 设置界面模板 | src/templates/settings.hpp |
| 元数据 schema | renodx-metadata-schema.json |
| 工具链最低版本(单一来源) | cmake/tool-versions.cmake |
| 环境引导脚本 | scripts/setup-dev-env.ps1 |
| 集成测试 | test/ |
动手前核对三件事即可开工:Reshade 能否注入目标游戏、cmake -P .\cmake\tool-versions.cmake报出的工具版本是否满足配置、构建目录里是否出现对应目标的renodx-{mod}.addon64。三项都通过后,再进入着色器替换与 devkit 实时调试环节。
【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考