APP下载 微博 微信

Hao4K影音


[技术教程] 教你怎么使用设置渲染器madVR教程方法四

[复制链接]

发表于 2019年01月15日 23:29 145883 2 来源:电脑/HTPC> 技术教程 |只看大图 回帖奖励 |正序浏览 |

唐门刀哥 帖主

2019-1-15 23:29

本帖最后由 唐门刀哥 于 2019-1-15 23:33 编辑

推荐阅读:
现在我们来谈谈关于NGU系列,在此之前不得不先谈到NNEDI3,NNEDI3这个算法原本是在转文件编码时用来升频及去交错等等处理的算法,因为其消耗资源过大,速度不够快到可以拿来做实时演算(real-time),因此一直没被拿来用在影片播放时使用的升频演算。直到Doom9上有高手重新编写了这个算法的OpenCL版本,madshi将之修改之后加入到早先的madVR版本之中实现了此算法的实时演算(现今版本已经拿掉),即使如此,这个算法消耗的显卡资源仍然相当惊人,但它带来的升频效果也是同样惊人,可以打趴一堆高阶蓝光机和高阶电视号称的4K影像升频,绝不夸张。
我们可以看到madshi自己对这个算法的说明和范例图片:
http://forum.doom9.org/showthread.php?p=1663610#post1663610
基本上除了2^N倍的限制之外,这个算法升频出来的影像,锐利度和噪声抑制程度相比Jinc+AR,都有着可说是跳跃性的进步,它有让影片看起来不像是升频上来的影片的实力,但是这个算法也并非完美,它在某些场合中可能会出现一些莫名其妙的artifacts(原因似乎是因为它"太聪明"),madshi的范例里就有这个现象,这些是在使用Jinc时不会出现的,提高运算强度的话可以减低这些artifacts的出现,但消耗的效能也是倍数成长。
这边也提供一个简单测试比较:
原始分辨率640*360  
20190115_230238_041.jpg
目标分辨率1440*810  NNEDI3 64
20190115_230238_042.jpg
目标分辨率1440*810  Jinc+AR
20190115_230238_043.jpg
How amazing!! right?
不过其实Jinc+AR比较"忠于原味",NNEDI3则把锯齿状线条都拉成直的还不失锐利度,整体观感会比较讨喜,当然这只是一个小例子,真要比较必须要用大量的影片来比较才会比较中肯。以实测的结果来说,NNEDI3对于低解析影片,多反差线条(游戏或动画的影片),锯齿边缘明显的改善最为明显且巨大,对于真人影片比较没那么神奇的效果,虽然仍就有非常优异的表现,但跟Jinc+AR的差别就没上面那个例子那么大了。所以由此可见,影片的内容也是选择算法的重要因素。
接下来谈谈NGU吧,这是madVR v0.91之后加入的新算法,全名是"Next Generation Upscaling",是madshi自己写的算法,据他的说法也花了不少时间研究、参考好几篇论文加上他自己的idea才做出来的东西,就实测效果来看颇令人惊艳,在很多地方可以说已经超越了NNEDI3。NGU有四个版本(AA、Soft、Standard、Sharp),其中Sharp几乎就是最原始的NGU版本,其目的是尽可能把低分辨率影像还原到接近高分辨率"母片"的程度,在不增加artifacts的前提下。下面两个连结是madshi自己po的测试图,里面的NG1就是NGU之前暂定的名称
http://forum.doom9.org/showthread.php?p=1785599#post1785599
http://forum.doom9.org/showthread.php?p=1785876#post1785876
可以发现,NGU的锐利度胜过NNEDI3不少,接近NNEDI3 256+SuperRes 4,而画面又比NNEDI3 256+SuperRes 4更接近原图,仅次于waifu2x(但waifu2x是对照用,运算太复杂不可能在实时演算使用)
不过高度还原这点虽然是优点但有些情形下也可能变成缺点,在我个人的测试中,NGU-Sharp的确非常适合真人类的影片,其他算法没有一个锐利度比它好而artifacts更少的,包括NNEDI3,NNEDI3要达到NGU-Sharp的锐利度至少要搭配SuperRes 4,但这个组合artifacts又比NGU严重一点,效能消耗也高很多。但对于动画类而言,NGU-Sharp虽然也有很惊人的效果,但提前是片源必须够"干净",如果片源本身有很多artifacts或锯齿的话,这些也会被NGU-Sharp当成细节如实的放大,出来的结果就有点残念了,偏偏动画类,尤其是低分辨率或是高压缩比的,这种情况还不少。NNEDI3,如同我前面提过的,对治这种片源缺陷的能力特别强大,而锐利度不足的地方则可以透过锐化算法补齐,达到跟NGU-Sharp接近的锐利度。
在0.91.6版发布时,madshi加入了NGU的另一个修改版本─ NGU-AA,这个版本跟原始NGU(NGU-Sharp)大不相同,不过度的强调细节还原,而是如同其字面意义Anti-Alias,强化消除线条锯齿和画面的artifacts等缺陷的能力,也就是说,跟NNEDI3非常的类似,但却可以比NNEDI3花费更少的效能就做出相同甚至超越的结果。在我个人的测试中,某些画面它消除锯齿的能力比NNEDI3还要好,而线条也比NNEDI3更为聚焦,其它的画面至少也跟NNEDI3差不多,而doom9上大部分使用者也认同画面上NGU-AA略胜或不输NNEDI3。因此最后madshi决定把NNEDI3自madVR中移除,把NGU系列作为madVR的招牌升频算法。
目前对于低分辨率或是高压缩比动画类我个人会视情形,如果锯齿不是很严重的话,我会使用NGU Sharp+RCA算法,RCA对artifacts有很好的抑制效果,再配上NGU Sharp的高还原度可谓天作之合。如果是干净的片源则单独使用NGU-Sharp。如果是锯齿严重的片源,则使用NGU-AA,当然NGU-AA可以再搭配锐化算法使用,效果比单独使用NGU-AA更好。
另外关于NGU-Soft和NGU-Standard,跟NGU-Sharp的基本调性是一样的,只是降低锐化的程度,有些画面用NGU-Sharp放大的结果可能会显得太过锐利或刺眼,那它可能就比较适合用NGU-Standard。至于NGU-Soft,个人认为它的锐利度降得有点低(比NGU-AA还低),可能适用的场合并不多,不过还是以各位亲自测试为准。NGU-Soft和NGU-Standard两个并不像NGU-AA带有消锯齿的功能,所以跟NGU-Sharp一样比较适用在干净的片源,或是搭配RCA使用。
另外就是NGU-(Sharp、Standard、Soft)已经内建有deringing的效果,所以不要跟artifact removal底下的reduce ringing artifects(deringing)一起开,不然可能损害画质。

