madVR 概述

(madVR 的开发者,德国人 Madshi)对于 madVR 渲染器,使用 PC 视频播放器的用户不会陌生。说它是 PC 电脑上的最强渲染器一点都不为过。有了它,PC 播放的画质超过顶级蓝光播放器不再是 “不可能的任务”。即使是这个神一般的工具,使用起来依然与大多数 PC 软件一样 - 设置选项繁多而且复杂。再加上这是一个由德国人开发的软件,菜单统统是英文的,对于大多数用户来说并不是很友好。

即使看到过几篇关于使用电脑播放器 + madVR 播放的文章,感觉作者也只是人云亦云,一知半解。以为自己安装了 madVR 就万事 OK 了。殊不知,madVR 的强大远远超出了人们的想象。

幸好,一名叫做 “萬年冷凍庫” 的朋友(应该是台湾人),在 Blogspot 发布一篇大约 3 万字的 madVR 使用指南。详细到每一项设置该如何调整,最终测试效果如何。相信读完这篇文章,大家都能成为 PC 视频播放的高手。原文在此:萬年冷凍庫:系列之 3─最強渲染器 - madVR

由于一些不可抗力的原因,原文页面无法被大多数人访问,因此一烧体验馆将此文章搬运过来,分 2 篇进行连载。

Devices

播放器准备工作

正文开始:(以下约一万字,请收藏文章后阅读)

--------------- 分割线 ------------

在介绍这东西之前,先用张图来复习一下上回提到的播放过程:

这边可以看到视讯输出的最后一道过程就是 Video Renderer (视讯渲染器) 的部分,同时这个部份也是对画质影响最吃重的一个部分,在来源档案相同的前提下,可以说影像播放的画质好坏取决于渲染器之上也不为过,而 madVR 正是以此为最大卖点的渲染器,此渲染器是由 DOOM9 论坛上的 madshi 所开发,不惜一切效能代价以换取最大的画质表现,也因此这个渲染器对显卡的要求稍微吃重些,超越了我们一般对播放软件之硬件要求的常识 (这个常识是指,只有玩游戏才需要用到较高阶的显卡,影像播放只需要低阶显卡甚至内显已可胜任),我们最好以 run 一个游戏的标准来看待其所需要的效能。但并不是说只有好的显卡才能用这个渲染器,事实上 madVR 内部的选项相当弹性,根据设置的不同它可以让低阶卡跟内显顺顺跑,也可以把 TiTan 操爆,一般来说,我建议在能力许可的范围内选择一张不算太差的独立显卡才能发挥它该有的战力。

翻译一下开发者 madshi 提到关于 madVR 的一些特色:

  • 高质量的 chroma upscaling (下面内文会再解释这东西)
  • 高质量的 scaling (各种升降频算法)
  • 高质量的 YCbCr→RGB 转换
  • 对屏幕执行 gamut 和 gamma 的调色校正
  • 内部演算皆为 16bit 的高精度处理
  • 最后处理完成的 16bit 讯号 dithered 降转成 8bit RGB 输出
  • 避开各种显卡内加料 (对画质有负面影响) 的算法
  • 所有作业皆透过 GPU shaders 完成 (IVTC 运算除外)
  • 以追求最高质量为第一优先

再重申一个观念,视讯档案的播放,解码吃的是 CPU 效能 (硬解例外,硬解是使用显卡上的译码模块,既不吃 CPU 也不吃 GPU 效能),而渲染才是吃显卡 GPU 效能,使用 madVR 时,GPU 的效能很重要。

接下来进入正题,首先先到官方讨论页下载最新版的 madVR

madVR - 高品质的视频渲染器(GPU 辅助) - 末日 9 的论坛 (doom9.org)

或是到 madVR 官网下载:

http://madvr.net/

http://madvr.com/

madVR 目前还没有安装档,madshi 说他想到 v1.0 时再做安装档,所以下载后解压缩完自行将文件夹丢到想放的位置,像我还是习惯丢到 Program Files (x86) 下面,之后进 madVR 文件夹里点一下 "install.bat" 就会出现滤镜注册成功的讯息,以后要更新 madVR 只需要将文件夹整个盖过去即可。

"restore default settings.bat" 这个执行档可回复所有的 madVR 设定到初始默认值,如果设定时乱了套或是出现问题,可以点击这个执行档,重新开始。

madVR 的初始默认值是重视效能取向和稳定性的,也就是让大部分的显卡都可以正常运作为前提的设置,懒的研究设置的朋友用默认值也可以顺顺使用 madVR,但如果想要进一步发挥 madVR 强大的功能,我们就再继续看下去。

到 MPC-BE(小烧注:MPC-BE 播放器,其余支持滤镜的播放器也可以)里的选项 > 视讯底下应该可以选择 madVR 了

播放影片时,右键 > 筛选器,底下选择 madVR 可以打开 madVR 的设定页,或是右下角的工具栏 madVR 图示上点右键并选择 "Edit madVR settings",或是直接按 Ctrl+S,或是在外挂滤镜里加入 madVR 并点两下都可以打开设定页

