第三方用户着色器#
ver.20231101
起#
我选择主设置文件夹下新建的 shaders 目录下放置第三方着色器,常见后缀名为 .glsl .hook
通过编辑 mpv.conf / input.conf 自行决定自动/手动加载第三方着色器(语法见对应文件内示例)
部分放大着色器有最小缩放倍数的触发限制条件,即 目标分辨率 >或= 源分辨率x最小触发倍数
通常AI类缩放算法无特别说明,都只对源执行一次双倍放大,不足/超过目标分辨率的部分由 mpv.conf 中指定的 --scale/dscale
算法接力执行
通过控制台console(`)和统计信息界面stats(shift+i → 2)共同检查着色器的工作状态
扩展阅读:
关于 色度、亮度升频和缩放
关于 影像瑕疵
不同着色器/算法的比较参考 mpv_upscaling.html
…#
🔺 如果下方列出的着色器未在整合包中找到,前往 此处 搜寻获取。
🔺 我统一修改了2x 3x 4x放大类着色器的最小缩放倍率限制,与上游的原始版本不同。
🔺 名字中含有 next 的变体,指仅能在 --vo=gpu-next
的条件下( mpv.conf )使用
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
Anime4K v3.2-v4.x#
它是一组开源的高质量的实时动漫缩放/降噪算法。
在v1之前是个纯粹的锐化滤镜,v2引入人工智能卷积核,在v3之后进行了模块化改造,目前版本v4在局部场景下能达到waifu2x的效果。
A4k不提供cscale色度升频类着色器。(v3.2-v4.x版理论上不兼容之前的旧版本,v3-v3.1版的区别说明见 附录 部分)
US → S → M → L → VL → UL → UUL 性能要求逐渐提高(处理耗时大致加倍),处理结果越好
去模糊系列:避免过冲和振铃的情况下锐化细节。
(推荐 Anime4K_Deblur_DoG.glsl 变体)
Anime4K_Deblur_DoG.glsl
Anime4K_Deblur_Original.glsl
降噪系列: Mean → Mode → Median 速度逐渐变慢。
(推荐 Anime4K_Denoise_Bilateral_Mode.glsl 变体)
Anime4K_Denoise_Bilateral_Mean.glsl
Anime4K_Denoise_Bilateral_Mode.glsl
Anime4K_Denoise_Bilateral_Median.glsl
线条加深、变细系列:
VeryFast → Fast → HQ 速度逐渐变慢。
(推荐 Anime4K_Darken_HQ.glsl 和 Anime4K_Thin_HQ.glsl 变体)
Anime4K_Darken_VeryFast.glsl
Anime4K_Darken_Fast.glsl
Anime4K_Darken_HQ.glsl
Anime4K_Thin_VeryFast.glsl
Anime4K_Thin_Fast.glsl
Anime4K_Thin_HQ.glsl
线条重建系列:
开发者推荐在upscale之前使用,减少上采样后产生的伪影。
Soft 为更适合与downscale一起使用,可用于下采样抗锯齿。 GAN 变体使用生成型对抗网络,通常比 CNN 具有更高的质量。
(推荐 Anime4K_Restore_CNN_M.glsl 变体)
Anime4K_Restore_CNN_S.glsl
Anime4K_Restore_CNN_M.glsl
Anime4K_Restore_CNN_L.glsl
Anime4K_Restore_CNN_VL.glsl
Anime4K_Restore_CNN_UL.glsl
Anime4K_Restore_CNN_Soft_S.glsl
Anime4K_Restore_CNN_Soft_M.glsl
Anime4K_Restore_CNN_Soft_L.glsl
Anime4K_Restore_CNN_Soft_VL.glsl
Anime4K_Restore_CNN_Soft_UL.glsl
Anime4K_Restore_GAN_UL.glsl
Anime4K_Restore_GAN_UUL.glsl
放大系列:
CNN/GAN 变体最小缩放触发倍率为1.2。
Original 变体始终执行二倍放大且无缩放触发倍率限制。 x2 x3 x4 为放大倍率
Anime4K_Upscale_CNN_x2_S.glsl
Anime4K_Upscale_CNN_x2_M.glsl
Anime4K_Upscale_CNN_x2_L.glsl
Anime4K_Upscale_CNN_x2_VL.glsl
Anime4K_Upscale_CNN_x2_UL.glsl
Anime4K_Upscale_GAN_x2_S.glsl
Anime4K_Upscale_GAN_x2_M.glsl
Anime4K_Upscale_GAN_x3_L.glsl
Anime4K_Upscale_GAN_x3_VL.glsl
Anime4K_Upscale_GAN_x4_UL.glsl
Anime4K_Upscale_GAN_x4_UUL.glsl
Anime4K_Upscale_Original_x2.glsl
放大为主的混合系列:
以下除 Deblur_Original (无限制)外,最小缩放触发倍率皆为1.2。
Anime4K_Upscale_DoG_x2.glsl
Anime4K_Upscale_DTD_x2.glsl
Anime4K_Upscale_Deblur_Original_x2.glsl
Anime4K_Upscale_Deblur_DoG_x2.glsl
Anime4K_Upscale_Denoise_CNN_x2_S.glsl
Anime4K_Upscale_Denoise_CNN_x2_M.glsl
Anime4K_Upscale_Denoise_CNN_x2_L.glsl
Anime4K_Upscale_Denoise_CNN_x2_VL.glsl
Anime4K_Upscale_Denoise_CNN_x2_UL.glsl
其它系列:
AutoDownscalePre 防止过度放大超越显示分辨率,避免额外一步的downscale处理。
x2版常用于2k屏全屏观看1080p执行二倍放大过度(4k目标分辨率远超显示设备分辨率),也可用于4k屏两次放大720p视频。
该着色器放在首个放大着色器之后。x4版放在两次放大着色器之间。
Clamp 主要用于钳制画面的高光,抗振铃和减少过冲。
该着色器放在所有后处理着色器之前或(推荐)之后。
3DGraphics 主要用于游戏类3d画面放大。AA为抗锯齿版本。(无缩放倍率限制)
Anime4K_AutoDownscalePre_x2.glsl
Anime4K_AutoDownscalePre_x4.glsl
Anime4K_Clamp_Highlights.glsl
Anime4K_3DGraphics_Upscale_x2_US.glsl
Anime4K_3DGraphics_AA_Upscale_x2_US.glsl
补充说明:对新版的混合搭配顺序为 Clamp → Restore → Upscale → AutoDownscalePre → Upscale …(仅作为推荐,可自行调节删改)
通常仅需一个 Anime4K_Restore_CNN_M.glsl 模块即满足大多数人的口味(适度画面修复+弱感知强化+少量瑕疵引入)
Anime4k-legacy#
此处专指旧版不带放大功能的Anime4k v1及之前的版本,可作为动漫向专用的锐化器独立或搭配其它放大着色器使用,实现不错的最终效果。
已降低v1中不合理的缩放倍率限制。 10系列中被开发者视为最佳质量的变体反而被我认为质量最差(扭曲文字图形且油画感太重)
🔺 变体 10 的最小缩放触发倍率为1
相关列表:(推荐程度 09 >> 10_UltraFast > 10_Fast > 10 )
Anime4K_legacy_09.glsl
Anime4K_legacy_10.glsl
Anime4K_legacy_10_Fast.glsl
Anime4K_legacy_10_UltraFast.glsl
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
ACNet#
是Anime4KCPP-Net的缩写,设计用于高性能动画风格的图像和视频放大,它与Asymmetric Convolution Net(缩写重名ACNet)无关,与现在的Anime4k也无太大关联。ACNet是Anime4KCPP自己的基于CNN的算法。
🔺 启用将覆盖 mpv.conf 中指定的 --scale=xxxxx
算法
🔺 最小缩放触发倍率为1.2
副作用: HDN 变体能更好的降噪,等级1 → 2 → 3,越高降噪效果越好,但可能导致模糊和缺少细节。
相关列表:TianZerL-acnet
ACNet.glsl
ACNet_HDN_L1.glsl
ACNet_HDN_L2.glsl
ACNet_HDN_L3.glsl
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
Chroma from Luma (CfL) Prediction#
由现代视频编码方式启发的色度还原算法
🔺 启用将覆盖 mpv.conf 中指定的 --cscale=xxxxx
算法
joint-bilateral#
简化的双边滤波色度还原算法,利用亮度信息为引导。
🔺 启用将覆盖 mpv.conf 中指定的 --cscale=xxxxx
算法
pixel-clipper#
简易像素裁切,用于通用的后处理抗振铃。
以上三项由同一开发者移植,在项目中提供了更多说明。
🔺 Lite 变体支持了 --vo=gpu
相关列表: Artoriuz-cfl + Artoriuz-bilateral + Artoriuz-pixelclipper
CfL_Prediction.glsl
FastBilateral_next.glsl
JointBilateral_next.glsl
MemeBilateral_next.glsl
PixelClipper.glsl
相关列表(MOD): deus0ww-bilateral
CfL_Prediction_Lite.glsl
MemeBilateral_Lite.glsl
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
FSRCNNX#
由原始SRCNN发展而来,是FSRCNN的变体,较快速的通用型AI放大算法。
🔺 启用将覆盖 mpv.conf 中指定的 --scale=xxxxx
算法
🔺 最小缩放触发倍率为1.2
LineArt 和 anime 变体更适合2d动画; enhance 变体在去除伪影强度上更大; 1x 变体不执行放大
副作用: 16_0_4_1
变体用更多的能耗(更慢)换取更好的质量,但感知较弱。
相关列表:igv-FSRCNN
FSRCNNX_x2_8_0_4_1.glsl
FSRCNNX_x2_8_0_4_1_LineArt.glsl
FSRCNNX_x2_16_0_4_1.glsl
相关列表:HelpSeeker-FSRCNN
FSRCNNX_x1_16_0_4_1_anime_distort.glsl
FSRCNNX_x1_16_0_4_1_distort.glsl
FSRCNNX_x2_16_0_4_1_anime_distort.glsl
FSRCNNX_x2_16_0_4_1_distort.glsl
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
AviSynth AiUpscale#
名字奇怪是因为开发者主要移植到AviSynth+上用的,和FSRCNNX有相似的体系结构,但使用了不同的滤镜。
x2 x3 x4 分别对应 二倍 三倍 四倍 放大
质量上 Fast 弱于 Medium 弱于 HQ
性能需求上 Fast2x 介于 FSRCNNX8 和 FSRCNNX16 之间, 但是 Medium2x 远高于 FSRCNNX16, 变体 HQ 因速度极慢而难以用于高质量片源
LineArt 适合2D画面而 Photo 适合现实类画面
🔺 启用将覆盖 mpv.conf 中指定的 --scale=xxxxx
算法
🔺 不同倍率对应的最小缩放触发倍率分别为1.2 2.2 3.2
相关列表:(已省略3x和4x的类似名变体)Alexkral-hooks
AiUpscale_Fast_2x_LineArt.glsl
AiUpscale_Fast_2x_Photo.glsl
AiUpscale_Fast_Sharp_2x_LineArt.glsl
AiUpscale_Fast_Sharp_2x_Photo.glsl
AiUpscale_Medium_2x_LineArt.glsl
AiUpscale_Medium_2x_Photo.glsl
AiUpscale_Medium_Sharp_2x_LineArt.glsl
AiUpscale_Medium_Sharp_2x_Photo.glsl
AiUpscale_HQ_2x_LineArt.glsl
AiUpscale_HQ_2x_Photo.glsl
AiUpscale_HQ_Sharp_2x_LineArt.glsl
AiUpscale_HQ_Sharp_2x_Photo.glsl
...
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
Adaptive Sharpen#
自适应锐化
变体 best 理论上拥有最佳质量但强度较低;
变体 luma 只处理亮度通道不适合rgb源
Krig#
利用亮度信息进行高质量的色度升频
mpv目前最好的色度升频着色器,可以与其他缩放( --scale/dscale
)算法共同使用
🔺 启用将覆盖 mpv.conf 中指定的 --cscale=xxxxx
算法
SSimSuperRes#
该着色器的目的是对mpv内置 --scale=xxxxx
放大算法进行增强校正。
SSimDownscaler#
基于感知的对mpv内置 --dscale=xxxxx
缩小算法进行增强校正。(例如抗振铃)
以上四项及FSRCNNX皆由同一开发者移植
相关列表:igv-hooks
adaptive_sharpen.glsl
KrigBilateral.glsl
SSimDownscaler.glsl
SSimSuperRes.glsl
相关列表:MOD (变体 luma 仅作用于亮度通道)
adaptive_sharpen_luma.glsl
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
RAVU#
(Rapid and Accurate Video Upscaling)是一组受RAISR(快速准确的图像超分辨率)启发的预分频着色器。
它具有不同的变体以适应不同的场景。 RAVU整体的性能消耗设计上比mpv内置的ewa系缩放器高。
NNEDI3#
全称Neural Network Edge Directed Interpolation,是一种超高质量的插值放大算法。
nnedi3版速度较快(即便如此相比其它算法,依旧速度极慢且开销巨大)
SuperXBR#
一个经典的擅长整数倍放大算法,消耗介于NNEDI3和RAVU之间。
以上三项由同一开发者移植,在项目中提供了更多说明: bjin-hooks
r2 → r3 → r4;
nns16 → nns32 → nns64 → nns128 → nns256;
win8x4 → win8x6
质量更好但性能大增
开发者仓库的 compute 文件夹内(需要的显卡支持的OpenGL版本≥4.3)的版本比 gather 目录内的(OpenGL≥4.0)更快,后者比 主目录下的 master 的更快。
3x 变体直接放大三倍,适用于超低清源; ar 变体自带抗振铃处理。
无其它后缀的和 3x 变体的训练模型为动漫, lite 和 zoom 变体为通用模型。
🔺 变体 ddx 专用于 --vo=gpu --gpu-context=d3d11
(但不支持 --vo=gpu --gpu-context=win
),其它变体可在 --vo=gpu-next
下任意后端使用。
🔺 除了 chroma 变体(启用将覆盖 mpv.conf 中指定的 --cscale=xxxxx
算法),其它只处理(YUV)luma通道(启用将覆盖 mpv.conf 中指定的 --scale=xxxxx
算法)
🔺 lite 变体最快最锐利但无半像素偏移,可能产生锯齿和晕轮/振铃。 rgb 和 yuv 变体在 --cscale
执行完之后开始作用,但 yuv 变体无法处理RGB的源(例如PNG图片)
🔺 关于半像素偏移,除了 lite 和 chroma 变体,其它ravu和nnedi3和sxbr中都存在。可以用 mpv.conf 中的 --scaler-resizes-only=no
修正它,但是没必要(感知不强)
🔺 sxbr没有触发倍率限制;
无其它后缀的和 lite 变体的最小缩放触发倍率约为1.2, 3x 变体最小缩放触发倍率约为2.2。 zoom 变体直接放大到目标分辨率,触发倍率>1;
nnedi3最小缩放触发倍率约为1.2,对性能要求很高(临时加载可能导致假死), nns128 级别以上的因速度很慢而很难即时观看时使用。
仓库主分支内精简并保留的部分列表(已统一修改后缀格式名为glsl):
来自 compute 目录
ravu_3x_r2.glsl
ravu_3x_r2_rgb.glsl
ravu_3x_r2_yuv.glsl
ravu_3x_r3.glsl
ravu_3x_r3_rgb.glsl
ravu_3x_r3_yuv.glsl
ravu_3x_r4.glsl
ravu_3x_r4_rgb.glsl
ravu_3x_r4_yuv.glsl
ravu_lite_r2.glsl
ravu_lite_r3.glsl
ravu_lite_r4.glsl
ravu_lite_ar_r2.glsl
ravu_lite_ar_r3.glsl
ravu_lite_ar_r4.glsl
ravu_r2.glsl
ravu_r2_rgb.glsl
ravu_r2_yuv.glsl
ravu_r3.glsl
ravu_r3_rgb.glsl
ravu_r3_yuv.glsl
ravu_r4.glsl
ravu_r4_rgb.glsl
ravu_r4_yuv.glsl
ravu_zoom_r2.glsl
ravu_zoom_r2_chroma.glsl
ravu_zoom_r2_rgb.glsl
ravu_zoom_r2_yuv.glsl
ravu_zoom_r3.glsl
ravu_zoom_r3_chroma.glsl
ravu_zoom_r3_rgb.glsl
ravu_zoom_r3_yuv.glsl
ravu_zoom_ar_r2.glsl
ravu_zoom_ar_r2_rgb.glsl
ravu_zoom_ar_r2_yuv.glsl
ravu_zoom_ar_r3.glsl
ravu_zoom_ar_r3_rgb.glsl
ravu_zoom_ar_r3_yuv.glsl
nnedi3_nns16_win8x4.glsl
nnedi3_nns16_win8x6.glsl
nnedi3_nns32_win8x4.glsl
nnedi3_nns32_win8x6.glsl
nnedi3_nns64_win8x4.glsl
nnedi3_nns64_win8x6.glsl
nnedi3_nns128_win8x4.glsl
nnedi3_nns128_win8x6.glsl
nnedi3_nns256_win8x4.glsl
nnedi3_nns256_win8x6.glsl
来自 主目录
superxbr.glsl
superxbr_rgb.glsl
superxbr_yuv.glsl
来自 rgba16hf 分支
ravu_3x_r2_ddx.glsl
ravu_3x_r2_rgb_ddx.glsl
ravu_3x_r2_yuv_ddx.glsl
ravu_3x_r3_ddx.glsl
ravu_3x_r3_rgb_ddx.glsl
ravu_3x_r3_yuv_ddx.glsl
ravu_3x_r4_ddx.glsl
ravu_3x_r4_rgb_ddx.glsl
ravu_3x_r4_yuv_ddx.glsl
ravu_lite_r2_ddx.glsl
ravu_lite_r3_ddx.glsl
ravu_lite_r4_ddx.glsl
ravu_lite_ar_r2_ddx.glsl
ravu_lite_ar_r3_ddx.glsl
ravu_lite_ar_r4_ddx.glsl
ravu_r2_ddx.glsl
ravu_r2_rgb_ddx.glsl
ravu_r2_yuv_ddx.glsl
ravu_r3_ddx.glsl
ravu_r3_rgb_ddx.glsl
ravu_r3_yuv_ddx.glsl
ravu_r4_ddx.glsl
ravu_r4_rgb_ddx.glsl
ravu_r4_yuv_ddx.glsl
ravu_zoom_r2_chroma_ddx.glsl
ravu_zoom_r2_ddx.glsl
ravu_zoom_r2_rgb_ddx.glsl
ravu_zoom_r2_yuv_ddx.glsl
ravu_zoom_r3_chroma_ddx.glsl
ravu_zoom_r3_ddx.glsl
ravu_zoom_r3_rgb_ddx.glsl
ravu_zoom_r3_yuv_ddx.glsl
ravu_zoom_ar_r2_ddx.glsl
ravu_zoom_ar_r2_rgb_ddx.glsl
ravu_zoom_ar_r2_yuv_ddx.glsl
ravu_zoom_ar_r3_ddx.glsl
ravu_zoom_ar_r3_rgb_ddx.glsl
ravu_zoom_ar_r3_yuv_ddx.glsl
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
AMD-CAS#
移植自AMD FidelityFX CAS (Contrast Adaptive Sharpening),原始设计用于游戏,对比度自适应锐化是一种低开销的锐化算法。
🔺 rgb 变体作用于后处理,比常规版本开销微高,速度微慢
AMD-FSR#
移植自AMD FidelityFX Super Resolution (FSR),原始设计用于游戏,是一种先执行常规放大后再进行对比度自适应锐化的改良算法。放大部分基于lanczos+bilinear,锐化部分基于cas
相关列表:agyild-fsr & agyild-cas
(变体 scaled 功能完整,附带了缩放模块而非纯粹的锐化算法)
AMD_CAS.glsl
AMD_CAS_scaled.glsl
AMD_FSR.glsl
相关列表:MOD
(变体 luma rgb 没有放大倍率的上限;变体 EASU 分离自fsr的放大模块,用作纯粹的放大算法)
AMD_CAS_rgb.glsl
AMD_CAS_scaled_rgb.glsl
AMD_FSR_rgb.glsl
AMD_FSR_EASU_luma.glsl
AMD_FSR_EASU_rgb.glsl
相关列表:deus0ww-cas & kevinlekiller-cas
(其它人移植的精简cas功能后的版本,更快速和低耗)
AMD_CAS_lite_luma.glsl
AMD_CAS_lite_rgb.glsl
AMD_CAS_lite2_rgb.glsl
🔺 变体 luma 和无其它后缀名的版本都只作用于亮度通道(预处理)
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
NV-NIS#
移植自NVIDIA Image Scaling (NIS),原始设计用于游戏,是一种基于lanczos的常规放大算法,并辅以自适应锐化改变观感。
🔺 此算法的振铃伪影异常明显,并且会随着锐化强度的增加而愈发显著
NV-NVSharpen#
移植自NIS中的锐化模块,原始设计用于游戏。
相关列表:agyild-nis
NVScaler.glsl
NVSharpen.glsl
相关列表:MOD (变体 rgb 作用于后处理,比常规版本开销微高,速度微慢)
NVScaler_rgb.glsl
NVSharpen_rgb.glsl
🔺无后缀名的版本都只作用于亮度通道(预处理)
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
guided#
快速降噪。
相关列表(精简):
guided.glsl
guided_fast.glsl
guided_s.glsl
hdeband#
高质量去色带。
相关列表(精简):
hdeband.glsl
NL Means#
移植自FFmpeg的nlmeans滤镜。非局部均值降噪
以上三项由同一开发者移植,在项目中提供了更多说明AN3223-nlmeans
相关列表(精简):
nlmeans.glsl
nlmeans_lq.glsl
nlmeans_temporal.glsl
相关列表:MOD (变体 dx 用于避免 --gpu-context=d3d11
下运行时的冻结问题)
nlmeans_dx.glsl
nlmeans_lq_dx.glsl
nlmeans_temporal_dx.glsl
作者仓库存在大量其它变体,但几乎只是预设参数不同的区别。
🔺变体 temporal 只能在 --vo=gpu-next
下使用(可利用时域信息进行处理)
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
Noise Static#
优化静态的色度/亮度噪点。
🔺 需要 mpv.conf 中设置为 --deband-grain=0
的前提下使用
相关列表:pastebin-hook1 & pastebin-hook2
noise_static_chroma.glsl
noise_static_luma.glsl
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
其它#
相关列表:
来源非全部可查
garamond13-hooks
Tsubajashi-hooks
voltmtr-lumasharpen
color_alt_luma.glsl -- 色彩黑白翻转(亮度通道)
color_alt_rgb.glsl -- 色彩黑白翻转
colorlevel_expand.glsl -- 色彩范围扩展
colorlevel_expand_chroma.glsl -- 色彩范围扩展(色度通道)
colorlevel_expand_luma.glsl -- 色彩范围扩展(亮度通道)
colorlevel_shrink.glsl -- 色彩范围收缩
colorlevel_shrink_chroma.glsl -- 色彩范围收缩(色度通道)
colorlevel_shrink_luma.glsl -- 色彩范围收缩(亮度通道)
eq_rgb.glsl -- 色彩偏移
eq_rgb_next.glsl
flip_h.glsl -- 水平翻转
flip_v.glsl -- 垂直翻转
gray_chroma.glsl -- 灰度化(色度通道)
gray_rgb_601.glsl -- 灰度化(bt601)
gray_rgb_709.glsl
gray_rgb_2020.glsl
gray_rgb_dp3.glsl
rotate_180.glsl
fake_hdr.glsl -- 伪HDR,过饱和
faux_hdr.glsl -- 伪HDR,过饱和
fast_gaussian_blur_next.glsl -- 快速高斯模糊
LumaSharpen.glsl -- 亮度通道的锐化
gaussianBlur_next.glsl -- 通用高斯模糊
unsharpMask_next.glsl -- 通用锐化
minblur_usm.glsl -- 通用锐化,程度细微
saturate.glsl -- 通用过饱和
TsubaUP.glsl -- 基于FSRCNNX
unsharp.glsl -- 通用锐化,程度轻微
unsharp_masking_next.glsl -- 通用锐/糊化
YIQ_converter.glsl -- YIQ转换,过饱和
☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲☲
实际工作顺序#
着色器按工作插入位置可大致分为“预处理”与“后处理”两类,此由着色器本身决定,无法被设置文件更改。(在统计信息的第二页可直观查看)
如图,以 combining planes 为大致的分界线 —— 之前的步骤为预处理, --cscale=xxxxx
也在此处(图中被krig替换)。之后的步骤为后处理, --scale/dscale=xxxxx
也在此处。
因此,着色器的实际工作顺序,首选遵守该原则,其次才是用户指定的顺序。(此外在同为预处理与后处理类的着色器之中也有顺序限制,具体请自行测试)
预处理: 所有 luma、 chroma 变体; ACNet FSRCNNX AiU Krig RAVU NNEDI3 SXBR CAS NoiseS minblur_usm
后处理: 所有 yuv、 rgb 变体; A4k Anime4K_legacy_09 SSDS SSSR Adaptive colorlevel saturate unsharp unsharp_masking_next
混合: Anime4K_legacy_10
🔺 (此处未完整列出全部着色器)
叠加放大类着色器的注意点#
前一节已经讲了着色器加载顺序上的一些逻辑,这里补充放大类着色器的专属问题。
不同的放大类着色器对原尺寸的定义不同:
直觉认知里,1080p的视频不管怎么拉伸,源的原尺寸始终是1080p。符合这一逻辑的是Anime4k中的 Original 变体
反直觉的是,经过上一级着色器放大后的源大小变成了放大后的尺寸。符合这一逻辑的是Anime4k中的其它放大类变体,以及大多数放大类着色器
例一:在1440p显示器上打开一个1080p视频全屏,此时你(只要性能足够)可以无限叠加n个 Anime4K_Upscale_Original_x2.glsl
无障碍实现2^n倍放大。
例二:同上的硬件环境,720p的视频先调用了nnedi3再调用fsrcnnx进行二次放大,你可能发现无法真实触发后者,原因在于720p的视频经过nnedi3第一次放大后被后方加载的fsrcnnx认为源是(720x2=)1440p,此时2k的显示器在全屏模式的分辨率并不满足fsrcnnx的最小放大触发倍率(1.3)
通过快捷键动态启用与禁用#
适用于 input.conf
语法结构:
键位(组合)名 change-list glsl-shaders (不带符号"-"的)后缀 着色器文件名(可多项,用半角符号";"分隔)
《string-list-and-path-list-options》
可用后缀 |
说明(不推荐的语法可能在将来被弃用) |
---|---|
-set |
设置着色器列表为一个或多个着色器(使用 |
-append |
追加一个着色器到着色器列表的后方 |
-add |
追加一个或多个着色器到着色器列表的后方 (同 |
-pre |
增加一个或多个着色器到着色器列表的前方 (同 |
-clr |
清空着色器列表 |
-remove |
移除一个列表中已存在的着色器 |
-toggle |
追加一个着色器到着色器列表的后方,如果已存在则移除它 |
支持使用mpv的相对路径(比如 ~~/
指向主设置文件夹)
例如:
CTRL+1 change-list glsl-shaders set "~~/shaders/KrigBilateral.glsl;~~/shaders/ravu_zoom_r3.glsl;~~/shaders/AMD_CAS_lite_luma.glsl"
其它示例可参考仓库内 input.conf 的“着色器列表”部分。
速度的对比参考#
🔺 (此节的信息已过时。我对部分着色器的跑分测试参见 此处)
使用个别着色器进行两倍放大,计算每秒所能生成的最大帧数。数值越大说明速度越快,越适合实际观看时使用,数值低于视频原始帧率即完全不可用。
实际速度极大取决于视频的质量、缩放倍率和你的显卡性能,因此两表中同一个 fsrcnnx16 的性能结果差异不符合常理也不奇怪,数据仅供大概参考。
数据来源 GitHub@Alexkral(NVIDIA GTX 1080)
着 色 器 |
mpv 2x : 1080p → 2160p |
---|---|
A4k M |
407 |
A4k L |
287 |
FSRCNNX 8 |
256 |
AiU Fast |
145 |
FSRCNNX 16 |
93 |
A4k UL |
75 |
AiU M |
51 |
AiU HQ |
26 |
数据来源 GitHub@Artoriuz
算法&着色器 |
mpv 2x : 720p → 1440p |
---|---|
bilinear |
468 |
spline36 |
383 |
ewa_lanczossharp |
338 |
RAVU lite r4 |
307 |
RAVU r4 |
238 |
NNEDI3 16 8x4 |
210 |
SSSR |
169 |
NNEDI3 32 8x4 |
156 |
RAVU zoom r4 |
138 |
NNEDI3 64 8x4 |
99 |
NNEDI3 128 8x4 |
55 |
FSRCNNX 16 |
52 |
NNEDI3 256 8x4 |
30 |
附录#
Anime4k v3-v3.1#
这里是旧版a4k的说明。
旧版工作在luma通道,新版工作在RGB空间。
RA Upscale+Deblur_CNN Deblur_CNN 这些变体在v4中整合在 Restore 模块中
🔺 新旧版本的模块混用可能产生BUG
M → L → UL 性能要求逐渐提高,处理结果越好
多种模块组合使用的大致顺序推荐:降噪 → 去模糊 → 加深线条 → 细化线条 → 放大(→ 额外 → 二次放大)→ 抗重采样伪影
文件数量众多,完整详情直接见文档 bloc97-a4k
去模糊系列:图像尺寸保持不变,以超分辨率的方式进行去模糊。
副作用: CNN_M 和 CNN_L 变体可能引入棋盘伪影
开发者推荐模块为 Anime4K_Deblur_DoG.glsl
相关列表:
Anime4K_Deblur_DoG.glsl
Anime4K_Deblur_Original.glsl
Anime4K_Deblur_CNN_M.glsl
Anime4K_Deblur_CNN_L.glsl
降噪系列:Mean → Mode → Median → Heavy 速度逐渐变慢。
副作用: Mean 可能引入模糊, Mode 可能引入锯齿, Median 可能引入色带伪影
开发者推荐模块为 Anime4K_Denoise_Bilateral_Mode.glsl
相关列表:
Anime4K_Denoise_Bilateral_Mode.glsl
Anime4K_Denoise_Bilateral_Median.glsl
Anime4K_Denoise_Bilateral_Mean.glsl
Anime4K_Denoise_Heavy_CNN_L.glsl
线条加深系列:使线条更暗,增加感知对比度。
副作用:对线条的误识别可能引起细小图形变暗。
Fast 和 VeryFast 变体虽然显著提升速度但牺牲了细节质量
开发者推荐模块为 Anime4K_DarkLines_HQ.glsl
相关列表:
Anime4K_DarkLines_VeryFast.glsl
Anime4K_DarkLines_Fast.glsl
Anime4K_DarkLines_HQ.glsl
线条细化系列:特别适合老旧动漫
副作用:细节变糊。对线条的误识别可能引起细小图形变形。
Fast 和 VeryFast 变体的问题参考同前。在高分辨率源(≥1440p)上 HQ 变体速度可能过慢。
开发者推荐模块为 Anime4K_ThinLines_HQ.glsl
相关列表:
Anime4K_ThinLines_VeryFast.glsl
Anime4K_ThinLines_Fast.glsl
Anime4K_ThinLines_HQ.glsl
线条重建系列:(v4版 Restore 模块的预览版)
个人推荐模块为 Anime4K_Line_Reconstruction_Heavy_L.glsl
相关列表:
Anime4K_DeRing.glsl
Anime4K_Line_Reconstruction_Light_L.glsl
Anime4K_Line_Reconstruction_Medium_L.glsl
Anime4K_Line_Reconstruction_Heavy_L.glsl
抗重采样伪影系列:尝试减少由非线性重采样引起的重采样伪影(振铃/锯齿)
高分辨率源(≥1080p)使用 DoG 变体可在不影响质量前提下显著提升速度
副作用: CNN_M 和 CNN_L 变体的问题参考同前。
相关列表:
Anime4K_RA_CNN_M.glsl
Anime4K_RA_CNN_L.glsl
Anime4K_RA_CNN_UL.glsl
Anime4K_RA_DoG.glsl
放大(混合)系列:不同变体组合可执行x4甚至x8倍放大。
🔺 启用将覆盖 mpv.conf 中指定的 --scale=xxxxx
算法
🔺 CNN 和 DoG_x2 变体最小缩放触发倍率为1.2, DTD_x2 和 Original_x2 变体无限制条件但即使缩小也工作
其中 DTD 即Darken-Thin-Deblur三个着色组合成,通过使线条变暗,细化然后去模糊来提升源图像中线条的感知质量。
也可以通过Anime4K_DarkLines + Anime4K_ThinLines + (Anime4K_Deblur or Anime4K_Upscale_Deblur)自行组合拼接
DoG_x2 和 Original_x2 变体在高分辨率源(≥1080p)不影响质量前提下显著提升速度。
副作用:
CNN 虽然质量好但速度较慢。 CNN_M 和 CNN_L 变体的问题参考同前。
注意组合顺序,当此类着色器先执行x2图像放大后,之后放置的其他着色器执行速度慢至少4倍。
相关列表:
Anime4K_Upscale_CNN_M_x2.glsl
Anime4K_Upscale_CNN_L_x2.glsl
Anime4K_Upscale_CNN_UL_x2.glsl
Anime4K_Upscale_DTD_x2.glsl
Anime4K_Upscale_DoG_x2.glsl
Anime4K_Upscale_Original_x2.glsl
放大为主的混合列表:
Anime4K_Upscale_CNN_M_x2_Deblur.glsl
Anime4K_Upscale_CNN_M_x2_Denoise.glsl
Anime4K_Upscale_CNN_L_x2_Deblur.glsl
Anime4K_Upscale_CNN_L_x2_Denoise.glsl
Anime4K_Upscale_CNN_UL_x2_Deblur.glsl
Anime4K_Upscale_CNN_UL_x2_Denoise.glsl
Anime4K_Upscale_DoG_x2_Deblur.glsl
Anime4K_Upscale_Original_x2_Deblur_x2.glsl
额外:
可用于1440p/4K监视器的第一次和第二次放大,缩小中间图像的比例,以便第二次放大过程不会超出屏幕大小并浪费处理能力
Anime4K_Auto_Downscale_Pre_x4.glsl