下面看看几张范例:
640*480→1440*1080(点图放大)
一般的老动画DVD放大到FHD的情形,注意衣服上的噪声以及眼睛和头发的部分
Jinc+AR
20190115_230238_044.jpg
NGU Sharp very high (direct 4X)
20190115_230238_045.jpg
NGU Sharp very high(direct 4X) + RCA 6
20190115_230238_046.jpg
NGU AA very high 2X > very high 2X
20190115_230238_047.jpg
NGU AA very high 2X > very high 2X + RCA6 (high)
20190115_230238_048.jpg
NGU AA very high 2X > very high 2X + RCA6 (high) + crispen edges 2.0 + thin edges 1.0 + AR (crispen edges和thin edges皆为upscalingrefinement)
20190115_230238_049.jpg
可发现这边NGU Sharp very high(direct 4X) + RCA 6的组合可得到最理想的还原效果,噪声也得到充分抑制,最后一张所使用的组合NGU AA very high 2X > very high 2X + RCA 6 (high) + crispen edges2.0 + thin edges 1.0 + AR虽然也有接近的效果,但还原细节仍差了一点点,重点是消耗的效能高太多了,因此这类动画最适合NGU Sharp + RCA的组合。
720*480→1920*1080
注意衣服跟皮肤的细节,及线条边缘轮廓
Jinc+AR
20190115_230238_050.jpg
NGU Sharp very high (direct 4X)
20190115_230238_051.jpg
NGU AA very high 2X > very high 2X
20190115_230238_052.jpg
NGU AA very high 2X > very high 2X +SuperRes 4
20190115_230238_053.jpg
可以发现锐利度NGU AA very high 2X > very high 2X + SuperRes 4可能稍微高一点点,但artifacts也比较多,而NGU Sharpvery high (direct 4X)则把画面细节还原的很好,artifacts也比较少,重点是这边NGU Sharp very high (direct 4X)消耗的效能要少得多。
另外一个是上面用过的初音范例,再比较一次,可以看出NGU Sharp在低分辨率动画类并带严重锯齿的状况可能遇到的问题
640*360→1920*1080
Jinc+AR
20190115_230238_054.jpg
NGU Sharp very high(direct 4X)
20190115_230238_055.jpg
NGU Sharp very high(direct 4X) + RCA 6
20190115_230238_056.jpg
NGU AA very high 2X > very high 2X
20190115_230238_057.jpg
NGU AA very high 2X > very high 2X + RCA7(high) + deringing + crispen edges 2.0 + thin edges 1.0 + AR (crispen edges和thin edges皆为upscalingrefinement)
20190115_230238_058.jpg
可以发现这个例子NGU Sharp就不太适合,即使它是很忠实的还原了原图上的细节跟锯齿,但那可能不是我要的,NGU AA消锯齿效果良好但锐利度差了些,而NGU-AA再加上噪声修饰跟锐化算法结果就不错,不过效能消耗也比较高。
另外doom9上也有网友收集了各种madVR的升降频算法以及artifact removal算法的效果对比图片,可至下列网址把图片点开参考:
https://forum.doom9.org/showthread.php?t=175429
如果不想搞太复杂,只想要一组设定打天下,那就这样设定吧,显卡不够强就自己换成med或low,显卡够力可换成very high,片源不够干净再加个RCA即可。但有心的话自己可以慢慢去做不同组别的设定来对应不同的分辨率/帧率/片源,madVR的profile功能,让我们可以用各种不同的设置去应付各种不同的状况,最大限度去利用有限的显卡效能,这部分我在另一篇文章皆有说明。
20190115_230238_059.jpg
接下来看到upscaling refinement的部分,这边可将其视为改善放大算法专用的锐化演算,跟前面image enhancements相较,这边处理过后的影像差距不会太巨大,但锐化造成的副作用也会小很多,这边我的习惯仍然是第一组profile常驻的不启用任何锐化算法,其它几组设置热键视情况切换。开启锐化算法也会增加显卡负担,务必注意。另外原则上,可以同时开1~3种算法,只要注意互补性,不要过度重迭,不要锐化过度就好,但是image enhancements跟upscaling refinement最好不要同时开,很容易会锐化过头。(锐化过头画面会变的尖尖的、刺刺的、失去立体感、或是充满油画感)
特别要注意的是使用NGU-(Sharp、Standard、Soft)的时候,除了其专属搭配的两个算法外不建议再开其他任何锐化算法,因为NGU-Sharp本身就已经非常锐利了,再开其他的就锐化过头了。
20190115_230238_060.jpg
这边简单介绍一下各个锐化算法
sharpen edges:针对边缘线条锐化,不锐化纹理内容,适合开启AR和AB滤镜使用
crispen edges:FineSharp的改良版本,有不错的整体细节锐化效果,新版本里也抑制了噪声被锐化的程度,madshi认为它有最自然的锐化效果
thin edges:把边缘线条变细,适合低分辨率的动画类放大时使用
enhance detail:针对纹理内容锐化,例如皮肤跟衣服之类的细节,不过也有噪声被锐化的可能
soften edges:柔化线条边缘,是NGU-Sharp专属搭配使用的,NGU-Sharp可能造成线条边缘过于锐利,这个选项可稍加修饰。至于要不要开以及开多少,则视个人口味跟片源而定,例如有人认为SD片源→FHD的升频,本身锐利度已经不足了,不太适合再柔化,而FHD片源→UHD的升频就比较有需要。当然这只是一种个人看法而已...
不过madVR在v0.91.8之后加入NGU-(Standard和Soft),想要低一点的锐化程度选择这两个就好,所以这个选项个人认为已经没有必要
add grain:在纹理内容上面加上颗粒,也是NGU-(Sharp、Standard、Soft)专属搭配使用的,NGU-Sharp虽然能把低分辨率内容的线条提升到接近原生高分辨率的锐利度,但纹理内容缺失的部分并无法完美的还原,加上颗粒让影像比较有真实感。这边建议开1~2,但这选项只适合真人影像,不适合动画类(动画开了看起来会像噪声)
LumaSharpen:整体锐化,强化线条跟适度的细节提升,并避免强化噪声,强烈建议开启AR和AB滤镜使用,开了后效果很类似crispen edges
AdaptiveSharpen:整体锐化,特别注重强化中等锐利程度的线条,但会避开全平面区域跟高锐利的线条,强烈建议开启AR和AB滤镜使用,AR+AB有开没开差很多,开了后效果很类似crispen edges
SuperRes:包含一整套的后处理过程,得到的也是整体性的锐化效果,后面的LL、AR滤镜则不建议开启(LL可能有副作用而且增加的效能消耗太大,SuperRes本身不太产生ringing所以不需要AR)
后面的数字代表跑几次SuperRes流程,数字越高锐化效果越强,但锯齿跟artifacts也会更明显,效能消耗也越大
SuperRes跟非NGU的升频算法一起用有不错改善效果。跟NGU-AA一起用也可以增加不少锐利度。但并不适合跟NGU-(Sharp、Standard、Soft)一起用,SuperRes并无法让NGU-Sharp效果再改善或提升锐利度,反而可以造成锯齿和artifacts再次被凸显出来
个人测试的结果认为SuperRes很适合在真人影片中使用(如果使用NGU-(Sharp、Standard、Soft)以外的算法的话),但极度不建议在动画类使用(包括2D和3D动画),只要一开锯齿跑出来了,破坏非常明显,强度只开 1也一样...
refine the image after every ~2X upscalingstep
refine the image only once after upscalingis complete
前者是每放大两倍就锐化一次,后者是不管放大多少倍总共只锐化一次,这个选项只对极大倍率(4倍以上)的放大会有影响,理论上每放大两倍就锐化一次最能维持锐化效果,但是对显卡的效能消耗也是倍增,还是要视自己显卡能力而定
以下是个人使用的两组upscaling refinement设定,分别是真人影片(FHD片源升频4K)跟动画类(仅限需要消锯齿的片源)使用,用热键控制切换,供各位参考
需要消锯齿的动画片源(配合image upsclaing里的NGU-AA使用)
20190115_230238_061.jpg
真人影片类FHD的片源升频4K(配合image upscaling里的NGU-Sharp或Standard使用)
20190115_230238_062.jpg
要不要开锐化?要用哪几种算法?强度开多少?这个是要由观赏的片源,跟使用的屏幕,显卡的负荷能力,亲自去做测试才能得出结论,不必要盲从,别人的设定不一定是适合自己的设定