显示器设置

打开设定页,并将项目展开:

"devices" 底下为目前连接的屏幕,目前显卡抓到几个这边看到的就是几个,将屏幕底下的项目展开可再针对各个屏幕做设定

第一个要先选择屏幕的种类,我想应该不用多做解释了,是哪种屏幕就选哪种,一般液晶 / 电浆 / OLED 屏幕或电视选择 "Digital Moniter/ TV" 即可,如果是投影机则选择 "DigitalProjetor"

properties

到 "properties" 这页,选择该屏幕的 output level,一般而言计算机屏幕选 0-255,电视的话选 16-235,不过有些较新的电视也接受 0-255 的讯号,这边注意电视的设置与 madVR 的设置要一致,否则有些色阶会被切掉,俗称黑位错误。(显卡控制接口上的设置则一律设为 "由应用程序决定" 即可,madVR 会决定最后输出的 output level)

详细可参考我的另一篇:浅谈 HTPC 与颜色管理─绪论与前置作业 (1/4)

而 bitdepth 的选择,这边可以维持预设的 "auto" 让 madVR 自行判断即可。

如果屏幕是原生 8bit (16.7 百万色) 或更高,或 6bit dither (抖色) 处理后有办法完整显示 16.7 百万色,则选单里可选择 8bit;如果屏幕是 6bit dither (抖色) 成 8bit 且只能显示 16.2 百万色的话,且屏幕自身的抖色效果不佳的话,选单里可选 6bit 或 7bit,madVR 会增加抖色 (dithered) 输出的强度,色阶过渡会比较好点 (但会增加一些噪点),一般而言 TN 面板的 LCD 屏幕 6bit 抖色的居多,IPS/VA 面板比较有可能是原生 8bit 或以上。

至于 10bit 输出,除非能完全确定屏幕能够接受 10bit 讯号输入并且显卡驱动程序也能够输出 10bit,才去选择这个选项,如果不能 100% 确定,那还是建议选择 8bit 输出,madVR 的 dithered 8 bit 输出的效果跟 10bit 输出其实差异很小,实际观赏时肉眼几乎难以查觉差异。

另外需注意,10bit 输出,只有在 D3D11 的 FSE (全屏幕独占) 模式下 (这是 general serttings 那边的设定) 或是 win10 操作系统下的窗口全屏幕模式才能达成 (不过目前排除了 NV 卡,因为其驱动以此法输出 10bit 会有造成 banding 的 bug 出现,故 NV 卡目前除了 FSE 模式外都是强制输出 8bit)。

如果你无法确定你的屏幕要选择哪种 bit 数,请自行用灰阶影片来测试,看选择哪一个 bit 数的色阶过渡效果最好,色阶断层 (banding) 最不明显,那个就是最适合你的屏幕的 bit 数设置。

另外关于 6bit 以下的选项,那些只是给你做 dither 算法的测试时使用的,不要做为常驻选项

关于 dither 这技术的原理可参考此篇文章

[心得] 淺談人眼視覺特性與其應用 - 看板 LCD - 批踢踢實業坊 (ptt.cc)

3D format 这项,在观看 3D 影片时才有作用,一般设为 auto 就好,如果显示设备接受特定的 3D 显示形式才需要去切换

calibration

到 "calibration" 这页,可以看到四个选项,一般屏幕如果没有经过校色器校色过或是不确定色域的话可维持选第一项 "disable calibration controls for this display" 就好了,最下面那个 "disableGPU gamma ramps" 如果没有校色过的话就不要勾选

如果该屏幕经过校色器校色过或是屏幕有色域选项而且其出厂标准可以信任的话,可以选第二项 "this display is already calibrated",gamut 跟 gamma 就依校色时的条件去选择

第三项 "用 yCMS 校色" 跟第四项 "用 3DLUT 檔校色",一样需要有校色器的配合,yCMS 是将校色过后的三原色跟灰阶信息自行输入,而 3DLUT 则是用校色后的信息产生一个独立的 3DLUT 档来使用,目的都是为了能让片源配合屏幕及环境光源状况达到最正确的输出,能够呈现影片制作者原本要表达的画面,而不会因为显示器和传输媒介的个别差异而被扭曲得乱七八糟。后面两项使用的话显卡内存必须要有至少 1GB 以上,因为这两项功能会建立 Lookup tables,会占用大量的显卡记忆空间。

有兴趣的朋友可先参考此网址:

http://www.avsforum.com/t/1471169/madvr-argyllcms

目前由于 ArgyllCMS 和 dispcalGUI 的两位开发者都把 madVR 加入支持,所以已经有一套很完善而且简单的校色流程,只需要去租用一个校色器 (建议是光谱仪 colormunki photo、colormunki design 或 i1 pro 之类的),照上面网址教学操作很简单就能完成,做出必要的 3DLUT 檔。

当然校色的领域博大精深,其中有不少的 know-how,所以也请原谅我的无限期拖稿,等小弟玩出些心得会再另发专文分享。

