Skip to content
hooke007 edited this page Mar 31, 2026 · 107 revisions

用户着色器

点击段标题右侧的emoji可跳转到对应的文件夹

Important

旧版文档 《第三方用户着色器》 大部分内容已过时/存在错误。如有冲突的描述,以下文为准。

本章为用户着色器的基础说明和各族类的适用范围简介;
带参数着色器的使用文档见 《着色器的运行时可调节参数一览》

必要说明

  1. 当你在使用 --glsl-shaders="~~/shaders/xxxx.glsl" 的时候,mpv读取你指定的着色器脚本文件(无扩展名限制)。
    着色器脚本文件通常由多个HOOK块代码构成,每一块HOOK你可以理解成一个“小着色器”,每个“小着色器”前后“串联”协同工作组成这个完整的着色器文件。
  2. 你可以打开一个着色器脚本文件,了解它的首个块指向的纹理 //!HOOK XXX ,这通常决定了整个着色器在渲染流水线中的起始插入或工作的位置。
    用户着色器常见关联的纹理工作排序:(完整内容可稍后进一步阅读 《vo_gpu的着色器处理阶段》
    LUMA ➡️ CHROMA ➡️ NATIVE ➡️ MAINPRESUBMAIN ➡️ POSTKERNEL ➡️ SCALED ➡️ OUTPUT
    不同着色器的如果首个块HOOK的纹理不同,它们会严格按照纹理位置依次工作,不因参数--glsl-shaders指定的顺序而改变;如果二者的首个块HOOK的纹理相同,这通常可以通过前述的参数影响实际的工作流程。

Caution

最好遵守HOOK顺序正确排列着色器顺序,否则仍然可能造成着色器读取的纹理信息的混乱而产生一些意外的变化。

  1. 有的着色器脚本内含有代码段落 //!PARAM XXX ,这表示这个着色器支持在运行时变更内部参数实现不同的效果。具体的操作及文件参数列表可参见置顶的 《着色器的运行时可调节参数一览》
  2. 有的着色器脚本内的块里有触发条件 //!WHEN XXX ,这表示这段HOOK块只在满足所设置的条件时才会触发工作。
    可以通过stats统计信息的第二页查看当前实际工作的块数量,通过工作的块数量可以了解你所指定的着色器是否 未激活/局部/完整激活。

各族简介

Tip

本仓库的所有着色器进行了统一的内部描述格式化,大多数做了一定程度的修改(可能与原开发者的版本表现/质量不一致),有的着色器是自制。
旧版文档中列出了大部分的来源,此处不再赘述。
另有一些推荐的定向用途的着色器未收录,可参见 《未整合的着色器列表》

本仓库的通用变体命名解释:

_2x _x2 放大倍率(数字为宽高的放大系数)
_CMP 该着色器的类型为计算着色器
_FX 带动态效果
_lite _Lite 轻量版/简化版/快速版(并不等价于质量差)
_luma 该着色器的起始工作阶段为 LUMA
_md _ms 该着色器的起始工作阶段为 POSTKERNEL
_rgb _RGB 该着色器的起始工作阶段为 MAIN
_RT 该着色器支持运行时调节内部参数(使用方式参见前文的文档)
_scl 该着色器的起始工作阶段为 SCALED
_vk 须要在mpv中指定图形后端 vulkan

^AA 🔗

非族。仅表示把部分抗锯齿算法归于此条目下。

AXAA MAIN 后处理抗锯齿 FXAA改版
AXAA_md POSTKERNEL --dscale 附加抗锯齿 需要 --correct-downscaling=no
DLAA_RT MAIN 后处理抗锯齿 和英伟达没关系
DLAA_md_RT POSTKERNEL --dscale 附加抗锯齿 需要 --correct-downscaling=no
FAAA_RT MAIN 后处理抗锯齿 FXAA改版
FAAA_md_RT POSTKERNEL --dscale 附加抗锯齿 需要 --correct-downscaling=no
Intel_CMAA2_lite MAIN 后处理抗锯齿 Magpie版
Intel_CMAA2_lite_md POSTKERNEL --dscale 附加抗锯齿 需要 --correct-downscaling=no
SMAA_lite_RT MAIN 后处理抗锯齿
SMAA_lite_md_RT POSTKERNEL --dscale 附加抗锯齿 需要 --correct-downscaling=no

ACNet 🔗

仅适合2D动画的超分降噪算法

ACNet为旧版,acnet3和arnet为v3版
变体 le 表示 line enhancing ;变体 hdn 表示 mild denoising
变体质量由低到高排序(性能需求相反) b4 b8 b16 b24 b32 b48 b64

ACNet_HDN_RT LUMA 放大2倍 触发的起始倍率 1.2
arnet_b4_le LUMA 放大2倍 触发的起始倍率 1.2

Adaptive_sharpen 🔗

锐化算法

Adaptive_sharpen_RT SCALED 锐化
Adaptive_sharpen_lite_luma_RT LUMA 锐化(luma平面) igv版
Adaptive_sharpen_lite_RT SCALED 锐化 igv版

AiUpscale 🔗

基于FSRCNNX架构的超分算法

全系为 LUMA ;全系为放大固定倍率 2x 3x 4x ;触发的起始倍率分别为1.2 2.2 3.2
变体_LineArt为2D动画特调,变体_Photo适合实景

AMD_CAS 🔗

锐化算法

AMD_CAS_AIO_RT MAIN 锐化/放大+锐化 如果需要放大,触发的起始倍率 1.0
AMD_CAS_luma_RT LUMA 锐化
AMD_CAS_scl_RT SCALED 锐化
AMD_BCAS_RT MAIN 锐化 带双边权重调节

AMD_FSR 🔗

上采样+锐化算法
FSR1由两部分算法合成,easu一个类lanczos2的上采样算法与rcas锐化。
变体 _EASU 即仅保留上采样部分
变体 _RCAS 即仅保留锐化部分

AMD_FSR1_luma_RT LUMA 放大+锐化(luma平面) “放大”触发的起始倍率 1.0
AMD_FSR1_RT MAIN 放大+锐化 “放大”触发的起始倍率 1.0
AMD_FSR1_lite_RT MAIN 放大+锐化 “放大”触发的起始倍率 1.0
AMD_FSR1_EASU_luma LUMA 放大(luma平面) 触发的起始倍率 1.0
AMD_FSR1_EASU MAIN 放大 触发的起始倍率 1.0
AMD_FSR1_RCAS_luma_RT LUMA 锐化(luma平面)
AMD_FSR1_RCAS_RT MAIN 锐化
AMD_FSR1_RCAS_scl_RT SCALED 锐化

Ani 🔗

基于ARTCNN架构的仅适合2D动画的超分算法

Ani4Kv2_ArtCNN_C4F32_i2 LUMA 放大2倍 触发的起始倍率 1.2
AniSD_ArtCNN_C4F32_i4 LUMA 放大2倍(仅适合低清2D动画) 触发的起始倍率 1.2

Anime4K 🔗

仅适合2D动画的超分算法

变体质量由低到高排序(性能需求相反)_US _S _M _L _VL _UL _UUL
变体 _AA _Soft 带自抗锯齿效果
变体 _DoG 表示高斯差分去模糊

Anime4K_3DGraphics_Upscale_x2_US MAIN 放大(仅适合3D游戏)
Anime4K_AIO_optQ MAIN 锐化+放大2/4倍 “放大”触发的起始倍率 1.2
Anime4K_AutoDownscalePre_x2 MAIN 特殊,仅用于两次整数倍放大之间(通用)
Anime4K_AutoDownscalePre_x4 MAIN 特殊,仅用于两次整数倍放大之间(通用)
Anime4K_Clamp_Highlights MAIN 抗振铃
Anime4K_Darken MAIN 加深线条颜色
Anime4K_Deblur MAIN 去模糊
Anime4K_Denoise_Bilateral MAIN 降噪
Anime4K_Restore MAIN 伪影修复、锐化
Anime4K_Thin MAIN 收细线条
Anime4K_Upscale MAIN 放大2倍 触发的起始倍率 1.2
Anime4K_Upscale_Deblur MAIN 放大2倍+去模糊 触发的起始倍率 1.2
Anime4K_Upscale_Deblur_Original_x2 MAIN 放大2倍+去模糊
Anime4K_Upscale_Denoise MAIN 放大2倍+降噪 触发的起始倍率 1.2
Anime4K_Upscale MAIN 放大2倍 触发的起始倍率 1.2
Anime4K_Upscale_DTD_x2 MAIN 放大2倍+Darken-Thin-Deblur 触发的起始倍率 1.2
Anime4K_Upscale_Original_x2 MAIN 放大2倍

ArtCNN 🔗

仅适合2D动画的超分算法

变体 _DS 表示带降噪(偏锐利)
变体 _DN 表示带降噪
变体质量由低到高排序(性能需求相反) _C4F8 _C4F16 _C4F32
变体 _Legacy _v0 都是旧版本

ArtCNN_C4F16 LUMA 放大2倍 触发的起始倍率 1.2
ArtCNN_Legacy_C4F16_DS_YCbCr CHROMA 色度还原
ArtCNN_Legacy_C4F16_RGB MAIN 放大2倍 触发的起始倍率 1.2
ArtCNN_Legacy_C4F32_Chroma CHROMA 色度还原

^Canvas 🔗

非族。仅表示部分画布类工具的集合。

box_crop_RT OUTPUT 裁切每边的自定义像素
box_pad_ada MAIN 自适应填充黑边 仅适合与 --keepaspect=no 一起使用
flip_RT MAINPRESUB 翻转
keystone_adjust_RT OUTPUT 梯形校正
kNLS_RT SCALED 特殊,用于非线性拉伸 仅适合与 --keepaspect=no 一起使用
NLS_RT MAINPRESUB 特殊,用于非线性拉伸 仅适合与 --keepaspect=no 一起使用
pan_RT MAINPRESUB 画面平移
rotate_RT MAINPRESUB 画面旋转
rotateR_FX_RT OUTPUT 旋转动效 在音频播放场景下,需要辅助的脚本命令
zoom_RT MAINPRESUB 画面变焦
AMD_FidelityFX_Lens_RT MAIN 色差&暗角&胶片颗粒
ASCII_art MAIN 伪ASCII艺术化渲染
MandelbrotSet_lite_FX_RT OUTPUT 曼德博集合动效 在音频播放场景下,需要辅助的脚本命令
MandelbrotSet_p3d_FX_RT OUTPUT 曼德博集合动效 在音频播放场景下,需要辅助的脚本命令
Seascape_FX_RT OUTPUT 海景动效 在音频播放场景下,需要辅助的脚本命令

CfL 🔗

Chroma from Luma
用亮度平面的信息做引导,进行色度平面还原的类似算法集合。

双刃剑效应:
通常比常规算法更好的提升色度清晰度,也会在亮度与色度弱相关的地方过度脑补。
受亮度平面的质量影响极大,而且因亮度平面的分辨率增大而成倍增加计算成本。

CfL_Prediction_RT CHROMA
CfL_Prediction_Lite CHROMA CfL_Prediction的简化版
kACfL_RT CHROMA
JointBilateral_RT CHROMA
FastBilateral_RT CHROMA JointBilateral的简化版
KrigBilateral CHROMA

color 🔗

色彩处理工具

color_alt_luma LUMA 反转亮度
color_alt_rgb MAINPRESUB 反色
color_BlindAid_RT OUTPUT 色觉辅助
color_hold_RT OUTPUT 保留指定色彩
color_temperature_RT MAIN 色温调节
colorlevel_expand MAINPRESUB 动态范围扩展(有限转全范围)
colorlevel_expand_chroma CHROMA 动态范围扩展(有限转全范围)
colorlevel_expand_luma LUMA 动态范围扩展(有限转全范围)
colorlevel_shrink MAINPRESUB 动态范围收缩
colorprim_601_to_709 MAINPRESUB 色域601转709

CuNNy 🔗

仅适合2D动漫的超分算法

变体质量由低到高排序(性能需求相反) _veryfast _faster _fast _2x12 _3x12 _4x12 _4x16 _4x24 _4x32 _8x32
变体 _DS 表示带降噪
变体 _SOFT 带自抗锯齿效果

CuNNy_2x12_DS LUMA 放大2倍 触发的起始倍率 1.2

^Deband 🔗

非族。仅表示把所有去色带算法归于此条目下。

hdeband LUMA CHROMA RGB 源去色带
hdeband_rgb_RT MAIN 后处理去色带
kgradfun_RT LUMA CHROMA RGB 源去色带
neo_f3kdb_luma_RT LUMA 亮度去色带
neo_f3kdb_rgb_RT MAIN 后处理去色带

dehaasn 🔗

某核心开发者说这类算法没有意义。因此该系列叫“反哈斯”

dehaasn LUMACHROMA 预缩小亮度和色度平面 仅限在片源尺寸远大于输出尺寸时使用
dehaasn_ads_luma_RT LUMA 特殊,仅用于两次整数倍放大之间(通用)
dehaasn_ads_rgb_RT MAIN 特殊,仅用于两次整数倍放大之间(通用)

deint 🔗

单帧反交错/去隔行

deint_swa NATIVE 反交错
deint_swa_luma LUMA 反交错
deint_swa_RT SCALED 反交错

DPID 🔗

Rapid, Detail-Preserving Image Downscaling
尝试保留高频细节与纹理的强感知降采样算法

也许不如 --dscale=bicubic --correct-downscaling=no 简单粗暴

DPID_RT MAIN 缩小到目标尺寸
DPID_lite_RT MAIN 缩小到目标尺寸 Magpie版

EDI 🔗

基于边缘导向插值的技术范畴的近似算法集合。
可分为人工神经网络派 nnedi nnedi2 nnedi3 与传统数学计算派 DCCI EDI NEDI eedi2 eedi3

nnedi3的变体质量由低到高排序(性能需求相反) _nns16 _nns32 _nns64 _nns128 _nns256
nnedi3的变体 _win8x4 _win8x6 的差异为内部的窗口参数

DCCI_RT MAIN 放大2倍 触发的起始倍率 1.2
DCCI_luma_RT LUMA 放大2倍 触发的起始倍率 1.2
NEDI_Fast_luma_RT LUMA 放大2倍 触发的起始倍率 1.2
NEDI_MPDN_luma LUMA 放大2倍 触发的起始倍率 1.2
nnedi3_nns16_win8x4 LUMA 放大2倍 触发的起始倍率 1.2
nnedi3_nns16_win8x6 LUMA 放大2倍 触发的起始倍率 1.2

eq 🔗

调色板

eq_clarity_RT MAIN 局部对比度调节
eq_classic_RT MAIN 仿单色胶片质感
eq_ColorBlindSim_RT SCALLED 色盲模拟
eq_HDRR_faux_RT MAIN 类HDRR(伪hdr)
eq_HDRR_kfaux_RT LUMA 类HDRR(伪hdr)
eq_ntsc_RT MAIN 仿NTSC电视色彩
eq_rgb_RT MAIN 任意偏移RGB值
eq_temperature_RT MAIN 色温增益
eq_yiq_RT MAIN 任意偏移RGB值
kVibrance_RT MAIN 高级饱和度调节

ESRGAN 🔗

热门超分算法 Real-ESRGAN(仅SRVGGNet架构版)

都是大型的计算着色器,初次加载需要一定的预编译等待时间(程序可能会暂时冻结)。

the_database_AnimeJaNai MAIN 放大2倍(仅适合2D动画) 触发的起始倍率 1.2
W2xEX_AnimeVideo MAIN 放大2倍(仅适合2D动画) 触发的起始倍率 1.2
W2xEX_Omni MAIN 放大2倍 触发的起始倍率 1.2
Zarxrax_Anime1080Fixer MAIN 去模糊(仅适合2D动画)
Zarxrax_DigitalFlim MAIN 放大2倍(仅适合2D动画) 触发的起始倍率 1.2
Zarxrax_HurrDeblur MAIN 去模糊(仅适合2D动画)

FSRCNNX 🔗

古典超分算法 SRCNN 的简化版

变体质量由低到高排序(性能需求相反) _8_0_4_1 _16_0_4_1 _56_16_4_1

FSRCNNX_x2_8_0_4_1 LUMA 放大2倍 触发的起始倍率 1.2
FSRCNNX_x2_8_0_4_1_LineArt LUMA 放大2倍(仅适合2D动画) 触发的起始倍率 1.2
FSRCNNX_x2_16_0_4_1_anime_distort LUMA 放大2倍(仅适合2D动画) 触发的起始倍率 1.2

guided 🔗

何恺明细节增强/平滑算法

Fast_Guided_enh_luma_RT LUMA 细节增强
Fast_Guided_enh_rgb_RT MAIN 细节增强
Fast_Guided_smth_luma_RT LUMA 细节平滑
Fast_Guided_smth_rgb_RT MAIN 细节平滑
Fast_Guided_smth_lite LUMA RGB 细节平滑 AN3223 的简化版

^LUT 🔗

非族。仅表示把所有调色用的类lut归于此条目下。

FGCine_freebdl_RT MAIN 适合真人电影
FGCine_freebdl_fin_RT OUTPUT 支持HDR
Krell_pinkgirl_RT MAIN 粉红糖水风格
Krell_pinkgirl_fin_RT OUTPUT 支持HDR

MagicKernel 🔗

魔术核重采样算法。
支持任意放大与缩小,优于传统的lanczos3算法。

Magic_Kernel_Classic MAIN 2011年的初版算法
Magic_Kernel_Sharp2013 MAIN
Magic_Kernel_Sharp2015 MAIN
Magic_Kernel_Sharp2015_lut MAIN 加速版

mirror 🔗

镜像

mirror_RT OUTPUT 局部镜像
mirror_sp_RT MAIN 竖屏视频的特殊镜像 仅适合与 --keepaspect=no 一起使用
mirror_fill_sp_RT MAIN 竖屏视频的背景镜像填充 仅适合与 --keepaspect=no 一起使用

nlmeans 🔗

一种高质量的降噪算法

变体质量由低到高排序(性能需求相反) _s _fast
变体 _temporal 利用了前帧参考
变体 _dx 为 d3d11 后端特调以避免卡死问题

nlmeans LUMA CHROMA 降噪 AN3223版
nlmeans_luma_RT LUMA 降噪 AN3223版
knlm_lite_RT LUMA 降噪 轻量化实现
knlm2_RT LUMA 降噪

NV 🔗

上采样+锐化算法

NVScaler_luma_RT LUMA 放大(luma平面) 触发的起始倍率 1.0
NVScaler_RT MAIN 放大 触发的起始倍率 1.0
NVSharpen_luma_RT LUMA 锐化(luma平面) 不建议和 NVScaler 一起使用
NVSharpen_RT MAIN 锐化 不建议和 NVScaler 一起使用
NVSharpen_scl_RT SCALED 锐化 不建议和 NVScaler 一起使用

^Pixel-art 🔗

非族。仅表示把部分像素艺术的处理算法归于此条目下。

hqx_lite_RT MAIN 放大用户指定的倍率 限制的最大输出分辨率为8192x8192
hqx_x2 MAIN 放大2倍 限制的最大输出分辨率为8192x8192
hqx_x3 MAIN 放大3倍 限制的最大输出分辨率为8192x8192
hqx_x4 MAIN 放大4倍 限制的最大输出分辨率为8192x8192
MMPX MAIN 放大2倍 触发的起始倍率 1.0
OmniScale_RT MAIN 上采样 触发的起始倍率 1.0
pixellate_RT MAIN 上采样 双职能(也可实现马赛克化)
superxbr LUMA 放大2倍
superxbr_rgb MAIN 放大2倍
superxbr_yuv NATIVE 放大2倍

plane 🔗

通道/平面相关工具

plane_block_RT LUMACHROMA 屏蔽通道
plane_split_RT NATIVEMAINPRESUB 屏蔽通道+四宫格对比
plane_splitV2_RT SCALEDOUTPUT 屏蔽通道+四宫格对比
plane_shift_yuv_RT NATIVE YUV平面偏移
plane_shift_rgb_RT MAINPRESUB RGB平面偏移

QCOM 🔗

上采样+锐化

QCOM_SGSR_RT MAIN 上采样+锐化
QCOM_SGSR_luma_RT LUMA 上采样+锐化(luma平面)
QCOM_SGEDS_ms_RT POSTKERNEL --scale 附加锐化 单边变形时可能无效
kSGEDS_RT SCALED 锐化

RAISR 🔗

Rapid and Accurate Image Super Resolution 谷歌提出的一种超分算法

ravu 由开发者 bjin 创建,是原版的修改。
Intel版同样在原版算法上有所改进。

变体质量由低到高排序(性能需求相反) _r2 _r3 _r4
变体中涉及放大固定倍率 2x 3x 4x 的关联触发的起始倍率分别为 1.2 2.2 3.2
变体 _lite 进一步降低性能需求
变体 _ar 带自抗振铃
变体 _pc 为特调(倾向未知)

Intel_RAISR_x1d5_highres LUMA 放大1.5倍 触发的起始倍率 1.0
Intel_RAISR_x2_highres LUMA 放大2倍 触发的起始倍率 1.2
ravu_3x_r2 LUMA 放大3倍 触发的起始倍率 2.2
ravu_3x_r2_rgb MAIN 放大3倍 触发的起始倍率 2.2
ravu_3x_r2_yuv NATIVE 放大3倍 触发的起始倍率 2.2
ravu_zoom_ar_r2 LUMA 放大 触发的起始倍率 1.0
ravu_zoom_r2_chroma CHROMA 色度还原

SSim 🔗

mpv原生scale优化

Caution

这类着色器不太匹配其它用户着色器,仅完美匹配mpv的内部着色器。

SSimDownscaler_RT POSTKERNEL 缩小优化 特殊,仅适合和--dscale一起使用
SSimSuperRes_RT POSTKERNEL 放大优化 特殊,仅适合和--scale一起使用

^USM 🔗

非族。仅表示所有基于 Unsharp/Sharp Mask 计算的锐化/模糊类

GEGL_unsharp_mask_luma_RT LUMA 锐化/模糊(luma平面)
GEGL_unsharp_mask_RT MAIN 锐化/模糊
GEGL_unsharp_mask_scl_RT SCALED 锐化/模糊
LumaSharpen_RT LUMA 锐化亮度平面
minblur_usm LUMA 锐化亮度平面
unsharp_RT SCALED 锐化/模糊
sharpen_complexV2_RT SCALED unsharp_RT 的锐化部分的改进版本
unsharp_masking_RT SCALED 锐化/模糊

WarpSharp 🔗

线条粗细调节

aWarpSharp2_RT LUMA 主要设计用于动漫的线条边缘,可达成变相的锐化或模糊效果
aWarpSharp3_RT LUMA 同上
kwarpline_RT LUMA 同上

^ETC 🔗

非族。未分类合集

darkside_RT OUTPUT 晕影化
denoise_gaussian_RT MAIN 高斯模糊式降噪
fast_gaussian_blur_RT MAIN 高斯模糊
FineDehalo_lite_RT LUMA 去晕轮
FineSharp_RT LUMA 基于亮度的锐化 对片源的挑剔性高,要求较高的纯净度和密集纹理处不太锐利
harmony_RT OUTPUT 和谐指定区域
harmony_3LP_RT OUTPUT 和谐一至三块区域
kantiring_ms_RT POSTKERNEL 抗振铃
kBFDN_RT LUMA 亮度平面的双边滤波降噪
kCCD_RT MAIN 摄像机色彩降噪
kgrain_ada_RT LUMA 自适应生成胶片颗粒或数字噪声
kGrainFactory_RT LUMA 仿胶片颗粒
PixelClipper_RT POSTKERNEL 抗振铃
TsubaUP LUMA 放大2倍 触发的起始倍率 1.2

Clone this wiki locally