========================================================================
接下来继续往下设定,到"general setting"这页,我的建议设定(win7适用)如下图:
20190115_230238_063.jpg
  • "delay playback start until renderqueue is full"建议勾选,可减少开启影片时的掉帧现象,下面的"delay playback start after seeking"不建议勾选,勾了拉时间轴会变慢
  • "enable windowed overlay"N卡跟I卡可勾可不勾,这功能A卡并不支持勾了也没用,优缺点下面总结会解释。
  • "enable automatic fullscreen exclusivemode"建议勾选,这个选项勾了会在进入全屏幕时使用独占模式(FSE),优缺点下面总结会解释。
  • "disable desktop composition (Vistaand newer)"跟底下的"only when media player is in fullscreen mode",如果有使用全屏幕独占模式的话,就两个都一起勾选;如果没使用全屏幕独占模式的话,就不要勾选(这个选项是播放时或者全屏幕时把win7的AERO关掉,win8以上的系统则没有影响)
  • use Direct3D 11 for presentation,勾了会使用D3D11模式,必须显卡跟操作系统支持才能用,而madVR的10bit输出也必须在D3D11跟FSE模式底下才能达成,此外D3D 11模式下从窗口切换到FSE模式速度比较快一些,效率较好。D3D 11模式必须使用AERO,故这里勾选的话"disable desktop composition (Vista and newer)"会自动失效。下面的"presenta frame for every VSync"建议勾选,可减少presentation glitches的增加,反之若不勾则能节省一点点效能但有可能presentation glitches会变多。
  • "use a separate device forpresentation (Vista and newer)"建议勾选,不过如果N卡勾了发生问题的话可以取消勾选看看有没有改善,另N卡驱动为 301.42 版以前的话不要勾选。
  • "use a separate device for DXVAprocessing (Vista and newer)",勾或不勾都可。(此项只有在用到DXVA的场合,如硬件去交错或硬件译码时才有影响)

