news 2026/10/18 2:44:07

RenoDX 从零到出包:工具链准备、预设一键构建与你的第一个游戏着色器 Mod

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RenoDX 从零到出包:工具链准备、预设一键构建与你的第一个游戏着色器 Mod

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.2602Shader Model 6.x 编译与 devkit 反编译
Slang(slangc.exe)2026.14.1编译.slang到 DXBC/DXIL/SPIR-V
glslang16.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-x86Ninja Multi-Config + clang-cl文档推荐路径,带 LTO 优化参数
ninja-x64/ninja-x86Ninja Multi-Config + cl.exe纯 MSVC 工具链
vs-x64/vs-x86Visual 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_VERSIONWindows SDK 版本号10.0.26100.0
CMAKE_CXX_STANDARDC++ 标准20
MSVC_TOOLSET_VERSIONMSVC 工具集版本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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 2:41:49

猫抓插件:完整存下网页视频与音频,M3U8 合并下载不求人

猫抓插件:完整存下网页视频与音频,M3U8 合并下载不求人 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓插件是一款开源…

作者头像 李华
网站建设 2026/10/18 2:41:33

主动选择:夺回人生方向感的必修课

上周和一个老朋友吃饭,聊到换工作的事,他说自己最近很累,可又觉得人根本没得选。“什么主动选择,到头来不都是被生活推着走嘛。”他这话让我愣了很久。我意识到,身边大多数人不是没有判断力,而是从来没把“…

作者头像 李华
网站建设 2026/10/18 2:40:24

Codex 实战指南:从代码生成到结对编程的进阶用法

1. 从零理解 Codex 到底能干什么1.1 它不是一个“代码补全工具”那么简单很多人第一次接触 Codex,脑子里蹦出来的印象就是“哦,一个自动补全代码的东西”。这个认知偏差特别大,也是很多人用了一阵子觉得“不过如此”然后放弃的根本原因。Code…

作者头像 李华
网站建设 2026/10/18 2:36:28

m3u8下载实战:ffmpeg与AES-128解密及防坑指南

简介:一款面向流媒体爱好者的m3u8在线下载与提取工具,基于Python编写,用户只需提供M3U8链接,工具即可自动拉取全部TS分片,并借助ffmpeg合并为完整视频文件。工具采用多线程机制提升下载速度,适合需要离线观…

作者头像 李华
网站建设 2026/10/18 2:35:21

基于PyQt与区域生长算法的手指静脉图像分割实践

1. 项目背景与需求拆解1.1 这个毕设题目到底在做什么如果你正在挑选计算机视觉方向的毕业设计题目,大概率会看到类似“基于XX算法的手指静脉图像分割”“基于深度学习的XXX识别”这样一串标题。这个题目全称是“pyqt基于区域生长算法的低质量手指静脉图片分割”&…

作者头像 李华