RenoDX DirectX游戏修改工具集|不动游戏本体,换掉着色器、找回HDR、限帧降功耗
【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx
游戏画面最后总是差一口气:HDR在最后一次拷贝时丢了、高光被压平、想限帧降功耗却没地方下手。问题往往出在某个着色器或某个中间纹理格式上,但自己去挖游戏可执行文件代价太高。RenoDX是一款借助Reshade 插件系统(Reshade 是通用的 DX 钩子框架,能把功能注入游戏而不改动可执行文件)挂进游戏 DirectX 调用的DirectX 游戏修改工具集:换着色器、注缓冲区、升 swapchain、写用户设置,都不需要修改游戏本体。
项目速览
| 项目 | 说明 |
|---|---|
| 项目定位 | DirectX 游戏 modding 工具集:着色器替换、缓冲区注入、覆盖层、swapchain 升级、纹理资源升级、设置持久化 |
| 上游依赖 | 基于Reshade 插件系统,钩子全部交给 Reshade,不针对特定版本 exe 打补丁 |
| 构建栈 | CMake presets(clang / ninja / vs)、MSVC 2022、Windows SDK ≥ 10.0.26100 |
| mod 组织方式 | src/games/下每个目录即一个游戏 mod,统一产出renodx-{game}.addon64 |
| 配套工具 | devkit 实时检查、mcp_bridge MCP 桥、fpslimiter 帧率限制器、decomp.exe SM6 反编译器 |
适合谁:游戏已装 Reshade 的 Windows DirectX 玩家;能读写 HLSL、想修游戏画面或性能的轻度创作者;想用 MCP 客户端辅助改游戏的开发者。不适合谁:只想要"下载即拖入"的纯可视化 mod 工具的人;非 Windows 平台(构建与运行都在 Windows 侧);完全不打算碰代码的人。
🏗️ 从零构建出第一个 addon
1. 准备环境前置。安装 VSCode、MSVC 2022 Build Tools、CMake、Clang/LLVM、Ninja 和 Windows SDK(10.0.26100.0 或更高)。CMake preset 用clang-cl作编译器,HLSL 编译还依赖 SDK 自带的fxc与dxc。
2. 获取代码。
git clone https://gitcode.com/GitHub_Trending/re/renodx3. 初始化子模块与工具链。Reshade 等依赖在子模块里;脚本会按仓库配置把dxc、slangc、glslang、cmd_Decompiler等装进bin/:
git submodule update --init --recursive powershell -ExecutionPolicy Bypass -File .\scripts\setup-dev-env.ps1 -Install提示:工具版本以 cmake/tool-versions.cmake 为唯一事实来源;缺 Windows SDK 时脚本会尝试安装,装好后把
fxc.exe复制进bin/。
4. 配置并构建。
cmake --preset clang-x64 cmake --build --preset clang-x64-release提示:32 位游戏改用
clang-x86,MSVC 用ninja-x64,Visual Studio 生成器用vs-x64。构建产物是build/下各游戏的renodx-{game}.addon64,放入游戏的 Reshade 目录即可生效。
🔍 每个功能帮你解决什么
实时看清游戏在画什么
帮你做到:不再靠猜,游戏内逐条列出当前帧的 draw call、着色器与纹理格式,并可交给外部 MCP 客户端驱动。在哪里实现:游戏侧是 src/addons/devkit/,桥接进程是 src/apps/mcp_bridge/。最小示例:
cmake --build --preset clang-x64-debug --target devkit mcp_bridge产出renodx-devkit.addon64与renodx-mcp-bridge.exe,连接后先调devkit_status、devkit_queue_snapshot,下一帧 present 后即可查看 draws 与 shaders。
确认画面是否在最后一次拷贝前丢精度
帮你做到:发现管线中途被压平的格式并恢复。在哪里实现:升级规则在 src/utils/resource_upgrade.hpp,swapchain 侧在 src/utils/swapchain.hpp。最小示例:仓库里 RE4 重制版的 mod 注册了一条规则——N 卡上把 back buffer 的r11g11b10_float升为r16g16b16a16_float(写法见 src/games/re4remake/addon.cpp),高光细节不再被 11 位格式抹平。
限帧降 GPU 占用
帮你做到:一个独立于具体游戏的帧率限制器 addon。在哪里实现:src/addons/fpslimiter/addon.cpp。最小示例:addon 注册FPSLimit设置(0~480,默认 0 表示不限),值通过设置系统写到磁盘,下次启动自动记住。
按 CRC 地址换掉单个着色器
帮你做到:用自写 HLSL 顶替原版着色器,全程不碰游戏文件。在哪里实现:顶层 CMake 自动扫描src/games/**/*.hlsl,编译为字节码并生成embed/{CRC32}.h注入对应 mod。最小示例:把文件命名为0xC0DEC0DE.ps_6_6.hlsl(CRC32 + 着色器目标)放进对应游戏目录,它会自动成为该 mod 的一部分,无需手写任何构建脚本。
🎯 实战:用 devkit 验证并找回某游戏 final blit 的 HDR
目标:先回答"HDR 是否在最后一次拷贝前就丢了",而不是上来就改着色器。操作(完整循环见 docs/DEVKIT_MCP.md):连接后用devkit_select_device选中活跃设备(某设备显示 0 draws 就说明选错了)→devkit_queue_snapshot等下一帧 →从帧尾往前用devkit_list_draws找最后几笔 →devkit_get_draw查看渲染目标格式 → 必要时devkit_set_resource_clone克隆资源回读。效果验证:PNG 预览只是 SDR,不能证明 HDR 存活;要看克隆回读统计或.exrdump 里是否保留了大于 1.0 的数值。验证通过后,把规则写进src/games/{game}/addon.cpp变成正式 mod,别把 devkit 手动开关留在成品里。
🛠️ 自定义:做 mod 的最短路径
- 复制 src/games/generic/ 模板到新目录
src/games/{game}/; - 填
metadata.json的id、title,需要自动部署就加deploy.steam_appid(字段规范见 renodx-metadata-schema.json); - 按
{CRC32}.{TARGET}.hlsl命名放好着色器,目录里有addon.cpp时 CMake 自动建出renodx-{game}目标,不用改 CMakeLists; - 只构建该目标,再跑 scripts/deploy-early-access.ps1 交互式选择目标部署。
⚠️ 排障速查
| 症状 | 处理方向 |
|---|---|
| 配置时提示 DXC/glslang 版本低于最低要求 | 跑setup-dev-env.ps1 -Update,以cmake/tool-versions.cmake为准 |
游戏自带dxcompiler.dll导致 devkit 反编译异常 | 用devkit_set_tools_path指向仓库bin目录,加载仓库工具链 |
| 连接后 0 draws / 0 shaders | 设备选错:devkit_status查看设备列表,重选活跃设备 |
| live shader 修改不生效或卡帧 | 确认devkit_get_shader的 source 是File;卡住时重新构建最新 devkit |
| 32 位游戏加载不了 addon | 用cmake --preset clang-x86构建对应 32 位目标 |
📚 资源与社区
- 构建与工具链说明:docs/CONTRIBUTING.md
- 实时检查与 MCP 工作流详解:docs/DEVKIT_MCP.md
- 各游戏 mod 与共享着色器库:src/games/、src/shaders/
- README 中还给了官方 Discord 社区与 Mods 列表页入口,decomp.exe(Shader Model 6+ 反编译器)等工具可从那里下载
下次再遇到画面发闷或功耗过高,别急着动游戏本体:挑一个你常玩的游戏,先在src/games/下建好它的文件夹,构建 devkit 看清最后一笔拷贝,再决定改哪个着色器。
请仅在单人或离线环境使用,并遵守游戏服务条款、尊重开发者的劳动成果。
【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考