6.、7.这两项主要会影响renderingtimes,而rendering times是越低越好,太高的话会掉帧,可自行测试勾选或不勾选的差别。我的建议设定是使用AMD HD7750显卡驱动13.12 测试,这样设定在fullscreen exclusive mode下的rendering times最低,而N卡使用者也可自行测试这两项勾或不勾哪种组合较好。
CPU queue跟GPU queue,是决定播放时占用的RAM的大小,我喜欢用自来水跟水塔的概念来举例,queue的总量就像是水塔大小,不管大水塔或小水塔,目的都是确保水龙头打开能够源源不绝的出水不会没水用(掉帧),queue设小的话(小水塔)它很快就会装满,对硬件负担也小,但是一个稍大的变动可能就让它暂存的容量不及应付而降成0,就会掉帧了。queue设太大的话则是吃比较多的RAM,开影像会稍微变慢(如果有勾选"delay playback start until render queue is full",要等它装满),但相对就比较不会掉帧,这方面要自己多测试取舍。需注意硬件不是太强的话也有queue开太大反而播放不顺的情形发生。
我的建议是如果没有使用smooth motion功能的话,这部分维持预设即可,如果有使用smooth motion的话,这边可以设到CPU queue 20跟GPU queue 12,甚至要更大也可以(在我以前的测试中,使用smooth motion时如果queue不够大有时候会有不顺畅或顿顿的情形发生)。
另外win8/8.1或win10的话,建议设定如下图:
20190115_230238_064.jpg
"enable automatic fullscreen exclusivemode",勾选后如果没遇到异常状况(全屏幕时严重LAG、rendering time暴增或无画面)的话也是可以使用。
到"windows mode settings"这页,如下设置:
勾选"present several frames in advance",会使用0.87.10版加入的新窗口模式,有接近FSE(全屏幕独占)模式的效能跟稳定性,如果你不喜欢FSE模式的话全屏幕播放可直接使用这个新窗口模式。
如果播放出现问题的话则取消勾选"present several frames in advance",会改回使用0.87.10之前版本的旧窗口模式。
如果使用新窗口模式的话,下面的"'how many video frames shall be presented in advance"数字依GPU能力去设置,一般在6-12之间,更大也可以,如果有掉帧情形就调整看看,使用smooth motion的话这项最好开大一点。
20190115_230238_065.jpg
欲使用全屏幕"新"窗口模式的话还必须如下设置,取消勾选这两项:
20190115_230238_066.jpg
到"exclusive mode settings"这页,如下设置:
"delay switch to exclusive mode by 3seconds"这项勾选的话会在切换成全屏幕3秒后才进入独占模式,自己决定要不要勾选,像我喜欢它马上进入独占模式所以就不勾选。
下面的"'how many video frames shall be presented in advance"数字依GPU能力去设置,一般在6-12之间,更大也可以,如果有掉帧情形就调整看看,使用smooth motion的话这项最好开大一点。
20190115_230238_067.jpg
这边小总结一下,在非全屏幕时,可以使用的模式及设定方法:
  • 旧窗口模式  windowed mode(old path)
  • 新窗口模式  windowed mode(new path)
  • overlay窗口模式  overlay mode

勾选"enable windowed overlay"会使用overlay窗口模式(N卡跟I内显限定),不勾选则使用其他两种窗口模式,新跟旧窗口模式的选择方法如上面的说明。

在全屏幕时,可以使用的模式:
  • 旧窗口全屏幕模式  fullscreen windowed mode(oldpath)
  • 新窗口全屏幕模式  fullscreen windowed mode(newpath)
  • overlay全屏幕模式   fullscreen overlay mode
  • 全屏幕独占模式  fullscreen exclusive mode

勾选"enable automatic fullscreen exclusive mode"会强制使用全屏幕独占模式,不勾选则使用其他三种模式,有勾选"enable windowed overlay"会使用overlay全屏幕模式(N卡跟I内显限定),不勾选则使用其他两种窗口全屏幕模式,新跟旧窗口全屏幕模式的选择方法如上面的说明。
下面整理一下各种模式的优缺点,"+"表示优点,"-"表示缺点,主要来自madshi本人的回复
http://yabb.jriver.com/interact/index.php?topic=76904.msg523475#msg523475
旧窗口模式
+ 可使用在非全屏幕及全屏幕模式
+ 切换全屏幕时不会有额外的延迟
- 有时会出现画面撕裂(没有打开AERO的情形下)
- 有时会有播放不顺畅、顿顿的情形(特别容易发生在使用smoothmotion FRC时),对于描绘时      间的容忍度较低
- 在老旧的机器上效率低落(比较容易掉帧)
overlay模式
+ 可使用在非全屏幕及全屏幕模式
+ 不会有画面撕裂情形
+ 常保播放顺畅
+ 效率高,比较不容易掉帧
- A卡不能使用
全屏幕独占模式(FSE)
+ 不会有画面撕裂情形
+ 常保播放顺畅
+ 效率最高
+ 即使GPU短期间处在比较忙碌的状态也能有效防止掉帧,是最稳定的播放模式
+ N卡只有此模式下能够输出10bit
- 只有全屏幕时能使用
- 切换全屏幕时会有延迟现象
- 播放器自己的控制接口无法运作
- 叫出播放器选单时(例如点右键)会强制跳出FSE模式
新窗口模式
+ 有FSE模式一切优点,但没有其缺点(运行机制跟FSE只差在没有进 入Direct 3D模式)
-  必须搭配AERO才能使用(在win7下AERO的compositionrate是以主屏幕为准,这在使用多屏幕     时会成为麻烦,因为不能让它对应当下屏幕的更新率,win8之后则无此问题)
-  在某些系统有兼容性问题,导致播放不顺
- win10以外的系统无法输出10bit (win10除N卡外可在全屏幕窗口模式输出10bit)
到"stereo 3D"这页,madVR在v0.90之后加入对3D影片的支持,这一页的设定在有播放3D影片的需求时才有需要勾选,当然要播3D还必要达成其他几个条件:
要有支持3D的显示器跟眼镜
操作系统要win8.1以上
桌面右键>屏幕分辨率>进阶,里面有一个3D选项要勾
使用LAV 0.68之后的版本 (3D原盘OK,但如果是mkv格式封装则必须是MVC编码)
3D输出目前仅限制在1080p23模式
20190115_230238_068.jpg
到"smooth motion"这页
20190115_230238_069.jpg
这是madVR  v0.86.0加入的功能"smoothmotion frame rate conversion".,详见官方论坛:
http://forum.doom9.org/showthread.php?p=1616520#post1616520
这个功能相当好用,解决了帧率跟屏幕更新率不同步所产生的judder问题(详细可参考我在reclock那篇所提到的内容),开发者madshi提到这功能有两大优点:
1.能够让任何帧率去对应任何屏幕更新率,并保持影像的流畅
2.如果硬件能够应付,在完整的播放中不会有任何的帧drop或repeat,且不需要依靠reclock来达    成。
两个缺点:
1.稍微增加一点GPU的负担
2.会损失一点锐利度,影片帧率小于屏幕更新率的话损失较少,例如24fps的影片在60Hz屏幕使用这功能播放的锐利度损失是不太容易看出来的:而影片帧率等于屏幕更新率的话,使用这功能锐利度损失就较多而且很容易看出来。
Reclock难以处理的非整数倍的同步问题,像最常见的24fps(23.976)影片在60Hz屏幕上播放,就很适合让madVR的smoothmotion FRC功能来解决,把这功能打开会发现影像的judder都消失了,就有如同步播放时的那种流畅感。
madVR的smooth motion FRC功能是透过Blending来达成的而非补帧,当然也没有补帧带来的副作用像soap opera effect和一堆artifacts。madshi有提到Blending是"30% of frame A and 70% of frame B to calculate the outputframe (pixelC = pixelA * 0.3 + pixelB * 0.7)"。
我不是很确定它运行的方式,不过猜想可能是接近以下的情形:
1 1 1 2 2 3 3 3 4 4  (24fps@60Hz屏幕,不做任何处理的呈现方式,是一个3:2的pattern,每个帧停留时间不一样,造成judder)
1 1 1+2 2 2 3 3 3+4 4 4  (24fps@60Hz屏幕,经过Blending处理的呈现方式,每个帧停留时间相同,接近2.5/60秒)
透过Blending来达成的同步,没有像补帧那种顺到不可思议的流畅感,但是影像相对比较自然,比较接近原汁原味。至于喜欢哪种就交由各位自己决定。以下介绍设置方法:
到"smoothmotion"这个分页,如图设置,下面三个选项是判断要不要启用smooth motion FRC的方法,
第一个选项判定的基准似乎是帧率跟屏幕更新率差超过0.5时会启用,反之不启用。
第二个选项是屏幕更新率为帧率的精确整数倍时不启用,反之启用
第三个选项是强制启用
另外也可以设置热键手动控制这个功能的开关

