资讯动态

如何参与开发 OptiScaler-DLSSNR-PreSR-Multipass?不变量、状态规格与变更审查流程开发者指南

发布时间:2026/10/26 18:09:41 来源:尧图企业网站定制
【免费下载链接】OptiScaler-DLSSNR-PreSR-MultipassA game mod that uses NVIDIA AI to change lighting, detail and colour, with controls for strength and performance.项目地址https://gitcode.com/gh_mirrors/op/OptiScaler-DLSSNR-PreSR-Multipass点击查看免费下载OptiScaler-DLSSNR-PreSR-Multipass 是一个基于 NVIDIA AI 的游戏 MOD可调整游戏的灯光、细节与色彩并支持强度与性能调节DLSS Neural Rendering 前置/多次多通道。想给它提代码这篇文章带你完整走一遍它的贡献流程从本地编译环境、PCH 构建规则到九条不可触碰的不变量、可审查的状态规格表以及每类变更部署前必须通过的审查流程与 PR 集成规范。1. 搭建开发环境编译 OptiScaler 本地工具链这是一个 Windows C 项目开发环境要求很明确Visual Studiov143平台工具集VS 2022Windows 10 SDK见 OptiScaler.vcxproj 中的PlatformToolset配置解决方案入口是根目录的 OptiScaler.sln日常验证配置为Release x64需要fxc.exeD3D 编译工具dlssnr.hlsl的预编译头只能用 fxc 以字节级一致的方式复现用 dxc 会悄悄换掉着色器逻辑详见 OptiScaler/dlssnr/README.mdclone 仓库后无需额外安装脚本setup_windows.bat 是面向玩家的安装脚本不是构建脚本。直接打开解决方案、选 Release x64、生成即可。2. 项目地图先看这三个入口再动手入口作用CONTRIBUTING.md所有贡献的硬性规范PCH 规则OptiScaler/dlssnr/design/DEVELOPMENT.mdDLSS-NR 模块的不变量、状态规格与审查方法本文主角OptiScaler/dlssnr/README.md模块文件地图、着色器重编译步骤、如何完整移除该模块的清单模块结构一句话版OptiScaler/dlssnr/放非着色器部分菜单、捕获、forwarder、proxy 实验OptiScaler/shaders/dlssnr/放 pass 本体与预编译着色器OptiScaler.ini 是随包发布的配置样例。3. PCH 铁律四条规则守住 2 倍编译速度CONTRIBUTING.md 规定项目依赖预编译头PCH保持构建速度比标准构建快 2 倍以上。规则如下每个.cpp文件的第一个非注释行必须是#include pch.h头文件.h里永远不要 includepch.h不要把通用工具、宏、全局声明塞进pch.h——用 SysUtils.h 或新建功能头文件只有大块、稳定的第三方/系统头如 Windows SDK 头才允许加进 pch.h违反任何一条都可能破坏编译器缓存、触发不必要的全量重编——这是维护者会直接打回的改动。4. 九条不变量合并前必须全部成立DEVELOPMENT.md 开篇就是一句最高规则一个变更在编译通过时不算完成在通过它所属变更类型的审查之后才算完成。九条不变量Invariants是任何变更都必须满足的底线#不变量一句话说明1Default-identical新开关/特性在关闭或默认值时行为必须与改动前逐字节一致2No dead control操作对象不存在时对应控件绝不能出现如没有锚点就不能出现 Trim 滑条3One quantity, one control两个滑条不能编辑同一个底层值一个滑条不能悄悄改变语义4Config round-trip每个新的[DlssNr]配置键必须做到四件事声明默认值、在 Config.cpp 读取、在 Config.cpp 保存、出现在随包 OptiScaler.ini 中缺一即设置静默失效5Shared struct cbufferC 的DlssNrConstants与 HLSL 的Paramscbuffer 是同一份 4 字节标量有序列表只能同步追加到末尾、顺序一致错位会静默污染其后的所有常量6Shader rebuild is real改了 dlssnr.hlsl 必须重编译两个目标DXIL 与 Vulkan SPIR-V并确认产物时间戳新于源码——过期的头文件会悄悄打包旧着色器7Passthrough is sacred已 tone-mapped 的帧gPassthrough ! 0不能被任何 encode/decode/proxy 改动触碰且每处复现 encode 的地方都要带同样的门控8Vulkan lifetimeGPU 可能仍在使用的 Vulkan 资源绝不能直接释放resize/teardown 前先vkDeviceWaitIdle设备已消失的句柄只允许 ABANDON不许vkDestroy9Local until asked用户没有点名要合并的那个 ref就不要 push5. 状态规格表审查 UI 改动的可执行契约菜单这类 UI 变更不能靠看起来对来验收。DEVELOPMENT.md 第 2 节把白点来源菜单DlssNr_Menu.cpp的每种状态都写成了一张规格表——审查者逐行对照代码多一个控件不行少一个控件也不行。核心行摘录Source子状态应显示的滑条按钮/其他2 scan0 个锚点仅 Paper whiteAnchor here禁止出现 Trim2 scan≥1 锚点且未选中仅 Trim (x the scan) Reset锚点表格行、读数显示2 scan恰好 1 个锚点额外出现 the number runs the other way 复选框0 或 ≥2 个锚点时该复选框必须隐藏这张表就是无死控件不变量 2的落地检查单比如没有锚点却显示 Trim正是当年真实发生过的回归规格表就是为了杜绝它再次溜进游戏。6. 按变更类型走审查五类变更五条审查路径第 3 节要求把变更对号入座按类型执行对抗式审查——审查者的任务是想办法把它弄坏然后逐项确认或报告缺陷★ 菜单 / UI 变更逐行走一遍 §2 状态表。对每个控件自问操作对象缺席时它会不会出现语义变了标签有没有跟是否有两个控件在编辑一个值★ 着色器dlssnr.hlsl变更默认关闭时逐字节一致规则 1cbuffer↔struct 布局一致规则 5passthrough 门控覆盖所有复现 encode 之处规则 7新曲线的数值安全性NaN/Inf/除零、输出范围两个着色器目标都重编译规则 6。★ 配置键变更四点对齐规则 4一个都不能少。★ Vulkan 功能/资源变更每次释放前都有 drain 或 abandon渲染尺寸、工作比例、设备变化时资源要能重建。非 NR 路径的改动确认 NR 关闭时改动完全惰性无分配、无 hook 效果——不能拖累只是开着 NR 开关的 FSR/XeSS/DLSS 用户。带 ★ 的类型审查不是可选的。着色器重编译的标准流程来自 OptiScaler/dlssnr/README.mdcd OptiScaler/shaders/dlssnr/precompile ..\..\shader_tools\fxc.exe -T cs_5_0 -E CSMain -O3 dlssnr.hlsl -Fo DlssNr_Shader.cso python ..\..\shader_tools\create_header.py DlssNr_Shader.cso DlssNr_Shader.h DlssNr_cso7. 机械守卫与烟雾测试便宜的检查先跑掉第 4 节的思路是脚本能抓的类别先用脚本抓把审查时间留给抓不到的。五道机械守卫配置往返 grep每个CustomOptional... DlssNrX断言存在对应的readX(DlssNr,X)和ini.SetValue(DlssNr,X, ...)退役标识符 grep已删除的设置名不得以活着的读取器形式残留cbuffer/struct 字段数检查DlssNrConstants与Paramscbuffer 的标子数量相等且同序着色器新鲜度检查部署步骤中断言.cso/.spv及头文件新于dlssnr.hlsl、构建出的 DLL 新于头文件版本戳菜单标题自带 build id 时间戳确认与正在测试的 commit 一致让截图能明确指认是哪次构建此外tests/ 目录下有一整套 C 烟雾测试覆盖 seam clock、residualDLSS/FG/RR、guides、GPU time、Vulkan 着色器路由等例如 nr_seam_clock_smoke.cpp、nr_residual_rr_smoke.cpp。在 VS 的 x64 Native Tools 命令行里编译运行cl /nologo /std:c20 /EHsc tests\nr_seam_clock_smoke.cpp /Fe:x64\nr_seam_clock_smoke.exe /link x64\nr_seam_clock_smoke.exe8. PR 审查实战真实 PR 是如何被修过再合的docs/ 目录保留了完整的 PR 集成审查记录是最好的学习材料docs/PR-REVIEW-20260909.mdPR #11 的原始实现会在两个 seam 上各推进一次帧计数器导致双跳审查纠正为只在原生 Before 调用时推进——这就是对抗式审查想弄坏它的实例同时记录仓库级 clang-format 在 main 上本就已失败、如实声明而非虚报通过。docs/PR-2-REVIEW.md窗口尺寸与 composition swapchain 修复的逐条审查调整以及对应的 tests/dxgi_window_size_smoke.cpp 验证范围与未验证项的诚实标注。docs/ISSUE-REVIEW-2026-09-10.md、docs/NR-COMPATIBILITY.mdissue 复现与兼容性结论的存档。提 PR 前的自检清单浓缩版✅ PCH 四条规则没碰✅ 变更已对号入座跑完对应类型的 ★ 审查✅ 九条不变量逐条过一遍尤其规则 1、2、4、5✅ 机械守卫脚本全部通过✅ 相关烟雾测试跑过Release x64 构建通过✅ 菜单版本戳能对上你测的 commit遵循这套流程你的贡献才能真正通过 DEVELOPMENT.md 的部署前审查关卡而不是止步于能编译。赞分享【免费下载链接】OptiScaler-DLSSNR-PreSR-MultipassA game mod that uses NVIDIA AI to change lighting, detail and colour, with controls for strength and performance.项目地址https://gitcode.com/gh_mirrors/op/OptiScaler-DLSSNR-PreSR-Multipass点击查看免费下载相关推荐OptiScaler-DLSSNR-PreSR-Multipass 新手设置指南[DlssNr] 配置中必会的 6 个核心参数OptiScaler DLSSNR PreSR Multipass 新手设置指南 DlssNr 配置中必会的 6 个核心参数 OptiScaler DLSSN在 Evcxr Jupyter 中显示图像evcxr_image 与 image crate 集成实战在 Evcxr Jupyter 中显示图像evcxr_image 与 image crate 集成实战 本文围绕 evcxr 仓库中的 runtimes/evDataClaw六层隐私保护机制详解它如何自动脱敏API密钥、私有信息与用户名DataClaw六层隐私保护机制详解它如何自动脱敏API密钥、私有信息与用户名 DataClaw 是一个开源工具能把 Claude Code、Codex 等上一篇如何定制团队审查标准用code-review-skill打造一条命令的/review审查下一篇DataClaw 信任门控完全指南confirm 命令与四步 PII 审计流程详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