display modes

到 "display modes" 这页,这部分是在播放影片时实时改变显示模式用的,可选择播放时改变或是全屏幕时再改变,然后再选择结束播放或是结束全屏幕时要不要改回来。这部份的功能是在显示设备有支持多种显示模式时使用的 (像有些电视或投影机有 24P 输入模式,或要在 59Hz 和 60Hz 之间切换),可让其配合影片更改屏幕更新率或是分辨率,若屏幕没支持的话这部分不用勾选。

解释一下选项:

  • switch to matching display mode…(启用播放时切换显示模式)

    • …when playback stars (只要开始播放就切换)
    • …when media player goes fullscreen (只要全屏幕播放时才切换)
  • restore original display mode…(结束播放时切换回原来的显示模式)

    • …when media player is closed (播放器关闭时才切回去)

    • …when media player leaves fullscreen (只要退出全屏幕就切回去)

注意要使用自动切换功能,必须在下方的 "list all display modes madVR may switch to:" 底下那个空格填入屏幕能使用的显示模式,没填的话就没有自动切换作用。

以我的 panasonic 电视为例子来说,它的更新率在 1920*1080 下支持 23Hz (实际约 23.976 附近)、24Hz、29Hz (实际约 29.970 附近)、30Hz、59Hz (实际约 59.94 附近)、60Hz 这六种,将其输入可以让 madVR 更精确的切换电视屏幕更新率以对应不同帧率的影片,以上面例子来说,我会在字段输入 1080p23、1080p24、1080p59、1080p60 这四种 (29Hz 跟 30Hz 没必要,因为用其倍数的 59Hz 跟 60Hz 来显示更好),1080p23 对应帧率 23.976 fps 的影片,1080p24 对应帧率 24 fps 的影片,1080p59 对应帧率 29.970 和 59.940 fps 的影片,1080p60 对应帧率 30 和 60 fps 的影片。

当然这些只是举例,如果是用 2K 或 4K 屏幕的话,前面请自行换成 1440p__或 2160p__

另外有个 "treat 25p movies as 24p" 这功能要配合 Reclock 使用,目的是让欧规 PAL25p 的影片能够降速到 24p 去配合 24p 的显示模式,如果没有在看欧规影片的话这部分也不用理会。

而 "hack Direct3D to make 24.000Hz and 60.000Hz work" 这个选项,在系统是 win8.1 或 win10 时才有作用,win8.1 和 win10,有时候会发生屏幕更新率无法在需要时 (要对应 24fps 或 60fps 影片时) 变更成 24Hz 和 60Hz (屏幕更新率会锁在 23.976Hz 或 59.940Hz),这个选项可以解决这个问题,但可能有个副作用是会造成 presentation queues 填不满,所以依个人需要决定要不要勾。

此外,“display modes"这页的设定还有另一个分页"custommodes”,这是 madVR 的另一项有用的屏幕更新率自定义及微调功能,详情请参考我的另一篇介绍文章:

系列番外篇之 3─是时候抛弃 Reclock 了? madVR 屏幕更新率微调功能简介与实作

color & gamma

到 "color & gamma" 这页,如果方才的 "calibration" 那页里面选择的是第一项 "disablecalibration controls for this display",gamma 是预设为 purepower curve 2.2,这时勾选 "enable gamma processing" 并设定为 pure power curve2.2 的话不会有任何改变,如果设为其他值才会改变 gamma

"calibration" 这项如果有设定,举个例子,假设我设定 gamma 为 BT.709 1.8,这时不勾选或是勾选 "enable gamma processing" 并设定为 BT.709 1.8 的话都不会有任何改变,但如果设为其他值就会改变 gamma 的输出

现在回到为什么要改变 gamma 输出的问题,主要是为对应校色时跟你实际观看的环境的差别,例如你的屏幕可能是在暗室校色为 gamma2.4,那么在同样的暗室观赏,不用去动 gamma 值就可以看到影片中的亮部跟暗部细节,但是你如果把同样的屏幕拿到明室中来观看,因为人的眼睛会根据环境光线调整瞳孔大小,所以这时一样的设定可能会让你看不到影片中的暗部细节,这时就要把 gamma 降到 2.2 或是更小来输出,才能得到同样在暗室观赏的效果,但 madVR 不会知道你在哪种环境底下来看影片,所以才需要 "enable gamma processing" 这项来手动更改 gamma 输出

如果是用校色器校色,而且你看影片的环境光线跟校色时选用的 gamma 曲线能够配合的话,那就不需要勾选 "enable gamma processing" 来修正 gamma 值了。

这边我还是假设各位是未校色的屏幕并且 "calibration" 那页里面选择的是第一项 "disablecalibration controls for this display",那么此处建议底下选择 "purepower curve",gamma 值一般正常预设 2.2,不过可依环境光源来做调整,较暗的环境中,可增加 gamma 值到 2.4,全暗环境甚至可到 2.6,如此可看到较细微的阶调变化;在较亮的环境中,就必须减少到 2.0 或更低,否则就会看不到暗部细节,不过个人建议还是先设 2.2,实际播放影片时再依当时环境用热键做暂时性的微调就行了。