使用SVP或AMD的Fluid Motion或其他补帧软件的话,这个功能就取消勾选不要启用

到"screenshots"这页,这边的设定主要是搭配播放器的截图功能(例如MPC-BE的截图热键是"F5",截下来的图片会在"本机">"图片"文件夹中)

20190115_230238_070.jpg
"create screenshots with a custom zoomfacter",这项不勾选的话,截图就是看目前播放器放出来的目标分辨率多少就直接截那个分辨率,有勾选的话就可以自己指定,看是要影片原分辨率50%、100%、200%、300%、400%、800%,或是指定720p、1080p、2160p这些常见分辨率。举例来说,没有4K屏幕,但想看看某些算法升频到4K的效果,就可以善用这个选项。
至于edcoded video size,指的是影片压制编码出来的原始分辨率,但是跟100%的不同之处在于,有些影片原始分辨率跟它100%播放时的分辨率不一定一样,影片串流中会夹带一个Display aspect ratio(DAR,显示宽高比例 )的标签,100%播放时会依DAR所指定的比例去拉伸,举例来说,日本电视台录制下来的档案就常见这种形式,其原始分辨率是1440x1080,但夹带一个16:9的DAR,因此100%播放时会拉伸成1920x1080去播放,这个例子如果选100%去截图,图片会是1920x1080,如果选edcoded video size去截图,则图片会是1440x1080。

"use high quality scaling algos -image upscaling:",这项勾选的话可以直接指定截图要套用的升频算法,有NGU Sharp、NGU Standard和NGU AA三种,以及这三种各自再搭配add grain,总共六种

"don't draw OSD",勾选的话,截图一律不显示OSD

"don't perform color & gammaprocessing, calibration etc",勾选的话,截图会忽略color & gamma和calibration里面套用的设定

"don't draw subtitles",勾选的话,则截图就不会把字幕挂上去

"don't perform artifact removalprocessing",勾选的话,截图会忽略artifact removal里面套用的算法

"don't perform image enhencementprocessing",勾选的话,截图会忽略image enhencement 里面套用的锐化算法

"don't perform upscaling refinementprocessing",勾选的话,截图会忽略upscaling refinement里面套用的锐化算法

"don't execute custom shaders",勾选的话,截图会忽略套用的自定义shaders效果

