nds模擬器歷史版本:nds用模擬器合集

模擬器中的 Filter 或 Shader 基本都是基於圖像本身的。一般來說模擬器不會提供與幾何相關的 shader(32 位機以後會有少量這類 shader)。也就是說,模擬器濾鏡生成的圖像都是在不清楚遊戲本身運行邏輯的情況下,單純對最終輸出的圖像進行變換。因此這裡用 Filter 遠比用 Shader 來得更為精確。不過因為 RetroArch 的濾鏡系統將其稱為 Shader,因此之後將不分辨該用詞(shader = 濾鏡 = filter)。

以下將從抗鋸齒濾鏡、放大增強濾鏡、效果濾鏡和硬件仿真濾鏡四個角度對模擬器常用濾鏡進行介紹,並着重對現在應該如何模擬 CRT 進行說明。

抗鋸齒濾鏡

對模擬器常見的 2D 遊戲,抗鋸齒濾鏡基本沒什麼用,所以只是簡單介紹一下。

首先是為什麼要抗鋸齒。大家知道時域採樣往往要用規則採樣。時域採樣在頻域中相當於用狄拉克梳子卷積信號本身,如果被採樣信號的帶寬低於採樣信號的奈奎斯特頻率,就沒問題,不然就會堆疊失真產生 aliasing(一維叫混疊,二維叫鋸齒)。在空間域中採樣幾何本身或者現實世界圖片的時候,規則採樣用得很少,因為很容易對周期性高頻信號出現 aliasing。人們通過局部改進分辨率、隨機採樣等等途徑進行抗鋸齒,就產生了各種 AA 算法。

我們知道模擬器濾鏡都是作用於屏幕空間(不是模擬器圖形設置中的 AA 選項),和圖形渲染不同:它往往是通過減少圖像中的高頻信號,而非增加採樣頻率或改變採樣策略進行 AA 的。是純粹的初次採樣完畢之後的空間域行為,不需要獲知圖形的幾何信息。

常用的屏幕空間 AA 就是 FXAA 了,其具體原理太過繁瑣,可參考此貼:

https://catlikecoding.com/unity/tutorials/advanced-rendering/fxaa/

一般來說,2D 遊戲,尤其 16 位機器以下的遊戲不要使用 Anti-aliasing shader。像素圖像本身甚至可以說就是由鋸齒構成的,如果強行進行 AA 會使圖像看起來非常詭異:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

3D 遊戲可酌情使用,尤其是模擬器本身 AA 開的不高的情況下。屏幕空間的 AA 效果雖然一般但通常速度較快,如果開 3D 遊戲模擬器內 AA 比較吃力的情況下,就湊合用屏幕空間的 AA 吧。

放大增強濾鏡

這類濾鏡是平時最常見的,也是人們最為經常使用的濾鏡(雖然 LZ 並不常用這類濾鏡)。它的主要作用是減少像素畫面的顆粒感。像素藝術最大的問題就是經不起放大:一旦放大以後,原本可愛的 Sprite 瞬間變得猙獰了起來:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

為了解決像素圖像放大的問題,人們發明了一系列增強算法。在機器學習介入之前,這類濾鏡還比較簡單,我們也只考慮機器學習之前的常用濾鏡。

首先是基本的插值:Nearest Neighbor,Bilinear 兩種

像素圖片放大這件事上,只要模擬器輸出分辨率跟具體顯示分辨率不匹配,模擬器本身就要選擇一種插值方式。可以進行線性插值(顏色設為鄰居的加權平均)或者最近鄰插值(與最近的鄰居像素顏色相同)。顯示上最近鄰插值能夠還原原本的像素顆粒,而線性插值能進行初步的模糊和潤滑,具體喜歡哪種就看個人喜好了。

Scale 系列:

包括 Scale2x、2xSal、EPX、AdvMAME2x 等等。這類濾鏡是使用簡單的 filter 對圖像進行卷積。有時比單純的卷積要複雜一些,等價於使用了多個不同的濾鏡進行卷積以後產生多個圖像,最後對圖像進行條件混合。還有些強調邊緣的濾鏡也會通過圖像的二次差分判斷邊緣從而採取不同的混合策略(權重)。

考慮最簡單的 Scale2x,將像素 P 放大為 4 個子像素,根據周圍 4 像素設置子像素的顏色採用以下規則:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

1=P; 2=P; 3=P; 4=P;

IF C==A => 1=A

IF A==B => 2=B

IF D==C => 3=C

IF B==D => 4=D

IF of A, B, C, D, three or more are identical: 1=2=3=4=P

則稱之為 Scale2x 算法。其結果其實基本上就是把一個像素分成了四個像素,顆粒感會大大下降。規則簡單,性能也好:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

其它 Scale 系列同理,主要都是在放大之後根據原圖像周圍像素顏色通過一定規則決定子像素顏色。