另外注意到上方有手动颜色控制,可调整对比、亮度、饱和度,色调的部分,这个一般不用去改,有需要再去调就好了 (屏幕方面,我比较建议先调屏幕自身的控制面板,之后不满意再来调这个地方)。

另外总结一下目前 madVR 可以做手动颜色控制的地方有三个:

  1. 在 madVR 选项里的 "device" 下的 "color & gamma",针对每个屏幕个别调整,也就是上面的那个。
  2. 热键设定里有一堆开头 "source" 的项目,可建立热键,在播放影片时随时用热键调整,调整结果不会被储存。
  3. 播放软件的调整接口,效果同 1.,不过调整结果对所有屏幕都会有作用,如下图:

HDR

到 HDR 这页

如果你没有观看 HDR (High Dynamic Range) 影片的需求的话这边设定可以不用去管它,** 它对于 SDR (Standard Dynamic Range) 的影片是没有任何影响的,而我们目前观看的绝大多数影片都是 SDR 的,** 目前只有一些非常新的 4K 影片会采用 HDR 这项技术,HDR 影片通常会是 BT.2020 色域、10bit 色深。以下简略解释各选项

  • “let madVR decide”,全部交给 madVR 自行判断,如果屏幕支持 HDR 的话,madVR 会送 HDR 影片和 metadata 的讯号给屏幕 (同第二项 "passthroughHDR content to the display");如果屏幕不支持 HDR 的话,madVR 会使用 pixel shader math 把 HDR 影片转成 SDR 讯号送出 (同第三项 "convert HDR content to SDR by using pixel shader math",但效果等同第三项未勾选 "restoredetails in compressed highlights",转换后细节损失比较多,故屏幕不支持 HDR 的话我建议直接选择第三项)。
  • “passthrough HDR content to thedisplay”,** 将 HDR 内容和 metadada 不经处理直接送给屏幕,须注意选择此选项屏幕必须完整支持 HDR 内容播放,屏幕不支持 HDR 这选项就没有任何意义。**madVR 在 v0.91.11 之后版本才能完整使用这个选项的功能,支持两种 API 将影片的 metadata 传送给电视去辨识。一种是 NV 或 AMD 卡专用的 HDR API,必须搭配新的驱动,好处是 win7、win8.1、win10 皆可使用;另一种是 win10 内建的 D3D11/DXGI APIs.,这个每家显卡都可用,但只有 win10 下能用,播放时必须使用 D3D11 模式。("calibration" 设定里有 3DLUT 档的话会绕过)
  • “convert HDR content to SDR by usingpixel shader math”,选择此选项会将 HDR 之内容妥善转换成 SDR 内容后输出给一般 SDR 屏幕使用 ("calibration" 设定里有 3DLUT 档的话则会接在后面套用),如果屏幕不支持 HDR 的话我建议选择此项。
  • “convert HDR content to SDR by usingan external 3DLUT”,选择此选项则须利用校色器跟软件建立 HDR→SDR 转换的 3DLUT 给它使用,转换后输出 SDR 内容给屏幕 ("calibration" 设定里有 3DLUT 档的话会绕过)
  • “process HDR content by using pixelshader math”,输出 HDR 内容给屏幕,选择此选项屏幕也必须支持 HDR 播放,但是是由 madVR 来处理色域跟亮度的转换,例如电视支持 HDR,但是色域是 DCI-P3 的 case ("passthrough HDR content to the display" 那项则是由电视本身处理色域跟亮度的转换),有时候电视本身没办法很好的处理 HDR 内容的色域跟亮度转换时就适合选择此项。("calibration" 设定里有 3DLUT 档的话会绕过)
  • “process HDR content by using anexternal 3DLUT”,选择此选项则须利用校色器跟软件建立 HDR→屏幕色域转换的 3DLUT 给它使用,选择此选项屏幕也必须支持 HDR 播放。("calibration" 设定里有 3DLUT 档的话会绕过)

以下以第三项 "convert HDR content to SDR by using pixel shader math" 为例说明下方之子选项:

target peak nits

可设定范围是 12010000,HDR 影片使用的亮度范围是 010000 nits,它必须有一个支持 HDR 的显示器才能正常显示 (当然还有显卡也要支持),而一般 SDR 的显示器最大亮度大概在 80~300 nits (例如我的电浆电视校色后最大亮度设定在 120nits),在 SDR 显示器上播放 HDR 影片是没办法显示正确亮度的,需要经过色调映射 (tone mapping),这个选项就是让你设定 HDR 影片转换后的亮度,让 HDR 影片可以在 SDR 屏幕上正确显示,不过并不是屏幕亮度设多少这选项就一定要设多少,还必须实际播放测试后去找出最适合的选项。这边设置的数值越低,亮度中间值会拉越高 (整体画面越亮),数值越高,亮度中间值拉越少 (整体画面越暗)。像我的电视亮度实际大约 120nits,但是这一选项我设定在 200nits 看起来效果比较好。