到"dithering"这页
20190115_230238_071.jpg
关于error diffusion和ordered dithering,是0.87版后新加入的dither方法。madVR在输出8bit的讯号时,是把内部用16bit高精度处理完的讯号以dithered 8bit RGB的形式输出,在色彩阶调上跟10bit输出是不会有差别的,差别在于画面上会多了一些"噪点",我前面有个连结也解释过dither的原理,是以噪点来模拟更多的色阶数,某些场景下你也许会看到这些噪点,并将其视为画面的负面因素。madVR过去一直使用的是random dithering的演算方法,在大部分画面都会制造噪点使得其比较容易被查觉,而新的error diffusion算法只在必要的地方制造噪点,也就是说它可以维持同样的色彩阶调,但是大幅降低画面的"底噪"。至于ordered dithering则是madVR在v0.87.5之后做为默认取代random dithering的算法,其效能消耗跟random dithering差不多低,但是有接近error diffusion的低噪点表现。我的建议是你如果有一个不算小的屏幕(40吋以上),去使用error diffusion才会比较察觉得出效果,一般计算机屏幕尺寸太小可能很难感觉到它带来的差别,维持预设ordered dithering即可。error diffusion的话会增加一些显卡消耗(开启smooth motion FRC会再增加一些,因为其消耗是跟最终输出的帧数成正比)如果显卡效能许可的话要将error diffusion做为常驻选项也是可以。
error diffusion是用DirectCompute写的,由于DirectCompute是DirectX 11的一部分,必需要显卡及操作系统支持DX11才能使用。
下面两个选项,"use colored noise"勾选的话是使用多色噪点,不勾的话是使用单色噪点;"change dither for every frame"勾选的话是使用动态噪点,不勾的话是使用静态噪点,静态噪点在主观上会让你觉得噪点数量较少,但是一些噪点的排列纹路可能会比较容易被查觉到。
也就是说,不考虑random dithering的话,我们目前有三种dither算法,ordered dithering、error diffusion-option 1和errordiffusion-option 2,以及两个控制选项,总共12种不同排列组合的设置可以去使用,这边请各位有兴趣自行去测试,每个人喜欢的画面重点可能不太一样,很多情况下其实差别很小,但都优于random dithering就是了。
至于有兴趣测试者,由于在8bit输出的情况下不太容易看得出差别,我们可到前面屏幕设定那边去选用较低的bit数,如此一来可更明显看出各种dither算法和选项的差别。例如我们如果选择3bit的话,则RGB三色每一色都只有2^3=8个色阶数,三色总共只有8*8*8=512个色阶数可用(跟8bit的1670万个色阶数比起来是"非常"低),dither算法变得极为重要而且任何选项的改变差别都非常明显,以下我们可以看到简易比较图:
8bit ed-op1 两选项皆勾
20190115_230238_072.jpg
3bit ed-op1 两选项皆勾
20190115_230238_073.jpg
3bit none(无dither)
20190115_230238_074.jpg
以上只是简单让各位看一下dither用低色阶数输出高色阶的强大效果,这边各种算法的差异请自行测试。测试完毕别忘了再到屏幕设定那边改回8bit。

再次声明,madVR的8bit输出,使用error diffusion或ordered dithering作为dither算法的话,跟10bit输出几乎是没有差别的,肉眼几乎不太可能察觉到那些噪点的存在,虽然madVR有支持10bit输出,我们不必追求一定要用10bit输出,事实上10bit输出反而比较容易遇到问题(不管是显卡方面或是显示器方面)。
到"trade quality for performance"这页,这页的选项都是降低质量以换取效能,如果显卡效能够高的话尽可能都不要勾选,如果显卡负荷不了的话就从最上面开始勾选。有时候你使用某些算法在播放循序式影像或是软解时没问题,播放交错式影像开启硬件去交错时或是硬解时显卡却负荷不了,这时就可以勾选那几个DXVA(deinterlacing or decoding)的选项,如此显卡就只有在用到DXVA运算时才会降低质量,总之这边的选项低阶显卡可以依需要勾选。
20190115_230238_075.jpg
这边的选项由上到下依序来看的话:
第1项是跟外挂字幕渲染器xy-SubFilter相关,有使用才有影响。
第2项是使用硬解(DXVA)时,同时使用DXVA的chroma upscaling算法
第3项是使用硬件去交错时,同时使用DXVA的chroma upscaling算法
第4项是跟播放器的自定义pixel sharder功能相关,有使用才有影响。
第5项勾选的话dithering演算会用gamma light取代linear light(gamma light在0.87.7之前的版本是预设使用),取消勾选的话就是使用linearlight,linear light能提供较好的色彩还原度。
第6项跟第7项是跟debanding的运作有关,勾选的话会取消一些侦测机制。
第8项是如果能节省效能的话把色度升降频分开处理,里面唯一一个我觉得中高阶卡也可以勾选的,这个选项的效果,举例来说,一个4K 4:2:0的影片要在FHD屏幕播放,一般来讲要先把色度分量(1920*1080)升频到4K再跟亮度分量一起降频到FHD,勾选这个选项的话,色度分量直接维持1920*1080不动,而亮度分量3840*2160直接降频到1920*1080,对4K影片来说,少了这个色度升频动作节省的效能非常多,对画面质量影响却不多。
第9项是色调映射和色域转换使用较低精度
第10项是去掉影片的BTB(比黑更黑指0~15这段)和WTW(比白更白指236~255这段)的黑位范围信息
第11项是跟smooth motion有关。
第12项跟第13项跟madVR本身的处理精度有关。
第14项跟放器的自定义pixel sharder功能相关,一样有使用才有影响。
第15项是跟DXVA deinterlacing有关,勾了就不会把60i去交错倍帧成60p而是变成30p
第16项也跟DXVA有关
========================================================================
到"keyboard shortcuts"这项,可以依自己喜好设置热键
20190115_230238_076.jpg
另外附上madVR预设设定已有的热键一览表:

create freeze report          - Ctrl+Alt+Shift+Break
open settings dialog       - Ctrl+S (打开选单)
Enable OSD                   - Ctrl+J   (打开OSD)      
Reset OSD Statistics     - Ctrl+R (OSD统计归零)
Source Primaries              - Ctrl+Alt+Shift+P
Source Decoding Matrix  - Ctrl+Alt+Shift+M
Source Levels                  - Ctrl+Alt+Shift+I
Output Levels                  - Ctrl+Alt+Shift+Y
Deinterlacing                 - Ctrl+Alt+Shift+D (强制开关去交错)
Deinterlacing Field Order -Ctrl+Alt+Shift+F
Deinterlacing Mode      - Ctrl+Alt+Shift+T (切换去交错模式video/film)
顺时钟转90度                -Ctrl+Alt+Shift+Right
逆时钟转90度                -Ctrl+Alt+Shift+Left
3dlut开关                         - Ctrl+Shift+3
3dlut分割展示                 - Ctrl+Alt+Shift+3
desired display gamma value - increase  - Ctrl+Alt+Shift+G  (配合"enablegamma processing"的设定)
desired display gamma value - decrease  - Ctrl+Alt+Shift+B (配合"enable gamma processing"的设定)

建议设置热键的项目:
debanding - toggle  (切换off-low-med-high)
deringing - toggle (开关deringing)
deblocking strength - increase (RCA强度增加)
deblocking strength - decrease (RCA强度降低)

