上次安利过一回,然而并没有详细说明各种设置相关联的东西是什么,而且新浪图床惨剧了。
https://www.saraba1st.com/2b/thread-1795355-1-1.html这次还是主要介绍CRT_Royale这个滤镜,以及为何这是目前模拟CRT的几乎唯一选择,并且较为详细地介绍了各种参数的调整会造成的影响。泥潭编辑多图有点麻烦不知为何经常失败,文章发在TG和Bilibili上了,有兴趣可以看一下:
《[多图]介绍游戏模拟器里各种常用滤镜的原理和效果,以及9102年了该如何正确模拟CRT!》TG:
https://club.tgfcer.com/thread-7657428-1-2.htmlBilibili:
https://www.bilibili.com/read/cv3065212忘记当时用了外链图床……那么原文也直接放在这里吧(只关于CRT滤镜的部分):
CRT滤镜首先
请把所有其它CRT滤镜扔掉,只留下一个:CRT-Royale(除非硬件跑不了,再考虑其他)。该滤镜使用了大量pass进行了CRT的模拟。如果PC性能够强的话,延时方面的影响也很小。CRT-Royale十分复杂和强大,
对GPU有一定的要求。如果用intel的GPU的话(集显)需要进行修改,改版也在RetroArch里提供了。用来显示CRT_royale滤镜的屏幕至少需要2K以上的分辨率,4K甚至8K屏幕的模拟效果更加真实。
是的你没看错,要模拟CRT,最低要求是2K分辨率,4K更佳。
我们知道CRT中的磷光体(或荧光体)是产生冷发光现象的物质,受到阴极射线(电子束)激活发光。它发出的光线具有一定的特征,与现代LED的像素光线有较大的区别。CRT滤镜的关键就是通过大量现代LED像素去模拟磷光体的发光特征,从而模拟CRT的显示效果。而在这方面做得最好的就是此滤镜了。(CRT虽然没有直接的像素的概念,只有荧光粉或者荧光条。不过电子束的信息改变是离散的,因此我们可以将离散电子束信息改变周期内扫过的空间等价为像素的概念)。
在RetroArch的桌面UI里打开CRT-royale的设置界面,我们可以看到很多相关设置,涉及到一些重要的调整项。如果你对Shader语言略有了解,也可以直接打开Shader文件进行调整,只是没有界面中方便。根据每个人接触到的不同型号和不同厂家生产的CRT,你所喜爱的CRT参数必然有所不同,玩家可以自行调整到喜欢的设置选项。
首先看看效果(网络图片有压缩,要观看大体效果还是自己4K全屏运行模拟器比较靠谱。看图片也要看大图,小图自带AA,把所有特征都抹掉了):
![]()
![]()
对比没开滤镜的游戏:
![]()
影响最终效果的选项很多。下面我们来解释一些影响较大的参数:
Halation and DiffusionHalation是被荧光体直接反射的光线,而Diffusion是光线穿过CRT玻璃时产生的散射荧光。这两项参数的权重可以进行调整。
Bloom如果点亮的荧光体发光过强影响到了电视上的其他面积,使整个画面变得过亮,就是一种bloom的效果。特别好的CRT会控制bloom,但由于这是大量中低端电视可能产生的效果,因此也需要忠实模拟。
Beam这项参数控制了实际进行扫描的电子束的各项维度。不知为何一直有人认为scanline是黑线:scanline是扫描到的线,而没扫描到的地方才是黑线。除了可以调整Beam本身的大小以外,这里也可以调整高斯模糊函数的各个参数。根据不同的参数选择可能产生不同型号电视或街机的效果:
Convergence彩色电视电子枪发射的三束射线对荧光粉的轰击是否足够整齐:好的CRT比如彩监是非常整齐的,但许多消费者级别的CRT这方面的表现就很一般了,根据每个人童年不同质量的CRT可以仔细微调。
MASK这项控制的是荧光体的排列方式。滤镜提供了三种排列:0.0 (Aperture Grille), 1.0 (Slot Mask), 和 2.0 (Dot Mask)。这三种排列如下:
![]()
每一种排列都对应不同厂家的电视效果,可以分别予以调整。同时,MASK也有大量参数可以进行调整。比如使用的荧光体个数可以调整CRT显示的粒度。
![]()
和其它滤镜相比也是高下立判。如果你觉得没有高下立判,就调整参数让它高下立判!
![]()
不同的制式和不同的输入会有一定程度的图像失真,没关系,这些失真可以用额外的pass来模拟。比如电视机的composite输入导致的色彩失真效果,加NTSC的色彩映射的效果如下:
![]()
![]()
再传两个其他游戏的图,还是那句话,要在自己的屏幕上运行模拟器动态才能比较明显看到效果。
![]()
![]()
Q&AQ:我在用xxx模拟器(比如PS2……),这个模拟器好像不支持CRT_Royale,怎么办呢?或我不喜欢RetroArch,不用这个的话怎么自由使用滤镜?首先当然是看RetroArch能否支持你使用的模拟器后端(也就是是否包含在Libretro里)。一般来说只要使用RetroArch,事情就解决了。
如果RetroArch不支持,或者不喜欢使用这个前端,另一个办法是用ReShade,但需要改写一下Shader的源文件。只能有志者去改了。其他一些可用的滤镜见这里:
https://github.com/Matsilagi/reshade-retroarch-shaders再有就是通过OBS之类录屏软件间接执行shader,可以参考这里:
https://obsproject.com/forum/res ... er-v1-0-update.775/具体我就没时间研究了,有愿意尝试的可以试着跳坑。
一个典型例子是PS2,现在只能采取上面这些间接的办法。要直接使用,要么改一下CRT_Royale让PCSX2能编译(应该不算特别难但暂时没人去做),要么等PCSX2的Core做出来,或者看Play!的Core什么时候发布。
制作PCSX2的Libretro Core的悬赏:
https://github.com/libretro/RetroArch/issues/6867libretro近期会发布Play!的Core,有兴趣也可以关注一下:
https://www.libretro.com/index.p ... ng-a-libretro-core/Q:使用这些滤镜延时大不大?一般来说这类滤镜由于只是处理一遍图像,因此所需的性能不多,Lag很小。CRT-Royale因为有14个pass,如果增加其他效果的话pass更高,对性能还是有一定需求的,但很多人的测试是GTX750以上性能方面就基本不是问题了。如果明显感觉到Lag当然还是关掉滤镜比较好。
Q: LZ能不能提供你使用的滤镜?因为每个人的显示设备不同,所以还是自行调整比较好(至少gamma要调好)。
RetroArch已经有一些多pass的预设,比如crt-royale-tvout+image-adjustment等等,直接用效果也不错。如果对扫描线很执着,也可以直接用cgp/crt-royale-kurozumi(国外论坛很多人喜欢这个滤镜,有兴趣不妨试试看效果)。
Q:为什么我加载一些滤镜没有效果?可能是RetroArch的bug,有些后端运行的时候不支持编译某种类型的shader。试试其他语言(比如CG、GLSL换着试试)的相应滤镜。
Q:球面效果和CRT皮肤是怎么弄的?球面效果在CRT_Royale的geom选项那里设置,可以设置球面的半径,以及设置观众距离球面的距离等等参数。
至于那个CRT皮肤,是我直接放在OBS里的一张边框图片而已,营造一些怀旧氛围。模拟器设置里也有一些边框可以选择。
Q:搞这个干啥反正比不上CRT手机照相或许被单反秒杀,不代表手机照相没意义。至少有一定怀旧需求的朋友还是需要一些利用现代硬件模拟古旧硬件的简单方法。虽然总体应该不如成色好的CRT,但如果使用的4KLED显示器质量还行的话,效果也不赖,具体可以自行实验一下。