tone maping curve

设定色调映像用的曲线,建议选择默认的 BT.2390。

gamut mapping algorithm

影片里大于屏幕色域的画素,如果什么都不做的话,色彩坐标超出的部分会被剪除 (例如一个画素 RGB 为 50,320,40,屏幕 255,255,255,则该画素显示时会变成 50,255,40),会造成 hue (色相) 跟原本的产生差异,颜色会偏移,因此较好的做法是透过降低亮度或降低饱和,等比例去分配 RGB 值,以求在屏幕色域能显示的范围内尽量让 hue 保持不变。此项是选择色域转换所使用的算法,不同的算法设定会造成转换后的颜色呈现有些微的差异,有兴趣的话可慢慢测试不同设定,不然建议先维持默认选项即可。

fix too bright & saturated pixelsby

luminance reduction (降亮度)、saturation (降饱和),要用哪个则是个难题,有些 HDR 片源适合降亮度,有些适合降饱和,这边建议维持预设 "dynamic luminance & saturation reduction",让 madVR 自行判断并做动态调整。

measure each frame’s peakluminance

勾选这项会让 madVR 自己计算每一帧的巅峰亮度值,虽然这项信息 HDR metadata 里面有但未必是准确的,因为只有单一数值,而每个帧的亮度是一直变化的,实时测量才能让 madVR 达成更精确的亮度转换 (tone mapping)

restore details in compressedhighlights

在压缩高亮度区域的数值时,因为数值会非常接近,可能导致该区域的细节遗失,勾选此选项的话,会在需要时透过锐化的方式让细节比较容易保留下来

activate anti-bloating filter

AB 滤镜,因为上面有用到锐化故建议勾选

activate anti-ringing filter

AR 滤镜,因为上面有用到锐化故建议勾选

此外,关于 HDR metadata 输出通道,做一些补充说明:

1.Windows 10 Creator’s Update 底下的屏幕设定里面有个选项叫 "HDR and advanced color"(不太确定中文版翻成什么),关掉的话屏幕永远跑 SDR 模式,开了的话有 HDR 的屏幕永远跑 HDR 模式,Windows 目前无法根据使用者是否跑 HDR 影片或 HDR 游戏而自动把屏幕在 SDR 或 HDR 模式之间切换。

2. 关掉 "HDR andAdvanced Color" 这选项的话 PC 永远会送 SDR 内容给屏幕 (使用 A 或 N 卡自身的 HDR API 时例外,见第 4. 项),这时候如果用 madVR 播放 HDR 影片并选择第一项 "passthrough HDR content to the display",如果是 Intel 内显,OS/GPU 会自己做一个质量比较低的 HDR-> SDR 转换,这时候 HDR 影片看起来还是 OK 的,但质量差强人意。SDR 影片则不受影响,仍然是完美的。

3. 打开 "HDR andAdvanced Color" 这选项的话 PC 永远会送 HDR 内容给屏幕 (使用 win10 内建的 API),这时候 madVR 选择 "passthrough HDR content to the display" 的话,播放 HDR 影片时是完美的,但播放 SDR 影片时,OS/GPU 会自己做 SDR ->HDR 转换,这时候 SDR 影片看起来还是 OK 的,但质量称不上完美。非影片的部分,像桌面跟网页那些,也可能造成颜色异常。

4.Nvidia 和 AMD 自己的 HDR API 解决了上面提到的无法自动切换 HDR 跟 SDR 的问题,N 卡和 A 卡使用者只要把 win10 的 "HDR and Advanced Color" 这选项关掉,madVR 就自动会使用显卡自己的 HDRAPI,如此一来就可以自动切换屏幕的 SDR 和 HDR 模式,让 SDR 和 HDR 影片都可以的到最完美的播放效果。

5.N 卡驱动建议更新到 390.65 之后版本,太旧的会不支持显卡自身的 HDR API 或是有 bug。

6.AMD 的 HDR API 限制较多,只能在 10bitD3D11 输出模式下使用,而且必须在全屏幕下才能使用,N 卡的 HDR API 则无此限制。

7. 除非 A 卡或 N 卡的 HDR API 无法正常运作,不然非常不建议去开 win10 自身的 HDR 选项。

===================================

Processing

deinterlacing

到 "deinterlacing" 这页,建议如图设定:

这边是关于是否启动去交错的一些判断原则,我们让 madVR 自己判断,并选择在怀疑时不启动去交错。

下方 "only look at pixels in the frame center" 这个选项只对 film 型式的交错式 (隔行扫描 interlaced) 影片有影响,也就是说这选项在启动 madVR 的 film mode 时才有作用 (文后有解释)