粗体是我认为比较实用的几个,这边要特别提一下Deinterlacing Mode的切换,我们知道图像文件基本上有循序式(或称逐行扫描)跟交错式(或称隔行扫描)两种,循序式(Progressive)如480p、720p、1080p这种后面有个"p"的都是,交错式(Interlaced)如480i、1080i这种后面有个"i"的都是。遇到交错式影像,必须要进行去交错处理(Deinterlacing),否则会有明显的横向扫描线,而交错式影像基本上又可分成两大类─Video跟Film,Video通常指原生的交错式影像,为摄影机以60i模式拍摄,一秒60个场(field),场是指半个画面,也就是半个帧(frame),这种没办法还原成一个完整的图像,只能靠各种去交错算法去仿真出完整的画面,让其变成30p或60p。
而Film是指原生为循序式影像,把每个图像经过拆场并重新排列让其变成一秒60场(60i)的交错式影像,这个过程称为Telecine,常见于电影或动画(原生24p的影像)经过2:3 pulldown的处理后变成60i的交错式影像,这种影像可以完美的还原为24p的循序式影像,只需将每两个场交迭并去掉多余的场即可,这种方法称为Inverse Telecine(IVTC 即反向Telecine)。

而madVR侦测到交错式影像,就会呼叫显卡去做硬件去交错(DXVA deinterlacing),不过madVR目前并不会判断它是video还是film,而一律视为video并呼叫DXVA deinterlacing,就算我们播的是film内容的交错式影像。有时候显卡自己的去交错算法并不能正确的执行IVTC,或是显卡经过IVTC后,一样是用3:2的pattern输出给60Hz屏幕,一样有judder问题,这时候我们就需要手动使用Ctrl+Alt+Shift+T这个指令将其切换为film,这时madVR就会用CPU执行它自身的IVTC算法,而我们就会得到完美的原生24P影像,如果再同时使用smooth motion FRC,就能在60Hz屏幕上得到无judder的播放。

不过译码器使用DXVA(native)的时候无法切换成film模式,如果要搭配硬解使用必须使用DXVA(copy-back),须注意

以我的经验来说,这个功能用在一些标准DVD格式的电影最为好用(标准DVD输出皆为交错式影像)。
另外电视台录制下来的电影跟动画(常见的为TS檔 60i),也可以使用IVTC算法将其实时还原为24p。

另外关于"Debanding custom settings"这个热键,其实是madVR隐藏起来的dabanding自定义参数功能,可以像测试版时期那样手动更改各项参数,左右键切换项目(被选择到的会变大写),上下键增减数值,至于各个参数的定义有兴趣请自行到Doom9上找,这功能我懒得玩了,默认值就很好用了。

0.3.jpg


接下来介绍在影像播放时按Ctrl+J叫出的OSD上面一些数据的意义,配合图上的标记解说:

20190115_230238_077.jpg
  • 目前的屏幕更新率。
  • 影片帧率(音频时钟)与屏幕更新率(影像时钟)的偏移率,此数值越小表示越同步。
  • 显示smooth motion FRC功能是否启用。
  • 显示目前为D3D9或是D3D11模式;窗口模式、全屏幕窗口模式(fullscreen windowed mode)、或是全屏幕独占模式(fullscreenexclusive mode)或overlay模式;8bit或是10bit输出。
  • 来源档案的编码、bit depth和色度信息以及译码器译码完传给madVR的色彩空间、bit depth和色度信息。
  • 影片的帧数。(由源滤镜提供的信息判断)
  • 每隔多久会掉1格,这与影片帧数和屏幕更新率的同步程度有关,另一篇会提到的Reclock有一个作用就是提高同步程度。
  • 影片的原始分辨率及画面比例。
  • 目标分辨率,有四组数字,分别是"left, top, right, bottom",必须把第三组减第一组 第四组减第二组才是目标分辨率的"width,height"。
  • chroma(色度升频)和luma(影像亮度升频)和chroma(影像色度升频)所使用的算法
  • 每一个帧容许的绘制时间,这个值跟影片的帧数有关,例如我看24p的影片时,这个时˙间就是1/24=0.04167s=41.67 ms,也就是说每一帧都有41.67ms的时间让显卡去处理;如果是60i的影片,去交错后是60p,这个时间就是1/60=16.67 ms,由此可见帧数越高,可以处理的时间变短了,对显卡的处理能力要求的也就越高,也就是说越容易掉帧。
  • 影片进行YUV<>RGB转换使用的系数标准,由影像流的信息判断或是madVR自行判断。
  • 影片的色彩定义标准(色域),由影像流的信息判断或是madVR自行判断。
  • 影片的黑位范围,由影像流的信息判断或是madVR自行判断。
  • on表示有开DXVADeinterlacing ,off表示没开,若madVR把循序式影像跟交错式影像判断错误的话请自行用热键Ctrl+Alt+Shift+D开关。若切换为film mode的话会在下方显示film mode,和侦测到的pulldown的形式。
  • 各个queue是否充满通常能反应硬件是否能负荷,例如decoder queue很低的话表示CPU负荷不了了,render queue很低的话表示显卡负荷不了了。
  • dropped frames跟delayedframes为掉帧计数器,若数字一直增加表示硬件无法负荷,请降低设定或找出原因。
  • 平均绘制时间,通常也可观察GPU负荷情形,越好的算法跟较重的负荷通常会让绘制时间变多,多到超过movie frame interval的时间就会掉帧。
  • 5秒区间内的最多绘制时间,观察GPU负荷的另一种方式,多到超过movieframe interval的时间就会掉帧。

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

最后,为了避免不必要的负面影响及显卡效能的多余消耗,请进显卡控制接口把一些跟影像播放有关的处理通通关掉只留下去交错的部分,当然madVR本来就会绕过这些后处理,但是有使用到DXVA-deinterlacing跟DXVA-scaling的时候还是会被影响(DXVA译码则没有影响,因为那跟渲染器无关),所以保险一点还是全部关掉。

以下以A卡的CCC为范例:

20190115_230238_078.jpg

20190115_230238_079.jpg
20190115_230238_080.jpg


