全能模拟器RetroArch内置着色器与滤镜指南

前言

RetroArch 有两套独立的画面后处理:视频滤镜(CPU)和着色器(GPU)。
入口与目录不同,不是别称
日常优先用着色器;只需轻量全局效果、或 GPU 较弱时再考虑视频滤镜。
二者不宜叠加强效果,开着色器时视频滤镜宜设为 NULL

概念

视频滤镜 着色器
菜单 设置 → 视频 → 视频滤镜 快捷菜单 → 着色器(须先进游戏)
目录 filters/video/*.filt + 同名 .dll shaders/shaders_slang/*.slangp(Vulkan)
处理 CPU,全局生效 GPU,可按核心 / 目录 / 单游戏保存
数量 本版约 62 个 本版 slang 预设 1800+ 个

另:

设置 → 视频 → 缩放 → 双线性过滤可以和滤镜组合使用,但开着色器时建议关闭,避免双重模糊。

着色器格式须与视频驱动对应:Vulkan 用 .slangp,OpenGL 用 .glslpshaders_glsl/)。

目录与入口

资源在 retroarch.exe 同级。
首次运行生成 retroarch.cfg 保存滤镜等设置。
与画面相关的目录结构如下。

1
2
3
4
RetroArch-Win64/
├── filters/video/ # 视频滤镜(.filt + .dll)
├── shaders/shaders_slang/ # 着色器(.slangp,按子目录分类)
└── overlays/ # 边框叠层,与滤镜/着色器无关

视频滤镜:主界面 设置 → 视频 → 视频滤镜 选取,清除选 NULL

着色器:进游戏后 快捷菜单 → 着色器 → 加载预设;M / N 切换,, 开关。

视频滤镜

本版 filters/video/ 共 62 个预设,大致分五类:放大、CRT / 扫描线、NTSC 色差、掌机点阵、专用缩放。

放大滤镜

整数放大(多为 2 倍),减轻纯拉伸锯齿;算法不同,风格差异明显。

滤镜 倍数 特点 适合 推荐度
Scale2x 2x 改进 EPX,边缘判断更好 2D 游戏通用入门 ★★★★★
2xBR 2x 边缘感知,比 SaI 系更锐 清晰又不太「方块」 ★★★★★
Normal2x 2x 最近邻块放大,像素最「方」,边缘硬 原汁原味像素 + 整数缩放 ★★★★☆
Super2xSaI 2x 2xSaI 增强版 比 2xSaI 更常用 ★★★★☆
SuperEagle 2x SaI 系细化,细节保留好 像素 RPG、动作 2D ★★★★☆
EPX 2x 经典边缘扩展,速度快 低配、快速试效果 ★★★☆☆
2xSaI 2x 带插值,斜线更平滑,略糊 斜线多的 2D ★★★☆☆
Grid2x / Grid3x 2x / 3x 放大同时画网格线 强调点阵屏 ★★★☆☆
Normal2x_Width / Normal2x_Height 2x 只放大宽或高 非方形像素比例 ★★☆☆☆
Normal4x 4x 最近邻 4 倍块放大 小窗口一次性放到较大尺寸 ★★☆☆☆
LQ2x 2x 低质量快速版,开销小 CPU 吃紧 ★★☆☆☆
Darken 合并像素取深色,减脏边 半透明、渐变场景 ★★☆☆☆

推荐度为综合日常使用的主观参考:★★★★★ 优先尝试,★★☆☆☆ 仅特殊场景或备选。

  1. 最保真Normal2x + 整数缩放 + 关双线性。
  2. 均衡Scale2xSuper2xSaI
  3. 更锐2xBR更柔SuperEagle
  4. 只要快EPXLQ2x

CRT 与扫描线

在放大的同时叠加老式显像管效果,不单是清晰度处理。

滤镜 说明
Phosphor2x 2 倍放大 + 磷光扫描线,CRT 电视感强,怀旧首选
Scanline2x 2 倍放大 + 横扫描线,比 Phosphor 轻,线条感更直白

适合 FC、SFC、MD 等 2D 主机。
CPU 开销高于纯放大,高分辨率或 3D 游戏慎用。
着色器里 crt-easymode 效果更丰富,PC 上更推荐着色器;低配或只想全局一键时用 CPU 滤镜。

NTSC 色差

基于 Blargg NTSC 库,模拟美式电视信号下的色彩与模糊,不是简单扫描线。

滤镜 说明
Blargg_NTSC_SNES_Composite 复合视频(AV),色散最明显,最「糊」最复古
Blargg_NTSC_SNES_S-Video S 端子,清晰度介于 Composite 与 RGB 之间
Blargg_NTSC_SNES_RGB RGB 信号,相对最清晰,仍有 NTSC 味
Blargg_NTSC_SNES_RF 射频天线,干扰感强
Blargg_NTSC_SNES_Custompseudo_* 系列 自定义 / 伪 Amiga、MD、PCE 等配色,同一引擎不同参数

适合 SNES、部分 MD / PCE 游戏追求当年美式电视观感。
CPU 负担较重,不适合 PSP、N64 等 3D 平台。
同类效果在着色器 ntsc/pal/ 目录下有 GPU 版,可调参数更多。

掌机点阵

模拟 Game Boy 等小屏的格子、偏色,放大倍数通常为 3x 或 4x。

Dot_Matrix 系列(通用点阵网格 + GB 配色)

滤镜 说明
Dot_Matrix_3x / Dot_Matrix_4x 3 / 4 倍放大 + 点阵网格
Dot_Matrix_*_Dark_Grid 深色网格线
Dot_Matrix_*_GB_Greenscale_Grid 经典 GB 绿屏
Dot_Matrix_*_GB_DMG_Grid 原版 GB 灰阶
Dot_Matrix_*_GB_Light / Pocket / TI-83 不同机型偏色

Gameboy 系列(整屏 GB 调色,网格较弱)

滤镜 说明
Gameboy3x_Greenscale / Gameboy4x_Greenscale 绿屏,3x / 4x
Gameboy3x_DMG / Gameboy4x_DMG 灰阶 DMG
Gameboy3x_Light / Pocket / TI-83 GBL、GBP 等机型色调

适合 GB / GBC ROM。
GBA 更建议用着色器 handheld/gameboy-advance-dot-matrix.slangp
Dot_Matrix 网格感强,Gameboy 系列色调更整。

专用缩放

非通用 2x 算法,按固定分辨率或比例拉伸,给特定平台用。

滤镜 说明
Upscale_240x160-320x240 GBA 240×160 → 约 320×240 区域
Upscale_256x-320x240 256 宽 → 320×240
Upscale1.5x / Upscale1.66x_fast 非整数倍快速放大
Upscale_*_Stretched / *-mix 拉伸或混合模式变体

窗口比例与目标平台不一致时可试。
一般玩家优先 整数缩放 + 通用 2x 放大 或着色器,专用滤镜作补充。

着色器

GPU 处理,效果远多于视频滤镜,可在 着色器参数 里实时调节。
本版 shaders_slang/ 约 1800+ 个 .slangp 预设,按子目录分类浏览。

主要目录

目录 用途
crt/ 显像管:扫描线、曲面、晕影、磷光
handheld/ 掌机 LCD:GB、GBC、GBA、NGPC 等
scanlines/ 轻量扫描线,比完整 CRT 省性能
interpolation/ GPU 放大:xBR、HQx、scalefx 等
pixel-art-scaling/ 像素艺术专用缩放
edge-smoothing/ 边缘平滑
anti-aliasing/ 抗锯齿:3D 后期 AA 与 2D 像素抗锯齿
ntsc/pal/ 电视制式色差
deinterlacing/ 隔行去交错
film/vhs/ 胶片颗粒、录像带风格
sharpen/blurs/ 锐化、模糊
bezel/border/ 内嵌边框(与 overlays 不同)
presets/ 组合预设快捷入口
misc/test/ 杂项 / 测试

OpenGL 驱动用 shaders_glsl/,目录类似(hqx/xbr/crt/ 等),扩展名为 .glslp

CRT 显像管

目录 crt/,模拟老式电视机、显示器。

预设 说明
crt-easymode.slangp 轻量 CRT,扫描线 + 轻微曲面,入门首选
crt-consumer.slangp 家用电视风格,适中
crt-geom.slangp 经典几何曲面 CRT
crt-lottes.slangp Timothy Lottes 系,可调参数多
crt-royale.slangp 多 pass 高质量,效果最好,最吃 GPU
zfast_crt.slangp 极简 CRT,低配友好

适合 FC、SFC、MD、PS1、街机。
低配先试 crt-easymodezfast_crt,勿直接上 crt-royale

掌机 LCD

目录 handheld/

预设 说明
gameboy.slangp 经典 GB 绿屏
gameboy-light.slangp GBL 偏亮
gameboy-dark-mode.slangp 深色背景 GB
gameboy-color-dot-matrix.slangp GBC 点阵
gameboy-advance-dot-matrix.slangp GBA 液晶网格
authentic_gbc.slangp 偏真实的 GBC 配色

比 CPU 滤镜 Dot_Matrix_* 可调性更好,GB / GBC / GBA 优先用着色器。

放大与像素

目录 interpolation/pixel-art-scaling/edge-smoothing/

类型 说明
xBR 系列 边缘导向放大,比 CPU 2xBR 更精细
HQx 系列 经典 hq2x / hq3x / hq4x GPU 版
scalefx、omniscale 等 高阶像素缩放
pixellate 保留硬像素块

适合 2D 像素游戏追求清晰。
使用时关闭 双线性滤波视频滤镜,避免双重模糊。

抗锯齿

目录 anti-aliasing/,本版约 10 个预设。
这里的「抗锯齿」分两类,用途差别很大,不要混用。

两类抗锯齿

类型 代表预设 原理 适合
后期抗锯齿 fxaasmaa 已渲染画面上抹平高对比边缘(类似 3D 游戏的 FXAA / SMAA) PS1、N64、PSP、DC 等 3D 游戏
像素抗锯齿 reverse-aaadvanced-aa 放大像素图时减少锯齿台阶,尽量保留像素块 FC、SFC、GBA 等 2D 像素游戏

后期抗锯齿(3D 向)

预设 说明
fxaa.slangp 最快,1x 运行,轻微模糊边缘;3D 游戏入门首选
fxaa+linear.slangp FXAA + 线性采样,略柔和
smaa.slangp 质量更好,3 pass + 查找纹理,比 FXAA 清晰但更重
smaa+sharpen.slangp SMAA 后再锐化,减轻糊感
smaa+linear.slangp SMAA + 线性采样
aa-shader-4.0.slangp 针对低内部分辨率 3D,带来锐化 pass,可调 INTERNAL_RES
aa-shader-4.0-level2.slangp 4.0 的加强版,2 pass,效果更强、开销更大

PS1 / N64 画面有 polygon 硬边、纹理锯齿时,可试 fxaaaa-shader-4.0
不要给 FC、SFC 等纯 2D 像素游戏套 FXAA / SMAA——会把像素边缘抹糊,不如 xBRreverse-aa

像素抗锯齿(2D 向)

预设 说明
reverse-aa.slangp 先 2x 放大 + 反向抗锯齿算法,再 bicubic 铺满窗口;注释写明 best at 2x scale
advanced-aa.slangp 2x 放大 + 高级 AA,再 bicubic 拉伸,比 reverse-aa 更平滑

2D 游戏放大后斜线、曲线有「台阶感」时可试。
若已用 hq2xxBR 等插值放大,一般不必再叠 anti-aliasing 预设,以免过度模糊。

和 edge-smoothing / interpolation 的区别

  • interpolation/edge-smoothing/ 里的 xBR、HQx、scale2x:放大时顺便平滑边缘,是一体化的像素缩放。
  • anti-aliasing/ 里的 FXAA、SMAA:不改变分辨率,只在最终画面上做后期抹边。
  • anti-aliasing/ 里的 reverse-aa:专给 2D 像素图做放大抗锯齿,和 xBR 思路不同,效果更偏「减台阶」而非「智能插值」。

选用建议

  1. 3D 游戏fxaa(轻)或 aa-shader-4.0(带锐化);可与轻量 crt-easymode 组合,重型 CRT 慎用。
  2. 2D 像素:优先 interpolation/ 的 xBR / HQx;仍有锯齿再试 reverse-aa避开 FXAA / SMAA
  3. 性能:FXAA 最轻 → SMAA → aa-shader-4.0-level2 最重;2D 的 reverse-aa / advanced-aa 需 2x pass,中配可跑。

扫描线与制式

目录 说明
scanlines/ 只加横线,开销小,想要一点 CRT 味时用
ntsc/ NTSC 信号模拟,对应 CPU 的 Blargg 系
pal/ PAL 制式,欧洲电视风格
deinterlacing/ PS2、DC 等隔行游戏去闪烁

风格与其他

目录 说明
film/ 胶片颗粒、老电影感
vhs/ 录像带噪点、色偏
sharpen/ 后期锐化,3D 游戏可轻微使用
subframe-bfi 黑帧插入,改善 LCD 拖影(部分预设)
hdr/ HDR 显示相关(需 HDR 屏)

3D 游戏(PSP、N64、DC)建议关闭着色器,或只用 sharpen/ 轻微锐化、zfast_crt 轻量扫描线。

Pass缩放倍数

加载预设后,快捷菜单 → 着色器 里还能改每个 着色器 Pass 的缩放倍数(如 1x、2x、3x)。
这和预设文件名里的 scale2xhq4x 不是同一层意思,容易搞混。

两个概念

  1. 算法名(如 scale2x.slangp):决定「怎么算新像素」——边缘怎么插、扫描线怎么画。
  2. Pass 缩放倍数:决定「这一遍渲染输出多大」——相对游戏原始分辨率(或上一 pass 输出)放大几倍。

倍数怎么叠

  • 每个 Pass 各有一个缩放倍数,连乘得到总放大倍率。
  • 第 1 pass 设 2x、第 2 pass 也设 2x → 中间画面相当于原始分辨率的 4 倍(2×2)。
  • 最后一 pass 通常拉到全屏(相对窗口 viewport 缩放),之前各 pass 的倍数才是「像素级放大」的关键。

以 scale2x 为例

shaders_slang/edge-smoothing/scalenx/scale2x.slangp 预设里已经写死了 pass 0 为 2 倍:

1
2
3
4
5
shader0 = scale2x.slang      # 算法:Scale2x
scale_x0 = 2.0 # pass 0 输出 = 原始画面 2 倍宽
scale_y0 = 2.0 # pass 0 输出 = 原始画面 2 倍高
shader1 = bicubic.slang # pass 1 再拉到窗口大小
scale_type1 = viewport

最后一 pass 的 viewport 拉伸会再次插值,是着色器有时不如 CPU 放大滤镜的主要原因之一(详见下文「问题」一节)。

因此:

  • 直接加载 scale2x.slangp,pass 0 已经是 2 倍,一般不必再改
  • 若在 pass 0 把 2x 改成 4x:缓冲区分辨率变 4 倍,但 scale2x 算法本身只按 2x 规则填像素,多出来的区域可能被拉伸或发糊,不等于「Scale2x 做两次」
  • 新增一个 pass 并设 2x(且 pass 0 仍是 2x):总倍数才接近 4 倍(2×2),但效果取决于第二 pass 用的什么算法,不一定等于 scale4x 预设。
  • 想要 4 倍放大,应直接选 hq4xscalefx 等针对 4x 的预设,而不是在 scale2x 上硬叠倍数。

和 CRT 预设的关系

CRT 类预设(如 crt-easymode)最后一 pass 常设为 viewport(铺满窗口),前面的 pass 可能是 1x 或 2x。
改倍数主要影响扫描线粗细、中间缓冲区分辨率,不是「CRT 效果叠 2 遍」。
乱改容易导致扫描线过密/过疏或性能骤降。

实用建议

  1. 普通使用:加载预设即可,别动 Pass 缩放,改 着色器参数 更安全。
  2. 必须改倍数时:改完点 应用更改(Apply Changes)才会重建着色器链。
  3. 想要更高倍数:换 hq3x / hq4x 等高倍预设,比在低倍预设上叠 Pass 更靠谱。
  4. Pass 缩放与 设置 → 视频 → 整数缩放 是两套机制;整数缩放是 RetroArch 窗口层面的放大,着色器 Pass 缩放发生在 GPU 渲染链内部。

选用与保存

按平台

平台 推荐
FC / SFC / MD crt-easymodescanlines/
PS1 crt-consumercrt-geom
GB / GBC / GBA handheld/gameboy*
PSP / N64 / DC 关闭,或 fxaa / zfast_crt
街机 crt-easymode、轻量 scanlines

保存快捷菜单 → 着色器

  1. 保存全局预设:所有游戏默认。
  2. 保存核心预设:仅当前模拟核心(如 gambattebsnes)。
  3. 保存内容目录预设:对 ROM 所在文件夹生效。
  4. 保存游戏预设:仅当前 ROM。

建议:视频滤镜保持 NULL,按平台保存核心或目录着色器预设。
少数游戏单独存游戏预设即可。

问题

为什么 CPU 视频滤镜有时比着色器更好看

实测 CPU 放大滤镜比 GPU 着色器更清晰,并不反常。
文章前文写「着色器效果更强」是泛化结论;具体观感取决于缩放链路与设置是否对齐。

很多放大类着色器预设(例如 scale2x.slangp)结构是:

  • Pass 0:2x 像素放大(Scale2x / xBR 等)
  • Pass 1:用 bicubic 等算法拉伸到整个窗口(scale_type = viewport

第二 pass 会再插值一次,像素边缘会被抹软。
CPU 视频滤镜通常只做一次放大,再配合 RetroArch 的整数缩放,链路更短,反而更「硬、更清」。

若仍觉得 CPU 放大滤镜更合适,可继续用 Scale2x2xBR 等;着色器保持 NULL 即可。

总结

视频滤镜

  • 入口设置 → 视频 → 视频滤镜;目录 filters/video/;CPU 处理,全局生效
  • 设置 → 视频 → 缩放 → 双线性过滤可以和滤镜组合使用
  • 放大Scale2x2xBR 优先(★★★★★);Normal2x 保真;SuperEagle 偏柔。
  • CRTScanline2xPhosphor2x(不推荐CPU 开销大)低配怀旧可试。
  • NTSCBlargg_NTSC_SNES_*,SNES 美式电视味,CPU 开销大。
  • 掌机Dot_Matrix_*Gameboy3x_*,GB 绿屏 / 点阵。
  • 专用缩放Upscale_240x160-* 等,按平台选用。
  • 不用时选 NULL

着色器

  • 入口:游戏中 F1 → 快捷菜单 → 着色器;目录 shaders/shaders_slang/;GPU 处理,可按核心 / 目录 / 单游戏保存。
  • CRT:2D 主机试 crt-easymode;重型 crt-royale 低配慎用。
  • 掌机:GB / GBA 试 handheld/gameboy*,优于 CPU 滤镜。
  • 放大:xBR、HQx 在 interpolation/,效果强于 CPU 放大滤镜。
  • 抗锯齿:3D 用 fxaa;2D 用 reverse-aa,勿给像素游戏套 FXAA / SMAA。
  • Pass 缩放:倍数连乘(2x+2x=4x);scale2x 预设已含 2x,要高倍请换 hq4x 等预设。
  • 驱动须与格式匹配:Vulkan → .slangp,OpenGL → .glslp

共用注意

  • 滤镜与着色器是两套独立功能不要叠加强效果;开着色器时视频滤镜保持 NULL
  • 日常优先着色器;仅要轻量全局效果或 GPU 较弱时再考虑 CPU 视频滤镜。