全能模拟器RetroArch内置着色器与滤镜指南
前言
RetroArch 有两套独立的画面后处理:视频滤镜(CPU)和着色器(GPU)。
入口与目录不同,不是别称。
日常优先用着色器;只需轻量全局效果、或 GPU 较弱时再考虑视频滤镜。
二者不宜叠加强效果,开着色器时视频滤镜宜设为 NULL。
概念
| 视频滤镜 | 着色器 | |
|---|---|---|
| 菜单 | 设置 → 视频 → 视频滤镜 | 快捷菜单 → 着色器(须先进游戏) |
| 目录 | filters/video/*.filt + 同名 .dll |
shaders/shaders_slang/*.slangp(Vulkan) |
| 处理 | CPU,全局生效 | GPU,可按核心 / 目录 / 单游戏保存 |
| 数量 | 本版约 62 个 | 本版 slang 预设 1800+ 个 |
另:
设置 → 视频 → 缩放 → 双线性过滤可以和滤镜组合使用,但开着色器时建议关闭,避免双重模糊。
着色器格式须与视频驱动对应:Vulkan 用 .slangp,OpenGL 用 .glslp(shaders_glsl/)。
目录与入口
资源在 retroarch.exe 同级。
首次运行生成 retroarch.cfg 保存滤镜等设置。
与画面相关的目录结构如下。
1 | RetroArch-Win64/ |
视频滤镜:主界面 设置 → 视频 → 视频滤镜 选取,清除选 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 |
— | 合并像素取深色,减脏边 | 半透明、渐变场景 | ★★☆☆☆ |
推荐度为综合日常使用的主观参考:★★★★★ 优先尝试,★★☆☆☆ 仅特殊场景或备选。
- 最保真:
Normal2x+ 整数缩放 + 关双线性。 - 均衡:
Scale2x或Super2xSaI。 - 更锐:
2xBR;更柔:SuperEagle。 - 只要快:
EPX或LQ2x。
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_Custom 及 pseudo_* 系列 |
自定义 / 伪 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-easymode 或 zfast_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 个预设。
这里的「抗锯齿」分两类,用途差别很大,不要混用。
两类抗锯齿
| 类型 | 代表预设 | 原理 | 适合 |
|---|---|---|---|
| 后期抗锯齿 | fxaa、smaa |
在已渲染画面上抹平高对比边缘(类似 3D 游戏的 FXAA / SMAA) | PS1、N64、PSP、DC 等 3D 游戏 |
| 像素抗锯齿 | reverse-aa、advanced-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 硬边、纹理锯齿时,可试 fxaa 或 aa-shader-4.0。
不要给 FC、SFC 等纯 2D 像素游戏套 FXAA / SMAA——会把像素边缘抹糊,不如 xBR 或 reverse-aa。
像素抗锯齿(2D 向)
| 预设 | 说明 |
|---|---|
reverse-aa.slangp |
先 2x 放大 + 反向抗锯齿算法,再 bicubic 铺满窗口;注释写明 best at 2x scale |
advanced-aa.slangp |
2x 放大 + 高级 AA,再 bicubic 拉伸,比 reverse-aa 更平滑 |
2D 游戏放大后斜线、曲线有「台阶感」时可试。
若已用 hq2x、xBR 等插值放大,一般不必再叠 anti-aliasing 预设,以免过度模糊。
和 edge-smoothing / interpolation 的区别
interpolation/、edge-smoothing/里的 xBR、HQx、scale2x:放大时顺便平滑边缘,是一体化的像素缩放。anti-aliasing/里的 FXAA、SMAA:不改变分辨率,只在最终画面上做后期抹边。anti-aliasing/里的 reverse-aa:专给 2D 像素图做放大抗锯齿,和 xBR 思路不同,效果更偏「减台阶」而非「智能插值」。
选用建议
- 3D 游戏:
fxaa(轻)或aa-shader-4.0(带锐化);可与轻量crt-easymode组合,重型 CRT 慎用。 - 2D 像素:优先
interpolation/的 xBR / HQx;仍有锯齿再试reverse-aa,避开 FXAA / SMAA。 - 性能: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)。
这和预设文件名里的 scale2x、hq4x 不是同一层意思,容易搞混。
两个概念
- 算法名(如
scale2x.slangp):决定「怎么算新像素」——边缘怎么插、扫描线怎么画。 - 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 | shader0 = scale2x.slang # 算法:Scale2x |
最后一 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 倍放大,应直接选
hq4x、scalefx等针对 4x 的预设,而不是在scale2x上硬叠倍数。
和 CRT 预设的关系
CRT 类预设(如 crt-easymode)最后一 pass 常设为 viewport(铺满窗口),前面的 pass 可能是 1x 或 2x。
改倍数主要影响扫描线粗细、中间缓冲区分辨率,不是「CRT 效果叠 2 遍」。
乱改容易导致扫描线过密/过疏或性能骤降。
实用建议
- 普通使用:加载预设即可,别动 Pass 缩放,改 着色器参数 更安全。
- 必须改倍数时:改完点 应用更改(Apply Changes)才会重建着色器链。
- 想要更高倍数:换
hq3x/hq4x等高倍预设,比在低倍预设上叠 Pass 更靠谱。 - Pass 缩放与 设置 → 视频 → 整数缩放 是两套机制;整数缩放是 RetroArch 窗口层面的放大,着色器 Pass 缩放发生在 GPU 渲染链内部。
选用与保存
按平台
| 平台 | 推荐 |
|---|---|
| FC / SFC / MD | crt-easymode 或 scanlines/ |
| PS1 | crt-consumer、crt-geom |
| GB / GBC / GBA | handheld/gameboy* |
| PSP / N64 / DC | 关闭,或 fxaa / zfast_crt |
| 街机 | crt-easymode、轻量 scanlines |
保存(快捷菜单 → 着色器)
- 保存全局预设:所有游戏默认。
- 保存核心预设:仅当前模拟核心(如
gambatte、bsnes)。 - 保存内容目录预设:对 ROM 所在文件夹生效。
- 保存游戏预设:仅当前 ROM。
建议:视频滤镜保持 NULL,按平台保存核心或目录着色器预设。
少数游戏单独存游戏预设即可。
问题
为什么 CPU 视频滤镜有时比着色器更好看
实测 CPU 放大滤镜比 GPU 着色器更清晰,并不反常。
文章前文写「着色器效果更强」是泛化结论;具体观感取决于缩放链路与设置是否对齐。
很多放大类着色器预设(例如 scale2x.slangp)结构是:
- Pass 0:2x 像素放大(Scale2x / xBR 等)
- Pass 1:用 bicubic 等算法拉伸到整个窗口(
scale_type = viewport)
第二 pass 会再插值一次,像素边缘会被抹软。
CPU 视频滤镜通常只做一次放大,再配合 RetroArch 的整数缩放,链路更短,反而更「硬、更清」。
若仍觉得 CPU 放大滤镜更合适,可继续用 Scale2x、2xBR 等;着色器保持 NULL 即可。
总结
视频滤镜
- 入口:设置 → 视频 → 视频滤镜;目录
filters/video/;CPU 处理,全局生效。 - 设置 → 视频 → 缩放 → 双线性过滤可以和滤镜组合使用
- 放大:
Scale2x、2xBR优先(★★★★★);Normal2x保真;SuperEagle偏柔。 - CRT:
Scanline2x,Phosphor2x(不推荐CPU 开销大)低配怀旧可试。 - NTSC:
Blargg_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 视频滤镜。