RenoDX 从零到出包:工具链准备、预设一键构建与你的第一个游戏着色器 Mod
【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx
RenoDX(Renovation Engine for DirectX Games)是一套架在 ReShade 插件系统上的 DirectX 游戏 Mod 工具集:替换游戏着色器、注入缓冲、叠加覆盖层、升级交换链与纹理资源,最终产出可直接投放到游戏目录的.addon64。这篇文章按"先跑通、再理解"的顺序带你上手:先装齐工具链,再用 CMake Preset 生成构建方案,然后拆清楚一个游戏文件夹是怎么变成 Mod 文件的,最后给出日常构建、实时检查与排错的完整循环。
先把三件套和 SDK 准备到位
RenoDX 构建链最依赖的不是 Visual Studio 主程序,而是 Windows SDK 里的fxc.exe,以及一组着色器编译工具(DXC、Slang、glslang、3Dmigoto)。CMake 配置阶段就会去找它们,缺一个都会在 configure 时卡住。
基础工具清单
- Windows 10/11 x64,Windows SDK 不低于
10.0.26100.0(fxc.exe的来源,CMake 默认去C:/Program Files (x86)/Windows Kits/10找它) - Visual Studio 2022 Build Tools(v143 工具集),只需 C++ 工作负载
- CMake 3.27 及以上(
CMakeLists.txt的最低要求;CMakePresets.json声明的最低版本为 3.23) - Ninja 与 LLVM/Clang(推荐路径用
clang-cl做主编译器,速度更好)
一条脚本拉齐着色器工具链
手动去各个 Release 页面下载二进制很容易漏版本。项目自带 scripts/setup-dev-env.ps1,它会读取 cmake/tool-versions.cmake 里声明的最低版本,把缺少的工具下载到仓库根的.\bin:
powershell -ExecutionPolicy Bypass -File .\scripts\setup-dev-env.ps1 -Install默认不带参数只是预览(报告 SDK 与工具版本),加-Install才会真正下载和安装,-Update用于把受管工具升级到配置版本,-Tools dxc,slang可以只处理部分工具。各工具当前锁定的最低版本如下:
| 工具 | 最低版本 | 用途 |
|---|---|---|
| DXC(dxc.exe + dxcompiler.dll) | 1.9.2602 | Shader Model 6.x 编译与 devkit 反编译 |
| Slang(slangc.exe) | 2026.14.1 | 编译.slang到 DXBC/DXIL/SPIR-V |
| glslang | 16.5.0 | 编译.gl.glsl/.vk.glsl到 SPIR-V |
| 3Dmigoto(cmd_Decompiler.exe) | 1.3.16 | 反编译 Shader Model 5.0 及以下 |
⚠️ CMake 对版本过低只发 WARNING 不阻断配置,你会在稍后的着色器编译阶段撞上莫名其妙的失败。看到 "is older than the recommended minimum" 的提示,立刻跑
setup-dev-env.ps1 -Update,别硬编。
💡 想确认当前配置锁定的版本,执行cmake -P .\cmake\tool-versions.cmake即可打印四个RENODX_*_MIN_VERSION——版本号的唯一事实来源就在这个文件里,脚本和构建都不另存一份。
克隆、选预设,生成第一份构建方案
仓库根目录下没有手写的 VS 工程,一切靠 Preset 驱动。先克隆并初始化子模块(Detours、Streamline 等依赖都在external/下):
git clone https://gitcode.com/gh_mirrors/re/renodx cd renodx git submodule update --init --recursive然后选择一条工具链路径生成方案。三条路线都已在 CMakePresets.json 里预置好,x64 与 x86 各有对应预设:
cmake --preset clang-x64| 预设 | 生成器/编译器 | 适用场景 |
|---|---|---|
clang-x64/clang-x86 | Ninja Multi-Config + clang-cl | 文档推荐路径,带 LTO 优化参数 |
ninja-x64/ninja-x86 | Ninja Multi-Config + cl.exe | 纯 MSVC 工具链 |
vs-x64/vs-x86 | Visual Studio 17 2022 | 想在 IDE 里调试 addon 代码 |
32 位游戏必须用 x86 预设,产物后缀是.addon32而不是.addon64。另外注意:ReShade 是运行时核心依赖,编译不要求它,但 Mod 跑起来要求游戏里已装 ReShade。
拆开看:一个文件夹如何变成一个 .addon64
自动发现规则:src/games 即 Mod 清单
CMakeLists.txt 会递归扫描src/games/下每个包含addon.cpp的目录,目录名就是目标名:asscreedvalhalla/addon.cpp产出renodx-asscreedvalhalla.addon64。着色器文件则靠命名约定注册,格式是{名字或CRC32}.{着色器档位}.hlsl,比如1000xresist/tonemapper_0x756E88B2.ps_4_0.hlsl——文件名里的0x756E88B2是游戏内原着色的 CRC32,Mod 靠它精准定位要替换的目标。
一个特殊约定:后缀写成ps_5_x/vs_5_x的 HLSL 会被编译两遍,分别产出 DX11(_5_0)和 DX12(_5_1)两份二进制,运行时按游戏实际使用的 DirectX 版本挑选,一份源码同时兼容两代 API。
三种编译器各管一类文件
构建管线按扩展名分流:HLSL 走fxc(SM5)或dxc(SM6+,SM6.2 起自动加/enable-16bit-types);.slang走slangc;.gl.glsl、.vk.glsl走glslang出 SPIR-V。所有产物由src/embed_file.cpp转成 C 头文件嵌入 DLL,src/analyze_shader_deps.cpp在每轮编译前解析#include依赖生成.d文件,保证改了公共头(如common.hlsl)会触发所有依赖它的着色器重编。
常用参数速查
| 参数 | 作用 | 默认值 |
|---|---|---|
CMAKE_SYSTEM_VERSION | Windows SDK 版本号 | 10.0.26100.0 |
CMAKE_CXX_STANDARD | C++ 标准 | 20 |
MSVC_TOOLSET_VERSION | MSVC 工具集版本 | 143 |
RENODX_BUILD_TESTS | 是否构建test/下的 D3D12 回归测试 | OFF |
RENODX_TARGET_ARCHITECTURE | 目标架构,自动由指针宽度推导 | x64 |
每个游戏目录的metadata.json里deploy.architecture字段还能限制该 Mod 支持哪些架构;不匹配当前构建架构的目录会被整体跳过(构建日志会打印 "Skipped N game addon targets")。
日常循环:单 Mod 构建、实时检查与上新
只构建你要的那个游戏
全量构建两百多个游戏 Mod 意义不大,--target直接指定目录名即可。以通用模板为例:
cmake --build --preset clang-x64-release --target generic产物落在build/Release/renodx-generic.addon64。如果要走"构建 + 自动发到 Discord 频道"的新品发布流,用 scripts/deploy-early-access.ps1:不带参数时会列出全部可构建目标并提供交互式筛选,配置好RENODX_DISCORD_WEBHOOK_EA环境变量后构建完成自动推送。
devkit + MCP Bridge:不重启游戏的实时检查
写着色器 Mod 最痛苦的是"改了要重启游戏看效果"。RenoDX 的解法是一个游戏内检查插件加一个桥接进程:
cmake --build --preset clang-x64-debug --target devkit mcp_bridge产出build/Debug/renodx-devkit.addon64和renodx-mcp-bridge.exe。devkit 通过命名管道暴露帧、着色器、资源检查能力,bridge 把它转成 MCP 工具(renodx_connect、devkit_list_shaders、devkit_snapshot_summary等)供 MCP 客户端调用。完整工具清单和 HDR 资源校验流程见 docs/DEVKIT_MCP.md。
给一款新游戏加 Mod
复制 src/games/generic 作为起点:新建目录,放入addon.cpp和metadata.json,按{CRC32}.{档位}.hlsl命名着色器文件即可被 CMake 自动收编。CRC32 从游戏内实际调用的着色器获取——SM5.0 及以下用 3Dmigoto 的cmd_Decompiler,SM6.0+ 用仓库自建的 src/decompiler/cli.cpp(DXC 反编译,配置时一并构建)。
排错清单与进阶技巧
⚠️ configure 阶段报找不到
fxc.exe/dxc.exe:说明 Windows SDK 缺失或版本低于 10.0.26100.0。执行winget install --id Microsoft.WindowsSDK -e --silent装完再重新生成方案;SDK 就位后setup-dev-env.ps1 -Install还会顺手把fxc.exe拷贝进.\bin。
⚠️ 构建日志出现 "Skipped N game addon targets not listed for x64":这不是报错,是对应游戏的
metadata.json声明的deploy.architecture不含你当前的构建架构。要编 32 位版本,改用clang-x86/ninja-x86预设重新配置。
其余高频问题:
- 着色器编译失败:先核对
.\bin里 DXC/Slang/glslang 是否低于最低版本(跑cmake -P .\cmake\tool-versions.cmake对照),再setup-dev-env.ps1 -Update - 同一个着色器在 DX11 和 DX12 表现不一致:检查是否该用
_5_x双档后缀而不是只写ps_5_0 - 超大着色器触发编译内存问题:项目已全局开启
/bigobj,一般无需干预
最后几个省时间的习惯:换工具链用cmake --preset一键切换,不必改任何参数文件;想要 VS 解决方案可以直接跑 make-sln.cmd(等价于一条带-G "Visual Studio 17 2022"的 cmake 命令);跑回归测试时加-DRENODX_BUILD_TESTS=ON,test/下覆盖了交换链代理屏障、着色器注入行为、资源升级迁移等场景,改动底层模块后值得过一遍。
【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考