Eagel、2xSal 也是同一系列的濾鏡,只不過考慮的周圍像素範圍不同。例如比較複合的 Super2xSal 考慮的像素範圍就要更大一些,涉及周圍 11 個像素的值,並且也設置了相似的判定規則,效果如下:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

Scale 系列濾鏡是我認為 16 位機和 8 位機的底線,下面的就稍微有點越界了。

HQx 和 xBR 濾鏡系列

有時候現代人口味刁鑽,希望能消除像素本身的顆粒感。而前面那些簡單的臨像素加權平均或分支的濾鏡會導致邊緣模糊,並且處理像素遊戲中的線條非常苦手,因此有人開發了相應更複雜的濾鏡滿足這些人的需求。

HQx 系列 :(high-quality scale)

這一系列濾鏡會根據周圍像素顏色與自己的不同關係(周圍 8 個像素根據閾值分為相似或者不相似兩類,因此共 256 種可能),通過查找表的方式確定放大之後的像素顏色如何定義。而這一查找表本身的定義比較複雜。用 C 寫幾千行也很不容易(包含了 HQx-2/3/4
https://github.com/grom358/hqx/blob/master/src/hq2x.c),當然用 GLSL 要簡單不少。其目的主要是為了放大之後的線條能夠更加順滑。

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

xBR 濾鏡系列

xBR 濾鏡系列,包含 xBR , xBRZ, xBR-Hybrid, Super xBR, xBR+3D 和 Super xBR+3D.

同樣的,這些濾鏡也主要是用來遊玩像素遊戲時消除像素顆粒感使用。總有人認為這種圓滑感看起來比顆粒感的像素更舒服一些。

這類濾鏡比 HQx 更強大的地方在於通過多個 pass 解決了許多 HQx 的單次查找表索無法解決的問題,讓還原的線條更加銳利。

具體原理參考:(
https://forums.libretro.com/t/xbr-algorithm-tutorial/123)( https://pastebin.com/cbH8ZQQT)

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

雖然這裡可憐的馬里奧看起來有點不堪,但一般情況下這個濾鏡沒有那麼慘。xBR 濾鏡對邊緣的處理遠比 HQx 更加強大,非常善於消除像素的顆粒感並且保留色塊和邊緣的銳利。NGA 有人專門寫過一篇文章吹這個濾鏡,並且認為 xBRZ 是最好的 2D 放大濾鏡(單純從放大角度,不考慮深度學習類的方法,應該算是沒錯的)。有需求的可以參考一下:

https://bbs.nga.cn/read.php?tid=9171524

(然而說實話我是 xBR PTSD,看着就難受)

其他大多數像素增強也都是採用了各種不同的自定規則對子像素進行插值。效果有好有壞。遊戲之間的圖像特徵也有很大的區別,適用不同濾鏡,大家使用時可以根據自己的視覺體驗進行選擇。

比如 NEDI(New Edge-Directed Interpolation), 論文:
http://web.archive.org/web/20101126091759/http://neuron2.net/library/nedi.pdf

比如專門為 GB/GBA 設計的 OmniScale:
https://sameboy.github.io/scaling/

深度學習方面尤其跟 GAN 有關的方法則包含一些 AI 將圖片庫中特徵結合進行的創作,不符合高還原度 retro gaming 的主題,一般也不推薦使用。

效果型濾鏡

以下濾鏡會生成一些有趣的效果,一般用不着,想體驗一下也行。

Dithering:dithering 是早期 PC、針式打印機等等用點陣表示密度來展現色彩的。最近很火的獨立遊戲《obra dinn》也是這種風格。但單純基於圖像的 dithering 其實很消耗時間,採用一些近似的化效果也不好。用在 16 位機的遊戲上也並不合適,湊合看看吧:

bayer-matrix-dithering:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

Cel-shading:卡通渲染用在 16 位機上當然是個災難,但 3D 遊戲有時候也有點意思。同樣的,不要指望單純的屏幕空間的濾鏡能搞出什麼花來:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

老電影

technicolor 濾鏡是一個不錯的老電影效果濾鏡,還能模擬膠捲上的點和劃痕:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

效果型濾鏡隨喜好添加即可。

硬件仿真型濾鏡

這是我認為模擬器屏幕空間濾鏡真正有用的地方,也是本帖的重頭戲。這類濾鏡的目標是盡量模擬真實硬件的顯示設備,在現代 LED 顯示器上對古舊顯示設備(掌機屏幕、電視、街機 CRT 等)進行仿真,從而帶來更多模擬遊戲和懷舊樂趣的一類濾鏡。

注意,這裡介紹的大部分濾鏡的最佳使用場景都是 4K 顯示器全屏遊玩。各種掌機屏幕幾乎都沒有能力模擬這些效果,而手機屏幕太小,效果是看不清的。

首先來說說比較簡單的掌上設備。使用顯示器屏幕模擬掌機設備的一大問題是無法準確模擬掌機屏幕的表現。而屏幕空間的濾鏡通過色彩、像素顆粒感這兩方面嘗試逼近掌機屏幕的表現。

例如 GB(帶光)式的色彩和像素映射(gameboy-light):仔細觀看會發現馬里奧採用了方形像素,並且使用了橫向和縱向的像素分割線對老式 LCD 進行了風格化。色彩映射也是 GB 的綠屏。

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

可見像素並非簡單近鄰插值,而是同時模擬了像素本身的熒光擴散效果。使用了大量的像素模擬了單個 GBA 像素的熒光擴散灰度顯示不同亮度時的不同梯度。因此才能將像素顯示的陰影感準確模擬出來。而這一效果也是在 4K 顯示器下才能體現得最為明顯。因為 4K 顯示器有足夠的像素去表現這些效果。(你要問我為什麼用 4K 顯示器全屏玩 GB 遊戲?可能是吃得太飽了……)

對比一下就知道加濾鏡和不加濾鏡的天壤之別。很可愛吧,是不是想起了另一個古舊 LCD 設備(文曲星):

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

這裡這個 GB 的濾鏡是 LCD 系列濾鏡的一種。這一系列濾鏡就是為了創造相應掌機設備 LCD 屏幕效果而出現的。它的原理大框架就是增加像素之間的間隔形成 LCD 顆粒感,通過隔離的熒光過渡形成像素本身的陰影感,從而復原當年的古舊 LCD 屏幕的樣子。

比如 GBA 樣式(包括了 GBA 屏幕的顏色映射,GBA 反射顏色並不鮮艷,用現代的屏幕去顯示需要通過一定的映射)。一定程度上還原了像素排列方式,甚至還原了 GBA 屏幕本身的動態模糊:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

舉個 GBA 遊戲的例子:用 GBA 的朋友對這種色彩和像素風格的畫面應該有印象

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果
懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

對比不加濾鏡的鮮艷色彩和線性插值的圖像 (用模擬器玩曉月的朋友記憶中應該是這個畫面):

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

如果你覺得 9102 年了還要還原 GBA 的色彩簡直開歷史倒車(雖然這正是這篇文要乾的事情……),那麼也可以只進行 LCD 像素映射。只使用 LCD3X 系列濾鏡而不映射色彩即可:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

同樣的,NDS 也可以採用類似濾鏡。

由於 PSP 的屏幕相對來說要好不少,類似現代顯示器屏幕,一般沒有針對 PSP 屏幕的模擬需求。如果想模擬 PSP 的屏幕可以使用 RetroArch 自帶的 PSP-color 進行色彩映射。

下面說說另一個(真正的)重頭戲:

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 Diffusion

Halation 是被熒光體直接反射的光線,而 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 的色彩映射的效果如下:

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果
懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

再傳兩個其他遊戲的圖,還是那句話,要在自己的屏幕上運行模擬器動態才能比較明顯看到效果。

懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果
懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果
懷舊遊戲不要打開即玩!科普模擬器里各種常用濾鏡的原理和效果

以上基本介紹了常見的幾種 Filter 和它們的大體效果。那麼如何使用這些 filter?哪些模擬器支持 shader 語言寫的 filter 呢?

這裡:
http://emulation.gametechwiki.com/index.php/Shaders_and_Filters 介紹了一些常見模擬器支持的 filter 文件類型。一般來說,採用通用前端 RetroArch 可以使用大部分的 shader,而使用模擬器自帶前端則有很多限制。所以最簡單的方案就是直接使用 RetroArch,然後從其 shader 文件夾中選擇所需 shader,並通過菜單調整相應參數即可。

總結:模擬器濾鏡是個挺大的話題,這裡只是簡單介紹一些類型和它們的效果。一般來說,對 32 位及以下機型模擬時才推薦使用屏幕空間的濾鏡,抗鋸齒濾鏡一般不推薦像素遊戲使用。像素放大增強濾鏡根據個人口味使用,一般來說進行簡單的 2xSal 等即可,特別討厭像素的顆粒感的話,可以考慮 HQx 或 xBR 系列濾鏡。如果追求一些特殊效果,可以使用效果型濾鏡。而為了模擬古舊硬件(主要是顯示設備),則可以分別使用該種硬件的濾鏡。CRT 濾鏡主要就是 CRT-Royale,按照自己口味調整之後,配合高亮度 4K 顯示器,基本可以滿足一般 CRT 模擬需求。如果有特殊需要當然實機 + 彩監更好,沒有這個條件的話模擬器效果也不賴,而且彩監只能體驗一種或少數型號的顯示效果,而濾鏡可以自行配製體驗多種電視和信號的不同感覺,因此也並不衝突。此外,部分 Filter 會降低遊戲性能,或者因為需要幀信息從而略微增加遊戲延時,有性能需求時應當關閉所有濾鏡。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/224476.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 14:38
下一篇 2024-12-09 14:38

相關推薦

發表回復

登錄後才能評論