
原生FXAA
为星露谷渲染管线添加原生GPU FXAA抗锯齿。
查看大图[center][img]https://i.imgur.com/23AHcco.png[/img][/center]
[center][url=https://smapi.io][img]https://img.shields.io/badge/SMAPI-4.0.0+-brightgreen.svg[/img][/url] [url=https://www.nexusmods.com/stardewvalley/mods/5098][img]https://img.shields.io/badge/GMCM-Compatible-purple.svg[/img][/url] [img]https://img.shields.io/badge/Stardew%20Valley-1.6+-orange.svg[/img][/center]
[center]为星露谷物语提供原生 GPU 抗锯齿。无需 ReShade,无需注入器,无需纹理替换,无需 CPU 端图像处理。[/center]
[center] [/center]
[center][img]https://i.imgur.com/5qBZ9dU.png[/img][/center]
功能简介
星露谷物语在绘制最终帧之前,会先将其世界渲染到一个内部的 MonoGame 目标上。原生 FXAA 会在该目标上运行一个全屏 FXAA 着色器,并将结果复制回来,整个过程都在 GPU 上完成,CPU 完全不参与。
FXAA 会查找成品图像中的高对比度边缘,并混合可见的锯齿。它不会改动精灵、纹理或游戏文件,因此可以与原版画面以及大多数内容模组配合使用,无需任何额外设置。
它挂钩到 SMAPI 的公共渲染事件,因此不涉及 Harmony、DLL 注入、ReShade 或任何其他外部后处理软件。GPU 渲染目标会创建一次并在多个帧之间复用,而不是每帧都重新分配。如果某个渲染过程抛出错误,原生 FXAA 只会在本次会话的剩余时间内自行关闭,而不会让游戏随之崩溃。
预设
像素保留是默认预设,并且可能是大多数人应该保持不动的预设:它只平滑最强的边缘,并保持亚像素混合最小化,从而保留像素艺术的特色。平衡进一步推动平滑,同时仍保留相当数量的精灵细节。平滑则全力运行,具有更灵敏的边缘检测和更强的混合,呈现更柔和、更传统的 FXAA 效果。自定义将使用您在高级 GMCM 页面或 config.json 中设置的任何值。
处理目标
仅世界是默认目标。它会在星露谷绘制其 HUD、菜单、文本和光标之前处理游戏世界,因此这些元素会保持清晰。不过,少数原版效果和指示器会直接绘制在世界图层上,因此无论如何它们都会被平滑处理。全帧会处理所有内容,包括世界和 UI,也包括标题画面,因此文本和菜单也会被平滑。如果您想要清晰的 HUD 和像素字体,请使用仅世界。
安装
- 安装 SMAPI 4.0.0 或更新版本。
- 下载 Native FXAA,并将 NativeFxaa 文件夹解压到您的 Stardew Valley/Mods 文件夹中。
- 通过 SMAPI 启动游戏。
- (可选)安装 Generic Mod Config Menu 以获取游戏内设置和实时的原版/FXAA 对比。
配置
- 启用 FXAA: 打开或关闭效果。默认开启。
- 预设: 像素保留、平衡、平滑或自定义。默认为像素保留。
- 处理目标: 仅世界或全帧。默认为仅世界。
- 边缘阈值: 仅限自定义预设。数值越高,捕获的边缘越少,保留的细节越多。
- 最小边缘阈值: 仅限自定义预设。数值越高,忽略越细微的对比度。
- 亚像素质量: 仅限自定义预设。数值越高,对精细细节的平滑处理越激进,这可能会使图像变柔和。
使用 Generic Mod Config Menu,您可以在调整设置时获得实时对比,并且它会即时更新。保存或保存并关闭会将您的选择应用到实际游戏中,并写入 config.json。GMCM 是可选的。没有它,SMAPI 只会在您首次启动后使用默认设置创建一个 config.json。
兼容性
原生 FXAA 需要星露谷物语 1.6 或更新版本以及 SMAPI 4.0.0 或更新版本。它基于 1.6.15 和 SMAPI 4.5.2 构建和测试。由于它处理的是最终渲染的世界,而不是单个资源,因此它与 Content Patcher 包、重新着色、自定义地图、建筑、NPC、肖像、Fashion Sense、Alternative Textures 以及大多数精灵替换模组都能良好配合,无需为其中任何一个提供特定的补丁。它只涉及公开的 SMAPI 和 MonoGame 渲染 API,不涉及 Harmony,并且完全在本地运行,因此在多人游戏中无需同步任何内容。
性能
每个处理过的渲染目标需要一个全屏 FXAA 通道和一次 GPU 复制,且这些操作都不会回到 CPU。临时渲染目标不会每帧重新分配,只有在某些因素强制要求时(如分辨率更改、图形设备重置或内容丢失)才会重新分配。仅世界通常需要一个临时目标;全帧通常需要第二个用于 UI 图层。一个 RGBA 临时目标在 1920x1080 分辨率下约为 7.9 MiB,在 2560x1440 分辨率下约为 14.1 MiB——实际成本取决于您的分辨率和硬件。
重要说明
- 这是抗锯齿,不是放大。它不会增加纹理分辨率,也不会凭空创造缺失的精灵细节。
- 全帧会故意平滑文本和界面元素。如果您想要清晰的 HUD 和像素字体,请使用仅世界。
- 世界和 UI 图层是分开处理的,因此 FXAA 无法捕捉到仅存在于两个独立渲染图层重叠处的边缘。
- 大地图截图渲染路径被有意跳过,但普通的 Steam 和操作系统截图仍会捕获屏幕上的任何 FXAA 结果。
- 同时运行多个帧缓冲或后处理模组并不是一个好主意。根据渲染事件的顺序,另一个模组的覆盖层可能进入或不会进入 FXAA 通道。
- 如果渲染过程失败,原生 FXAA 会在本次会话的剩余时间内自行关闭,以便游戏继续正常渲染。
- 分屏模式遵循 SMAPI 的每个实例渲染路径。我还没有机会在其中全面测试其效果,所以如果您尝试了,我真的很想了解情况如何。
故障排除
- 图像变黑、缩放错误或其他损坏?先尝试禁用其他帧缓冲或后处理模组。
- 全帧让菜单或文本看起来太柔和?切换到仅世界。
- 从模组文件夹中删除 config.json 以恢复默认设置。
- 提交错误报告?请附上您的 SMAPI 日志以及您的分辨率、窗口模式、预设和处理目标。这些通常足以让我弄清楚出了什么问题。
为星露谷物语社区制作:xzqute
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。