LUT 切换器 3(实时 - 扫描器 - 天气 - 菜单) 封面

LUT 切换器 3(实时 - 扫描器 - 天气 - 菜单)

赛博朋克2077视觉与图形

实时、原生 LUT 切换!具备自定义包、分类、收藏夹以及用于切换活动 LUT 的热键。

预览

前置 Mod

详情

使用这款原生 Redscript 模组实时切换 LUT。具备基于 TweakDB 的 LUT 包、可折叠分类组、收藏夹、针对拍照模式和菜单的情境感知 LUT,以及用于切换和循环的 CET 热键。支持 SDR 和 HDR LUT(仅当包含在包中时)。

活动 LUT 会在存档之间保留,并在重新加载时自动生效。

LUT Switcher 3 是一次完全重写。版本 2 使用 .effect 文件和 JSON 包格式,而版本 3 通过 Redscript 直接作用于游戏的色彩分级管线。LUT 在简单的 YAML 文件中定义为 TweakDB 记录,引擎在渲染器层面交换它们,没有中间效果层。结果是更干净的切换、没有 z-fighting、与其他模组更好的兼容性,以及更简单的包创建工作流。

常见问题:

  1. 我需要先卸载我的 LUT 模组吗? 不需要。
  2. 为什么我在 GUI 中看不到任何列出的 LUT? 你需要从可选文件标签页下载 LUT 包。
  3. 为什么有些任务和事件会禁用 LUT? 某些游戏内效果会覆盖色彩分级管线。请附带存档文件报告该问题,我会研究修复。
  4. 我在哪里可以找到模组作者 ____ 的 ___ LUT? 如果你在此页面或其他 LUT 页面没有看到列出的 LUT Switcher 包,请向模组作者请求 LUT Switcher 支持,或使用下方的 YAML 教程创建自己的包。
  5. 我如何访问 LUT Switcher? 安装 CET 并使用 CET 键位绑定打开覆盖层。LUT Switcher 会显示为自己的窗口。
  6. 我仍然看不到菜单! 你没有将所有文件安装到正确位置,或缺少必需文件。
  7. 我可以在 LS3 中使用 LS2 包吗? 不可以。格式完全不同。LS3 包是基于 YAML 的 TweakDB 记录。LS2 JSON 包和 .effect 文件不兼容。

安装:

使用 Vortex(推荐)或手动安装,将 zip 的内容拖放到 Cyberpunk 2077 根文件夹。

  • 对于 GOG,应该类似于 "*C:\Games\Cyberpunk 2077*[放在这里]"
  • 对于 Steam,应该类似于 "*C:\Games\Steam\steamapps\common\Cyberpunk 2077*[放在这里]"

要求:

版本 3 的新内容:

  • 原生管线切换: LUT 直接在游戏的 ColorGradingAreaSettings 上交换。不再有 .effect 文件层。
  • TweakDB YAML 包: 包是简单的 YAML 文件,用于注册 TweakDB 记录。创建包无需 WolvenKit 项目。
  • 持久化服务: 活动 LUT 存储在具有持久性的 ScriptableService 中,因此它能在区域转换和重新加载后保留,无需 CET 重新应用。
  • 情境感知 LUT: 为拍照模式和游戏菜单分配单独的 LUT。它们会根据游戏状态自动激活和停用。
  • 分类组: 包可以声明组名,以便多版本包(如 Nova LUT 1-4)折叠在单个侧边栏条目下。
  • 输入/输出重映射: 在任何 LUT 上预览不同的色彩空间映射(LogC、sRGB、Linear),而无需修改包。
  • HDR 资源验证: 缺少适用于你的显示模式(SDR 或 HDR)所需纹理的 LUT 会被标记,并可选隐藏。
  • 带拖拽排序的收藏夹: 可将任何包中的任何 LUT 加星标,通过拖拽重新排序列表,使用热键在收藏夹中循环。
  • 自定义侧边栏图标: 右键单击任何包或组,从字形浏览器中分配自定义图标。
  • WindowUtils 集成: 通过 WindowUtils 完全支持网格吸附、分割面板、搜索、通知和教程。

CET 热键:

所有热键都在 CET 绑定菜单中配置:

  • 切换活动 LUT - 在你的活动 LUT 和基础游戏 LUT 之间切换。
  • 切换次要 LUT - 在你的主 LUT 和次要 LUT 之间交换。
  • 下一个 LUT - 在当前包中向前循环。
  • 上一个 LUT - 在当前包中向后循环。
  • 下一个收藏 - 在收藏列表中向前循环。
  • 上一个收藏 - 在收藏列表中向后循环。
  • 随机 LUT - 从收藏夹或所有包中应用随机 LUT(可配置)。

制作 LUT 包:

LUT Switcher 3 使用 TweakDB YAML 文件进行包定义。无需 WolvenKit 项目,无需 .effect 文件,无需 JSON。你只需要将 LUT 纹理作为 .xbm 文件和一个 YAML 文件。

