📖 本文由 Batocera 官方 Wiki 翻译整理,内容可能随版本更新而变化。


着色器组合(Shader Sets)

这个选项允许你应用各种着色器组合(Shader Sets),也就是我们常说的视频滤镜(Video Filters)。通过这些滤镜,你可以让现代高清屏幕呈现出 80 或 90 年代老电视特有的那种复古质感。

生活化类比:这就像是给你的游戏画面加了一层“美颜滤镜”。不过,这个滤镜不是为了磨皮变白,而是为了模拟老式大头电视(CRT)那种独特的颗粒感和扫描线,让画面瞬间回到童年的客厅。

下面的截图展示了一款世嘉 MD(SEGA Megadrive)游戏在不同滤镜下的渲染效果对比(从左至右依次为:无滤镜 / 扫描线滤镜 / 画面增强滤镜):

[此处展示 shaders.jpeg 效果图]

系统中已经内置了几种默认的着色器组合供你选择:

常用着色器套餐详解

Batocera 为你准备了多种风格的画面“调色盘”。为了让你选到最满意的那一款,我们把每种着色器(Shader)的特性整理如下:

^ 着色器套装 ^ 功能描述 ^ 预览图 ^
| — | — | — |
| 无(开启平滑游戏) | 无滤镜,无扫描线,但开启了双线性过滤(Bilinear Filtering)产生的模糊感。 这是系统的默认配置。它支持 Game Boy 上色功能,虽然你可以手动调色,但【注意】:同时开启上色和着色器通常效果不佳。 | {{ :shader1-smw-smooth-games.png?direct}} |
| 无(关闭平滑游戏) | 完全原始的像素。 使用邻近插值(Nearest-neighbor)缩放。由于老游戏多为 480p,无法在 1080p 屏幕上整除,这会导致某些像素行或列看起来比其他的“粗”一点。同样支持 Game Boy 自动上色。 | {{ :shader1-smw-none.png?896&direct}} |
| 曲面(Curvature) | 怀旧的大头电视效果。 提供扫描线并模拟屏幕弯曲。如果是模拟掌机,系统会自动取消弯曲效果,因为掌机屏幕是平的。 | {{ :shader2-smw-curvature.png?896&direct}} |
| 增强(Enhanced) | 现代高清感。 通过模糊处理和提升分辨率(Upscaling)让画面更平滑,更符合现代玩家的视觉习惯。 | {{ :shader3-smw-enhanced.png?896&direct}} |
| 扁平发光(Flatten-glow) | 让画面“亮”起来。 模拟 CRT 时会让高光产生晕染,非常适合黑色背景的街机游戏。但【提示】:玩色彩丰富的游戏时,这可能会让你觉得有点眼晕。模拟掌机时,它会弱化前后景对比,模拟早期非背光屏的效果。 | {{ :shader4-smw-flatten-glow.png?896&direct}} |
| 复古(Retro) | 大像素模式。 模拟 2019 年左右 Steam 上流行的那种极简 8 位(8-bit)风格。在现代 3D 平台(如 PS2、GameCube)上使用效果最震撼。 | {{ :shader5-smw-retro.png?896&direct}} |
| 扫描线(Scanlines) | 最真实的 80/90 年代体验。 为 LCD 屏幕模拟老式电视的水平扫描线。针对掌机,它会自动切换为“网格(Grid)”效果,还原老式液晶屏的质感。 | {{ :shader6-smw-scanlines.png?896&direct}} |
| 轻量级(Zfast) | 高性能算法。 提供较浅的扫描线(类似蜂窝效果),对硬件资源消耗极低,是老旧机型的福音。 | {{ :shader7-smw-zfast.png?896&direct}} |
| 锐利双线性(sharp-bilinear-simple) | 默认首选。 比标准双线性过滤更锐利、更中性。从 v32 版本起成为默认选项。 | {{ :shader8-smw-sharpbilinearsimple.png?896&direct}} |
| 超级边框(Mega-Bezel) | 顶级的沉浸式模拟。 它可以模拟出整台老电视的外壳,甚至带动态反射!【注意】:极度消耗资源,仅限高端 PC 使用。安装步骤见下文。 | {{ :shader-cd1-smw-megabezel.png?896&direct}} |
| Koko-AIO 沉浸式边框 | 全方位的 CRT 模拟。 包含精美的反射边框和沉浸式光效。令人惊喜的是,它性能优化极佳,在 Intel N100 等入门 CPU 上也能满速运行。 | {{ :shader-cd2-smw-kokoaio.png?896&direct}} |