我们知道对于这类影片必须对其作 IVTC 让它还原成 24p (60i→24p),但实际上我们有时候会发现录了一部电视播放的电影或动画下来,电视台常常在四边打上跑马灯或台标之类的东西,而这个跑马灯或台标却是 video 型式的 interlaced 讯号 (真正的 60i 无法 IVTC),因此我们要作 IVTC 时如果是对整个画面的像素作侦测,遇到这种情形时就很容易产生误判。因此勾选这个选项时就只会对画面中央部分的像素作侦测,避开那些跑马灯或台标可能出现的位置以免作 IVTC 时产生误判,但缺点就是这样侦测的效率较低,遇到动画这类常常有静止画面的影片在侦测是哪一类 pulldown 时就会花比较久的时间。如果会看电视台播放的电影或动画的话,建议勾选此选项,如果是看 DVD 原盘的话,则建议取消勾选。

这选项对 progressive 的影片完全没有影响,如果照字面理解为这选项不利于动画的话那是错误的理解,因为很多动画片源只要是蓝光或是录制下来压制时做过 IVTC 的,都会是 progressive 而非 interlaced。电视台录制下来的原始 TS 檔或是 DVD 原盘才有可能是 interlaced。

zoom control

接下来到 zoom control 这项,这边是设定画面缩放的一些控制条件,一般来说并不需要做任何设定,不过某些情形下这些选项是很有用的,这边稍微解释一下各个选项及其可能适用的范围

“disable scaling if image size changesby only”:设定片源跟目标分辨率低于几个像素时不执行缩放演算,而以添加黑边代替

“move subtitles”:移动字幕到画面底部或是影片可视范围内 (搭配下面的侦测跟移除黑边功能)

“automatically detect hard coded blackbars”:自动侦测影片内部的黑边,这里的黑边,并不是指影片比例跟屏幕比例不一样产生的那种黑边,而是指影片编码时就被包含在其中的黑边,这边我举两个例子来说明。

例 1:很多电影是用 21:9 这种超宽比例来拍摄,但是发行 BD 时,仍然按照规范采用 16:9 的画面比例编码 (影片分辨率 1920*1080),也就是会在 21:9 的画面中加入上下两道黑边让它变成 16:9 的画面 (如下图所示),这在一般 16:9 或 16:10 的显示器上播放当然没有什么问题,但是如果在 21:9 的显示器上播放的话,就会变成除了上下两道黑边外再加上左右两道黑边,因为要把 16:9 的画面塞到 21:9 的显示器中,不破坏画面比例的话左右必然会有黑边。但我们可以发现它的影像实际画面范围就是 21:9,明明放到 21:9 屏幕上却白白多加了上下左右四道黑边,这是一种浪费,于是 madVR 这个选项就是让它去侦测出实际的画面范围,以便让 21:9 的影像内容确实填满 21:9 的屏幕,不用浪费在四道黑边上面。

而就算我们在 16:9 的显示器上播放这类影像,用这功能把实际的画面范围抓出来的话,亦可以减少渲染输出时的效能消耗,因为渲染的范围减少了 (例如原本连黑边要渲染 1920*1080 的分辨率范围,抓出实际范围后只渲染有画面的 1920*823 的那部分)

例 2:有些 SD 的讯号源,像电视的 SD 频道,它的比例都是 4:3 (640*480),但其实里面的节目有些是 16:9 的画面,只是它塞在 4:3 的框架里去播,多加了上下两道黑边,如果放到 16:9 的屏幕上看的话,左右也会多出黑边 (如下图),一样也是白白浪费了上下左右四道黑边的范围。这选项也是可以把 16:9 的画面抓出来填满 16:9 的屏幕

继续解释一下下面的子选项

“if black bars change pick one zoomfactor”:如果黑边改变的话选取一个缩放比例

  • 不损失任何画面内容为原则
  • 砍除 25% 黑边
  • 砍除 50% 黑边
  • 砍除 75% 黑边
  • 砍除全部黑边

“if black bars change quickly back andforth”:如果黑边改变很快速的话

  • 不切换缩放比例低于 2 秒、5 秒、15 秒或 45 秒
  • 选定一个通用的缩放比例 (不损失原则、25% 黑边、50% 黑边、75% 黑边、全部黑边)

“notify media player about croppedblack bars”:多久通知一次播放器缩放比例改变 (实时、2 秒、5 秒、15 秒、45 秒)

“always shift the image”:切齐画面顶部或是底部

“keep bars visible if they containsubtitles”:如果上面有字幕的话保留黑边 (字幕出现后保留黑边 5 秒、15 秒、45 秒、3 分、10 分、30 分、90 分或永远)

“cleanup image borders bycropping”:除了黑边外也切掉一些实际画面边缘 (给一些边缘比较糟糕的影像使用),可切 1~7 个像素,从有移除黑边的地方切或是不管有没有黑边直接切

“if there are big black bars”:有大范围黑边的话,直接移除 25%、50%、75% 或全部黑边并放大影像 (有超出屏幕范围可能,小心使用)

“zoom small black bars away”:有小范围黑边的话直接裁掉放大,不过为了维持原画面比例会多裁到一点实际画面 (不是很确定,待确认)

“crop black bars”:勾选后会把片源视为裁切黑边后的分辨率跟宽高比例去处理,会影响到 profile 的判定 (如果有设置的话)