包 YAML 模板:

# Register your pack with LUT Switcher
LUTSwitcher.Settings.packs:
  - !append t"LUTSwitcher.MyCustomPack"

# Pack definition
LUTSwitcher.MyCustomPack: "My Custom Pack"
LUTSwitcher.MyCustomPack.tooltip: "Optional tooltip shown on hover"
LUTSwitcher.MyCustomPack.group: ""  # Optional: group multiple packs under one sidebar entry
LUTSwitcher.MyCustomPack.luts:
  - t"LUTSwitcher.MyLut1"
  - t"LUTSwitcher.MyLut2"

# LUT definitions
LUTSwitcher.MyLut1: "My First LUT"
LUTSwitcher.MyLut1.tooltip: "Optional tooltip for the LUT button"
LUTSwitcher.MyLut1.inputMapping: n"CMF_ArriLogC"
LUTSwitcher.MyLut1.outputMapping: n"CMF_Linear"
LUTSwitcher.MyLut1.LUT: r"base\\weather\\24h_basic\\luts\\my_pack\\my_lut_sdr.xbm"
LUTSwitcher.MyLut1.LUThdr: r"base\\weather\\24h_basic\\luts\\my_pack\\my_lut_hdr.xbm"

LUTSwitcher.MyLut2: "My Second LUT"
LUTSwitcher.MyLut2.inputMapping: n"CMF_sRGB"
LUTSwitcher.MyLut2.outputMapping: n"CMF_sRGB"
LUTSwitcher.MyLut2.LUT: r"base\\weather\\24h_basic\\luts\\my_pack\\my_lut2_sdr.xbm"
LUTSwitcher.MyLut2.LUThdr: null

工作原理:

  1. 创建你的 LUT .xbm 纹理,并将它们放在存档中 *base\weather\24h_basic\luts* 下的某个位置。
  2. 在你的模组的 *r6\tweaks* 文件夹中创建一个 .yaml 文件。
  3. 使用 !append 将你的包注册到 LUTSwitcher.Settings.packs,以便模组在加载时发现它。
  4. 为每个 LUT 定义唯一的 TweakDB ID、显示名称、色彩空间映射,以及指向 SDR 和 HDR 纹理的路径。
  5. 如果你没有 HDR 变体,请设置 LUThdr: null(该 LUT 将被标记为仅 SDR)。

色彩空间映射:

  • n"CMF_ArriLogC" - 用于游戏的大多数内部 LUT 以及使用 log 工作流制作的自定义包。
  • n"CMF_sRGB" - 标准 sRGB。常用于拍照模式 LUT 和简单色彩分级。
  • n"CMF_Linear" - 线性光。基础游戏主 LUT 的输出映射。

大多数自定义 LUT 包使用 inputMapping: CMF_ArriLogC 和 outputMapping: CMF_Linear 来匹配游戏的原生色彩管线。

逐槽位 HDR 覆盖:

如果你的 HDR LUT 需要与 SDR 版本不同的色彩空间设置,可以指定覆盖:

LUTSwitcher.MyLut1.inputMappingHdr: n"CMF_sRGB"
LUTSwitcher.MyLut1.outputMappingHdr: n"CMF_Linear"

如果省略,HDR 槽位将使用与 SDR 槽位相同的 inputMapping 和 outputMapping。

包分组:

如果你的 LUT 系列有多个版本(如 Nova LUT 1、2、3、4),可以将它们分组到单个侧边栏条目下:

LUTSwitcher.MyPack1.group: "My LUT Series"
LUTSwitcher.MyPack2.group: "My LUT Series"

共享相同组字符串的包将出现在一个可折叠的侧边栏项目下。

其他包:

兼容性:

  • 与任何不直接覆盖相同环境定义色彩分级设置的模组兼容。
  • 由于 LS3 在资源层面修补渲染器的区域设置,它避免了困扰 LS2 中基于效果方法的 z-fighting 问题。
  • LUT Switcher 3 包 不 向后兼容 LS2。格式和机制完全不同。

已知问题:

  • 某些脚本化序列和任务事件可能会临时覆盖活动 LUT。一旦覆盖结束,LUT 就会恢复。

致谢:

非常感谢 Val 引领我走上这条道路并启发了 LUT Switcher!感谢 null、sosuine 和 Val 进行测试,还要感谢 TheManualEnhancer 添加了 CET 热键功能。感谢 Robber、VanStorm、Creepy、Sevenence 和 Stormie 进行 beta 测试!最后但同样重要的是,感谢 Becky York 为本版本的原生 LUT 切换提供了核心见解。

未来计划:

  • 盲比较模式(从 LS2 延续,为新引擎重建)。
  • 天气和一天中时间关联的 LUT 配置文件。
  • LUT 队列循环(轮换超过两个 LUT)。