【进阶教程】如何开启高级边框着色器

如果你想体验 Mega-BezelKoko-AIO 这种能“变出电视机外壳”的酷炫效果,请按照以下步骤操作:

  • 第一步:下载资源包
    内容下载器(Content Downloader) 中找到对应的安装包并下载。
  • 第二步:调整图像引擎
    进入 游戏设置(GAME SETTINGS),将 图形 API(Graphics API) 设置为 GLCoreVulkan
  • 第三步:固定画面比例
    游戏宽高比(GAME ASPECT RATIO) 强制设置为 “全屏(Full)”,否则边框无法正常显示。
  • 第四步:清理装饰层
    对于 Koko-AIO,需要将 装饰集(DECORATION SETS) 关闭(设置为 NONE),以防与着色器冲突。

生活化类比:这就像是给你的显示器穿了一件“全包式机甲”。不仅让画面变了,连显示器四周都能“幻化”成老旧电视的边框。

【提示】在使用 Mega-Bezel 时,如果发现某些系统(如 Wii 或 GC)画面倒置了,只需进入着色器选项开启“垂直翻转(vertical flip)”并保存即可。

如果你觉得所有的滤镜都太花哨,也可以直接选择 “无”(None)

生活化类比:这就像是“素颜出镜”。虽然没有了那种复古的韵味,但它对电脑硬件的负担最轻,是追求极致运行速度(性能)的首选方案。

【注意】这些着色器主要适用于 Libretro 核心(Libretro Cores) 以及少数特定的独立模拟器。大多数大型独立模拟器(例如 Cemu、RPCS3、Dolphin 等)由于技术架构不同,并不兼容这些着色器,且未来也不会改变。


进阶:如何使用 RetroArch 内置的其他着色器?

如果你对 Batocera 预设的套餐不满意,想要为某个系统甚至某款特定游戏定制专属滤镜,可以通过修改配置文件来实现。

  • 第一步:定位配置文件
    找到并打开 /userdata/system/batocera.conf 文件。
  • 第二步:添加自定义代码
    找到对应系统的渲染器着色器(renderer.shader)项,填入你想要的着色器相对路径。

    【注意】填写路径时不要包含文件后缀名(比如不要带 .glslp.slangp)。

参考以下代码示例:

SNES-renderer.shader=vhs/ntsc-vcr
MAME-renderer.shader=CRT/CRT-pi-curvature
NES["Xexyz (USA).zip"]-renderer.shader=vhs/ntsc-vcr


【提示】在哪里寻找现成的着色器?

系统内所有的着色器预设文件都存放在 /usr/share/batocera/shaders/ 文件夹及其子目录下。你可以去那里翻翻看有没有你心仪的那一款。

如果我想用从网上下载的自定义着色器呢?

如果我想使用从网上下载的自定义着色器呢?

如果你在网上发现了一些 RetroArch 官方包里没有的酷炫着色器,完全可以将它们收入囊中。

  • 第一步:创建存放目录
    手动创建一个名为 /userdata/shaders/ 的文件夹。
  • 第二步:放入文件
    将下载好的着色器文件丢进这个目录。
  • 第三步:配置文件关联
    完成以上操作后,你就可以像前文提到的那样,在 batocera.conf 中直接引用这些自定义着色器了。

生活化类比:这就像是给你的美颜相机安装“第三方滤镜包”。系统默认的滤镜要是看腻了,你自己去外面找的稀奇古怪的效果也能通过这种方式“装配”上去。我知道,你现在肯定想给所有游戏都加上那个怀旧感拉满的“录像带/电视信号(vhs/ntsc-vcr)”滤镜,对吧?


【注意】关于已知的小缺陷