请注意,如果你觉得影片有被切的怪怪的情形发生时,请先把 zoom control 底下的选项都先全部取消勾选看看

image enhancements

接下来到 image enhancements 这项,这个选项是针对影片本身锐利度不足的片源,经由勾选的算法进行锐利化处理,其处理是在放大演算之前 (pre-processing),所以对于 1:1 呈现的影像也有效果。在这边,不论选择哪一种算法,锐化的效果都相当显著,但相对的,片源中的缺陷 (噪声) 也很容易被凸显出来,跟后面的 upscaling refinement (post-processing) 比较起来,同样的锐化算法,副作用也会更明显,故 ** 不建议当作常驻选项。** 这边建议是制作 Profile,像下图那样,第一个 Profile 是常驻,不勾选任何锐化算法的,其他 Profile 则有开锐化算法,并设定热键,视片源需要用热键来开启锐化算法。

关于 image enhancements 的锐化算法,理论上是越干净的片源越适合开,而且应该是有需要才开,有些片源锐化后整体观感不见得比较好。如果片源不够干净,你觉得有需要锐化,也可以开,自行取舍,看锐利度跟细节的提升愿不愿意用画面噪声或是锯齿变多这个代价去换。个别算法的简介到 upscaling refinement 那边一起写。

artifact removal

接下来到 artifact removal 这项

“reduce banding artifact”

banding,即色阶断层或称色带, google 一下就能看到一堆范例图了,这个选项是 debanding (去色阶断层) 功能,ffdshow video decoder 里面也有个 "去断层",跟这个基本上是一样的作用,但 madVR 的 debanding 因为处理的精度更高,侦测像素变化的机制更好,故效果会比 ffdshow video decoder 里面的去断层更好,使用这个的话就不需要再使用 ffdshow video decoder 的去断层了。

第一个选项是一般画面的 debanding 强度,第二个选项是光影淡入淡出时的 debanding 强度,建议设置如下,保持在 low 就有不错的效果,或是第二个选项可以选择 medium 或 high,因为光影淡入淡出是比较容易出现 banding 的地方,但基本上还是看片源而定。越高的设定有越好的 debanding 效果,不过相对的也可能损失一些画面细节。

这个选项会吃掉一些显卡效能,但不会太多,显卡不差的话建议常时保持在 low,有一定的 debanding 效果,而且几乎不会吃到画面细节。

不过对于一些 4K"原生"10bit 以上的影片而言,比较不容易出现 banding,这个选项就不需要开,可以省下一些效能,像我自己是设一个 profile 让它播放 4K 10bit 的影片时不启用

这边也简单讨论一下 banding,维基上有个简介:

色彩带 - 维基百科,自由的百科全书 (wikipedia.org)

基本上,我们现在可以取得的大部分片源,包括 BD,或电视台播送的讯号,RGB 都是只有 8bit 的色深而已,也就是说,电影母带在制作成 BD 时就可能会有 banding 产生了。再来,如果我们对 BD 或电视讯号再进行压制编码,由于流量或色深的不足,这个过程也可能再产生 banding (这也是为何现在有人喜欢用 10bit 压制影片的原因,因为在同量的流量下可以很好的抑制 banding 的产生)。再来,影片都是以 YUV 色域储存的,在计算机上播放时还必须经过 YUV→RGB 的转换以及 Y/C 伸张 (16235 伸张成 0255),这个转换的过程如果精度不够高也可能产生 banding,而 madVR 本身的高精度转换和 dithered 输出就很好的避免了这个步骤下 banding 的产生,但别忘了我们无法控制来自片源的 banding,所以 madVR 才又加入 debanding 的算法来进一步消灭掉所有的 banding 问题,这也是为何我会建议把这个选项常时开启的原因,就算是观看 BD 原盘它还是有作用在的。

这边提供一个测试影片:

梯度 - 2k (mediafire.com)

各位可以试试看在 EVR-CP 底下关闭全浮点运算、EVR-CP 开启全浮点运算、madVR 默认值、madVR 启用 debanding 这四种状况来比较 banding 的差异,基本上第一种情形 banding 最明显,第二、第三种会有接近的结果,第四种则几乎没有 banding 了,色阶的过渡会非常平滑。

这边也提供一个 madVR 的 debanding 改善压制过程产生的 banding 的范例,看到以下四张图片 (点图放大):

madVR 无开启 debanding,可发现渣介脸上有明显条纹

开启 debanding,low

开启 debanding,medium

开启 debanding,high

可见 low 就有不错的效果了,诸如此类各位可自行测试,针对不同的片源,善用热键或是 profile 来设置必要的 debanding 强度。(profile 的使用方法我 PO 在另一篇文中介绍)

而下面的 "reduce ringing artifects",要先认识一下 ringing,详细请看 WIKI:

振铃效应 - 维基百科,自由的百科全书 (wikipedia.org)