以Nvidia控制接口为范例,默认都是"使用视讯播放器设定",这个不用去改它:

20190115_230238_081.jpg
20190115_230238_082.jpg


如果屏幕接HDMI的话,建议使用RGB输出,不要用YCbCr输出,用YCbCr输出的话会在显卡层多一道色彩空间转换,造成画质损失,而且YCbCr都是输出16-235,只有RGB输出才能选择输出0-255或是16-235

20190115_230238_083.jpg

N卡旧驱动有些接HDMI输出RGB也会强制输出16-235,但如果屏幕支持0-255的话,可以用madVR文件夹里的一个小程序"madLevelsTweaker.exe"强制让它输出0-255,如下图勾选并套用后重开机即可。

20190115_230238_084.jpg

而N卡347.09之后的驱动,可以直接选择0~255输出不用透过madLevelsTweaker.exe修改

20190115_230238_085.jpg

353.06之后位置改到这边

20190115_230238_086.jpg


另外还有一个很重要的地方,最近的显卡驱动默认值都以省电为主,但是却会造成运行madVR时显卡不会用全力跑,造成效能比预期低落,以NV为例,必须到控制面板选取播放器执行文件(图中范例为mpc-be64.exe),把电源管理模式设定为"自适应"或"惯用的最大效能"(广域设定默认值是"最佳电源",一切的元凶...),如此才能让显卡全力运行madVR。而AMD的控制接口也有电源管理的相关选项要关掉,不然也是可能会降频跑。

20190115_230238_087.jpg
到此整个设置就算大功告成,enjoy it!
关于madVR到底需要多少显卡效能的议题,这边也简单做个结论,第一当然就是跟你的设置息息相关,你启用了哪些功能,那些功能吃掉了多少效能?第二就是跟你看的影片种类有关,看的影片跟屏幕分辨率相同时消耗的效能最少,因为只需要做chroma upscaling(但影片本身分辨率越大,例如4K影片,光做chroma upscaling消耗的效能也不少)。而当影片分辨率跟屏幕分辨率不一样时,是放大还是缩小?再来就是影片的帧率,60p的影片稳定播放需要的效能会远大于24p的影片,再来就是interlaced跟progressive的差别,interlaced需要做去交错,所以一个60i的影片消耗的效能又比60p更大......这些不同种类的影片,我们可能都需要不同的设置去对应,因此madVR加入了profile的功能,提供最大的自定义弹性,这部分我将在另一篇文中介绍。
另外介绍madTestPatternSource filter用法,这是一个madVR用的测试工具,首先去下载
http://madshi.net/madTestPatternSource.zip
解压缩后点击里面的install.bat安装,方法跟安装madVR一模一样
然后打开播放软件,将文件夹里面的.ytp文件拖到播放软件上放开就会自动播放。
不过请注意.ytp檔只能在32bit的播放器上运行,如果使用x64播放器的话请另外抓x86版才能玩这个东西...
里面各种ytp档可测试各种不同的播放条件,下图为SmoothMotion的测试档,可自行测试不同帧率在自己屏幕上播放,有开跟没开SmoothMotion FRC的差别。
20190115_230238_088.jpg
檔名tag使用教学
其实这是早在v0.85.4版就加入的功能,还蛮实用的,特别提一下,当然随着版本更新陆续有一些新的tag加入。
madVR可以辨识一些在影音档的档名中加入的tag(标签),而在开启档案时套用tag上的设定,
这样一些需要特别设定的档案就不用每次都在那边手动调整
以下为所有的tag:
tag"matrix=709|601|NTSC|PAL|YCgCo|240M|2020"
tag"primaries=709|SmpteC|EBU|sRGB|NTSC|PAL|470M|240M|170M|2020|DCI"
tag"levels=PC|TV|fullrange|limited|doubleExp|tripleExp"
tag "deint=On|Off|Video|Film"
tag "blacklevel=%value%", valuerange [-50, +50]
tag "whitelevel=%value%", valuerange [-50, +50]
tag "contrast=%value%", valuerange [-100, +100]
tag "brightness=%value%", valuerange [-100, +100]
tag "saturation=%value%", valuerange [-100, +100]
tag "hue=%value%", value range[-180, +180]
tag "frameRate=%value%", e.g.23.976, 24.000, 23, 24, ...
tag "refreshRate=%value%", e.g.23.976, 24.000, 23, 24, ...
tag "deband=off|low|medium|high"
tag "profile='profile name'"
tag"dering(ing)=on|off|half|full"

举例来说,一个普通的档案,开启时会按照自动侦测的结果套用预设的设定。
以下以去交错方法为例子来说明,虽然是原生24p的电影,但因为电视录下来是60i的档案,开启时自动使用了显卡硬件去交错
0.2.png
20190115_230238_089.jpg
文件名中加入标签"deint=Film",于是开启时自动使用了IVTC,不用再手动切换
0.1.png
20190115_230238_090.jpg
以上只是简单的例子,基本上档案需要特别设置的色域、色阶、去交错方法、亮度、对比、饱和度、色相等等,都可以透过这种加tag方式来减少手动调整的麻烦
madVR Profile设置实战
http://lysandria1985.blogspot.tw/2014/01/2madvr-profile.html
这篇文章常年来随着版本更新增加删减不少内容,所以难免会有所遗漏,如果你看了觉得哪里有前后矛盾或是文意不顺、文章内容跟现有madVR版本兜不上或是任何难以理解的地方欢迎留言讨论!

原文作者:萬年冷凍庫,文章转自一烧体验馆,如有侵权请联系网站管理删除!
回复

使用道具 举报

全部回复2

loushunming 3

2020-2-18 19:22

感谢的楼主的分享,,不知道在什么平台下运行的教程
回复 支持 反对

使用道具 举报

gd888 2

2019-1-16 13:32

太长了,收藏备用,有时间再细读。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

返回列表 本版积分规则



绑定微信 + 关注公众号,第一时间获得消息通知!
:
初级发烧友
:
介绍未填写

主题

帖子

积分1599