目前系统中存在一个微小的 程序错误(Bug):只有通用着色器(common-shader)系列可以正常使用。你可以去相关开源列表(https://github.com/libretro/common-shaders)查看支持的名单。Batocera 通常会同步最新稳定版中的可用内容。

不过请放心,这个限制仅针对在 batocera.conf 中使用 .shader 键指定文件的情况,并不影响你自己创建的着色器组合(Sets)。另外,你依然可以进入 RetroArch 界面手动挑选你喜欢的着色器。


进阶:如何打造专属的“着色器组合”?

如果你觉得通过配置文件一行行修改太麻烦,或者觉得直接从系统的菜单里勾选更爽,你完全可以定义一套属于自己的“组合套餐”。

这些示例完美展示了“着色器组合”的强大能力!通过自定义配置,你可以像调色师一样定制专属的游戏画面风格。


如何创建自己的着色器组合套餐

如果你想在菜单中直接选择自己设计的滤镜方案,请按照以下步骤操作:

  • 第一步:建立组合文件夹
    /userdata/shaders/configs/ 目录下新建一个文件夹,文件夹的名字就是你在系统菜单中看到的组合名称(例如:my-own-custom-shader)。
  • 第二步:编写配置文件
    在刚创建的文件夹里,新建一个名为 rendering-defaults.yml 的文本文件。

    【提示】如果你使用的是性能较弱的单板计算机(SBC)(例如树莓派 Zero),文件名应改为 rendering-defaults-low-GPU.yml
    * 第三步:写入配置参数
    打开该文件,将以下内容粘贴进去:

SHARP-BILINEAR-SIMPLE

default:

shader 项会影响 RetroArch 模拟器的着色器效果

shader: interpolation/sharp-bilinear-simple

scanline 项会影响 fba2x 模拟器的扫描线效果

scanline: false

  • 第四步:指定你心仪的滤镜
    将上面代码中的 interpolation/sharp-bilinear-simple 替换为你想要的着色器路径。

    生活化类比:这就像是在餐厅点餐,你先给套餐起个名字(文件夹名),然后拿一张菜单(.yml文件),在上面写清楚主菜(着色器路径)和配菜(扫描线开关)。
    * 第五步:获取着色器名称并测试
    你可以进入游戏的 快捷菜单(Quick Menu)(按 [HOTKEY] + 南键/B键 组合键)来查看系统内置的所有着色器名称。修改保存后,在 Batocera 中更新游戏列表以刷新选项,然后尽情测试你的杰作吧!


结构示例

最后,你的文件夹结构看起来应该是这样的:


/userdata/shaders/
├─ configs/
│ ├─ curvature/ (内置曲面组合)
│ │ ├─ rendering-defaults-low-GPU.yml
│ │ └─ rendering-defaults.yml
│ └─ my-own-custom-shader/ (你新建的专属组合)
│ └─ rendering-defaults.yml
├─ custom-shader-my-preset-relies-on.slang (你下载的自定义着色器文件)
└─ custom-preset-my-shader-set-relies-on.slangp (你下载的自定义预设文件)

完成设置与生效

当你按照前面的步骤完成所有配置后,只需要最后一步操作即可看到成果:

  • 操作方法:在菜单中选择更新游戏列表(Update Gamelist),或者直接重启系统(Reboot)

之后,你就能在设置菜单中看到亲手创建的专属着色器套餐了。


如何在套餐中使用“外来”着色器?

如果你想在自制的套餐里使用那些 Batocera 没自带的、从网上下载的着色器,方法非常简单:

  • 操作步骤:参考前文提到的“自定义着色器”部分,将文件放入 /userdata/shaders 文件夹。
  • 原理解析:系统非常大方,它会将存放在该目录下的所有着色器文件一视同仁,把它们当成“内置成员”供你随时调用。

玩转更复杂的进阶配置

着色器组合的功能远不止简单的滤镜叠加。你还可以实现更高级的操作,比如:
* 针对特定机型定制:为不同的机型(System-specific)指定不同的画面风格。
* 多重特效并行:同时开启视频平滑处理(Video Smoothing)色彩增强(Colorization)

生活化类比:这就像是从简单的“加个滤镜”进化到了“全套精修”。你不仅能修图,还能针对不同的光线(机型)调整细节,甚至把黑白老照片自动填色,让画面焕发第二春。

如果你想看看“天花板”级别的配置是怎么写的,可以参考官方的配置示例:
点击查看 Batocera 官方着色器配置列表

这些示例是学习如何榨干着色器性能的最佳教科书。


【注意】关于覆盖默认设置

如果你在创建自己的着色器套餐时,起了一个和系统自带套餐一模一样的名字,那么你的配置将会覆盖(Override)掉系统的默认行为。这相当于你给系统默认的“官方套餐”来了一次彻底的改版。


常见问题排查:我的树莓派升级后变卡了?

问:我把树莓派 3(Raspberry Pi 3)或树莓派 4(Raspberry Pi 4)升级到 Batocera v32 之后,游戏性能变差了(变卡)怎么办?

(注:本段为原文档内容索引,具体解决方案请参考相关性能优化章节。)

关于低版本系统(v32)中滤镜效果不佳的修复方法

如果你发现使用“曲面”或“扫描线”滤镜时画面看起来很糟糕,这通常与你的屏幕分辨率有关。

在 Batocera v32 版本中,由于滤镜算法的调整,除了 1920×1080 这种标准的高清分辨率外,在其他分辨率下(比如 4K 电视,或者 OGA、OGS 等屏幕较小的掌机)画面会出现严重的图像伪影(Artifacts),导致显示异常。

生活化类比:这就像是一件“均码”的衣服,只有身材标准的人穿着才好看。如果你太高大(4K 屏幕)或者太瘦小(小屏掌机),这件衣服就会被撑变形或者皱巴巴的,看起来非常不协调。

【提示】这个问题在 Batocera v34 及更高版本中已经得到了彻底修复。如果可能的话,建议直接升级系统。

如果你必须留在 v32 版本,但又想找回旧版本中那种完美的视觉效果,可以通过手动修改配置文件来“强制还原”:


第一步:打开核心配置文件

找到并打开系统的 Batocera.conf 配置文件。

第二步:为模拟器指定旧版滤镜代码

针对每一个你想要修改画面的模拟器(下面以 MAME 为例),在配置文件中手动添加以下指令:

  • 如果你想要找回以前的“曲面”效果:

    MAME-renderer.shader=CRT/fakelottes

  • 如果你想要找回以前的“扫描线”效果:

    MAME-renderer.shader=CRT/CRT-pi

第三步:深度探索更多选择(可选)

如果你希望更精细地挑选自己喜欢的滤镜,可以去系统后台翻阅所有的“存货”。

  • 查看路径/usr/share/Batocera/shaders/
  • 特别推荐:在 /usr/share/Batocera/shaders/CRT/ 目录下,存放着大量专门针对扫描线和曲面效果的着色器(Shaders)

附录:关于着色器的更多进阶技术信息

深入了解:着色器背后的技术细节

着色器(Shaders) 本质上是一小段运行在显卡上的代码,它们专门负责给游戏的画面层叠加各种视觉效果。

生活化类比:如果说游戏画面是“毛坯房”,那么着色器就是不同风格的“软装方案”。有的方案让房间看起来像 80 年代的复古客厅,有的则让它看起来像现代的电竞房。不过,这些装修方案需要配合特定的“施工队(渲染接口)”才能动工。

在 Batocera 的发展史中,渲染接口的支持情况如下:
* v30 版本及以前:只有 OpenGL 这一个“施工队”支持着色器。
* v31 版本开始:新增了对 Vulkan 的支持。现在无论你用 OpenGL 还是 Vulkan,都能享受到精美的画面滤镜。


不同施工队的“装修图纸”格式

根据你选择的视频后端(Video Backend)(也就是渲染接口)不同,着色器的文件格式也不一样:

  • 如果你使用 OpenGL:预设文件后缀为 .glslp,具体的转换代码文件为 .glsl
  • 如果你使用 Vulkan:预设文件后缀为 .slangp,具体的转换代码文件为 .slang

在前面提到的 Batocera.conf 配置文件中,你需要加载的是 .glslp.slangp 这种“预设文件”。

【提示】你可以把这些“预设文件”想象成一张播放列表。它本身不包含复杂的装修代码,而是告诉系统:为了达到最终效果,需要按顺序调用哪些单一的视频转换文件。

值得注意的是,你在配置文件中不需要写后缀名。Batocera 非常智能,它会根据你当前使用的视频后端,自动为你匹配合适的后缀。


兼容性说明

【注意】这些着色器通常只能应用在 Libretro 核心(Libretro Cores) 上。对于那些独立模拟器(Standalone Emulators),它们往往“各行其是”,你需要在该系统的高级选项中查看它们是否自带了专属的着色器或其他画质增强选项。


快捷操作:如何用手柄快速切换着色器?

在游戏运行中快速切换着色器

你可能还不知道,在游戏进行时,其实可以通过手柄快捷键直接切换当前的着色器(Shader)

生活化类比:这就像是你去试衣间买衣服,不需要每次换一件衣服都要走出店门再重新进来。你只需要站在镜子前(游戏中),动动手指就能看到不同的“着装效果”。

  • 快捷键操作:按住 [Hotkey] + [L2] / [R2] 即可循环切换。

【注意】此功能仅适用于 Libretro 核心(Libretro Cores)。需要说明的是,这种方式切换的着色器与 Batocera 菜单里的“着色器组合套餐”不一定完全相同。虽然我们更推荐使用菜单里的“套餐”模式,但这种快捷键切换非常适合用来快速对比不同滤镜的效果,免去了频繁退出和重启游戏的麻烦。


如何添加可供快速切换的着色器?

如果你想把特定的着色器加入这个快捷切换列表,请按照以下步骤手动组织文件结构:

  • 第一步:整理核心滤镜文件
    收集着色器依赖的滤镜/转换代码文件(Filters),也就是那些后缀为 *.glsl*.slang(注意后缀不带字母 p)的文件。
  • 第二步:放入专用子目录
    在 Batocera 系统中,将这些文件复制到 /usr/share/Batocera/shaders/shaders 这个特定的子文件夹内。
  • 第三步:放置预设引导文件
    找到对应的着色器预设文件(Shader Presets),即后缀为 *.glslp*.slangp(注意后缀带有字母 p)的文件,并将它们复制到 /usr/share/Batocera/shaders 根目录下。

文件结构参考

【提示】为了确保系统能正确识别,请务必保证你的文件路径看起来像这样:


/usr/share/Batocera/shaders/
├─ shaders/
│ └─ filter-needed-by-preset.slang (这是核心代码文件)
└─ shader-preset.slangp (这是引导预设文件)

现在,当你使用快捷键切换时,RetroArch 除了轮换系统自带的滤镜外,也会把你刚刚添加的这些着色器预设(Shader Presets)加入循环。

如果你想打造一个完全符合个人口味的“切换清单”,甚至可以删掉目录下其他不喜欢的预设文件。

生活化类比:这就像是在点唱机里加入你喜欢的歌,并删掉那些你不爱听的。这样你按“下一首”时,听到的就全是你的心头好了。

【提示】这样做完全不会干扰你在 EmulationStation 界面(即 Batocera 的主系统菜单)中选择的着色器套餐,两者是相互独立的。


第一步:保存你的修改

由于系统分区的特殊性,完成修改后,请务必在终端执行以下命令:

batocera-save-overlay

这样可以确保你在重启系统后,这些改动不会消失。

【注意】每次当你更新 Batocera 系统时,这些位于系统目录下的自定义修改可能需要重新操作一遍。


进阶:我讨厌“全家桶”套餐,只想用 RetroArch 原生设置!

如果你觉得 Batocera 提供的着色器套餐限制了你的发挥,更倾向于在游戏运行中通过 RetroArch 快捷菜单(Quick Menu) 亲自调试每一项细微参数,那也完全没问题!

  • 操作方法:只需要在 Batocera 的系统设置中,将着色器选项设为 “无(None)” 即可。

这样一来,Batocera 就像一个“甩手掌柜”,不再干涉任何画面渲染逻辑,把所有的控制权都交还给你和 RetroArch。


原文: Shader画质设置完全指南 • 翻译: DIY8 Bot

© 版权声明
评论 抢沙发

请登录后发表评论

    暂无评论内容