madVR 里的众多算法,很多都有搭配 anti-ringing 滤镜,就是为了抑制这个震铃效应。而这边这个选项,则是为了处理影片本身就存在的 ringing,影片会有 ringing 出现,通常是高分辨率的母片在后制成较低分辨率的产品输出时 (例如 DVD),使用了较差的降频算法时产生的。这个选项比较没必要常驻开启,而是明显观察到影片上有 ringing 时再开就好了 (可设定热键)。下面的子选项,“reduce dark halos around bright edges, too”,是针对明亮物体边缘的深色系光环 (这类似乎在黑白电影比较常见),这选项不适用在动画类。

以下是一组有明显 ringing 的例子,跟 deringing 后的效果 (点图放大):

原图

deringing

接下来看到 "reduce compression artifacts",以下简称 RCA,此项作用为去除压缩失真,严格来说它具备有去除区块失真 (deblocking)、画面噪声跟噪点的作用,但缺点就是可能会对画面细节造成破坏,故不建议常驻使用,建议设置热键在需要时手动开启即可。其可调强度为 114,强度越高,画面净化效果越强,但相对的画面细节也会被抹去越多,画面可能变的平面化,失去立体感,因此使用上需注意,建议在画面净化效果可接受的情况下尽可能选择较低的强度。以个人经验来说,真人影片类大部分开 16 之间即可,动画类 6~10 之间,但这非准则,实际仍要视当下片源状况而定,有些干净的片源根本不需要开,有些则是开了发现细节被破坏,这时就必须降低强度,有些片源噪声失真非常严重,这时就需要增加强度。

qualily 的部分,则是处理的质量,very high 的质量最好,能够更精确的判断噪声跟细节,high 次之,依此类推,但从 high 到 very high 所增加的效能消耗非常多,而且跟影片放大的目标分辨率成正比,须注意。(如果不搭配 NGU sharp 使用的话,建议开到 high 就好)

底下子选项 "process chroma channels, too",如果勾选的话,RCA 也会在 chroma 升频时介入处理,但会消耗较多的效能,而且 chroma 升频时做 RCA 的效果并不明显,因此并不建议勾选此选项。(这项不勾选的时候,RCA 就只有在 luma 升频时才会介入,因此影片 1:1 播放时就不会有 RCA 的效果)

子选项 "activate only if it comes for free (as part of NGU sharp)",这项勾选的话则 RCA 将只有在升频算法使用 NGU sharp 的时候启用后才会有作用,但是完全不会增加任何额外的效能消耗,勾选后 qualily 的部分视 NGU sharp 的运算强度是使用 low、normal、high 还是 very high,而自动对应,但是不管如何对应,RCA 的部分都不会增加额外效能消耗,因此如果升频算法使用 NGU sharp 的话强烈建议勾选此选项,但如果升频算法不是用 NGU sharp 的话则不要勾选,否则 RCA 启用后也不会有作用。

最后是 "reduce random noise",以下简称 RNN,此项作用为去除粒状噪声跟噪点 (denoise),其去除噪点的效果比上面的 "reduce compression artifacts" 还要显著许多,但相对的也更容易破坏画面细节,因此一样不建议常驻使用,建议设置热键在需要时手动开启即可。其可调强度为 1~10,强度越高,去噪点效果越强,但画面细节破坏也越严重,须谨慎使用。

子选项 "process chroma channels, too" 的部分同 RCA

以下提供一些 RCA 跟 RRN 的效果范例:

640x480→1440x1080 NGU-sharp (点击放大)

640x480→1440x1080 NGU-sharp+RCA 5 (点击放大)

640x480→1440x1080 NGU-sharp+RRN 3 (点击放大)

640x480→1440x1080 NGU-sharp (点击放大)

640x480→1440x1080 NGU-sharp+RCA 5 (点击放大)

640x480→1440x1080 NGU-sharp+RRN 3 (点击放大)

1280x720→1920x1080 NGU-sharp (点击放大)

1280x720→1920x1080NGU-sharp+RCA 6 (点击放大)

1280x720→1920x1080NGU-sharp+RCA 8 (点击放大)

1280x720→1920x1080NGU-sharp+RCA 10 (点击放大)

1280x720→1920x1080NGU-sharp+RCA 14 (点击放大)

选项热键设置

另外介绍一下这边热键设置的几种方法

第一,可以到 keyboard shortcuts 底下,找到我圈起来的那几项,会调到的几项,后面自己输入习惯的热键

  • debanding - toggle strength (debanding 强度切换)

  • debanding - toggle on/off (debanding 开关)

  • debanding custom settings - toggle (debanding 自定义参数切换)

  • deringing - toggle (deringing 开关)

  • deblocking - toggle (RCA 开关)

  • deblocking strength - increase (RCA 强度增加)

  • deblocking strength - decrease (RCA 强度降低)

  • denoise - toggle (RRN 开关)

  • denoise strength - increase (RRN 强度增加)

  • denoise strength - decrease (RRN 强度降低)

第二,设置 profile,并以组别设置热键方便快速切换,并搭配上面的强度热键快速调整,例如下图,我设置了 "Tab" 跟 "Back" 两个热键来快速切换两组 profile: