基於物理模型還原GB與GBA SP原始螢幕觀感(附著色器下載)
开源掌机吧
全部回复
仅看楼主
level 7
Mach-O 楼主
最近我寫了一套給 RetroArch 使用的 Shader,想在現代螢幕上,盡可能還原初代 Game Boy 和 GBA SP 背光螢幕原本的效果。
現在很多懷舊 Shader,都是憑印象調出一種「老螢幕顏色」,再混合前後幾幀做出拖影。
但只靠感覺調整,很容易走向兩個極端:有些把 Game Boy 調成非常鮮豔的綠色;有些雖然灰暗復古,最後卻更像文曲星,而不是初代 Game Boy。
它們可能很有懷舊氛圍,但還原的往往是「印象中的 Game Boy」,不一定是真正的 Game Boy 螢幕。
我先放兩張開啟 GB Shader 後的實際畫面。大家可以看看這個顏色、螢幕質感和殘影,是不是更接近你記憶裡的初代 Game Boy。
我的方法可以簡單概括成四個字:先量,再算。
我先把實際量測得到的色彩、灰階和黑位帶進模型,再正確轉換到標準 sRGB。也就是先確定原始螢幕每一級應該呈現什麼顏色,而不是隨便套上一層綠色濾鏡。
接著,我把遊戲畫面轉換成模擬的電訊號,再用這些訊號去驅動虛擬的液晶像素。
每個像素都會保留之前的狀態,再根據電壓、液晶材料和掃描過程,計算下一刻的變化。所以畫面中的拖影、串擾和殘像,不是後來加上去的模糊特效,而是從物理模型中自然產生的。
GBA SP 後期的 AGS-101 背光螢幕使用了不同的液晶技術,因此我也為它單獨建立了一套模型,並使用實際量測和校色資料還原它的色彩與黑位。
下面左邊是模擬器原始輸出,右邊是開啟 AGS-101 Shader 後的效果。兩邊的差別不只是飽和度,而是整體色彩、黑位、畫面層次和液晶像素的感覺。
開發過程中,我查閱了大量當年的液晶研究文獻,也參考了真機量測、螢幕驅動資料,以及同年代相似液晶材料的實驗數據。
我想做的不是另一個「有老螢幕感覺」的濾鏡,而是從顏色、電訊號到液晶反應,重新模擬這兩塊螢幕的顯示方式。
現在這套 Shader 已經開源,可以直接在 RetroArch 中使用。下載後解壓到 RetroArch/shaders,再載入對應的 preset 即可。記得關閉模擬器核心自帶的混幀功能,避免重複計算拖影。
网页链接
2026年08月19日 17点08分 1
level 7
Mach-O 楼主
上面所有的截圖都是在KPA的4倍點對點螢幕下的截圖
2026年08月19日 17点08分 2
level 6
[真棒]
2026年08月19日 18点08分 3
level 10
大佬这个要怎么用啊?手机端ra可以用么?能不能再做个纯反射边框滤镜啊[太开心]
2026年08月20日 00点08分 4
level 10
[真棒]
2026年08月20日 00点08分 5
吧务
level 16
厉害奥。不过和前几天的可能少了一步,就是屏幕自然的瑕疵和随机噪点,不知道有没有考虑
2026年08月20日 01点08分 6
這個是完全基於物理模擬去重做的。你說的像素串擾和隨機噪點,都會基於物理模擬來真實地呈現。可以透過設置螢幕的老化參數,來模擬更加物理老化的螢幕,獲得更多這樣的感覺。我現在貼的截圖裡面的螢幕,就是去模擬了使用一年左右的螢幕老化效果。
2026年08月20日 02点08分
你可以理解那個人的做法,是通過模擬的方式,去施加了一些看起來比較像的串擾和拖影。 我的實現方式,是完全通過 Shader 去模擬每一個液晶分子它正常的物理狀態。實際上,我是在重建一個虛擬的、當年水平的液晶顯示器,所有當年液晶顯示器裡應該存在的瑕疵和物理串擾,都可以被這個 Shader 正確地重建。
2026年08月20日 02点08分
我在 Shader 裡對每一個像素都做了一個電壓的模擬。像素與像素之間的電壓,會基於當年螢幕的物理電路圖設計來計算——也就是當前這個像素被施加電壓時,會對周圍的像素進行電壓幹擾,這就是所謂的 crosstalk。 透過模擬這種「由於共用驅動電路導致的像素間電壓幹擾」,可以真實呈
2026年08月20日 02点08分
level 7
请问RG477M这些6倍分辨率可以用吗?H700是GL驱动,估计不行~
2026年08月20日 01点08分 7
OpenGL 的話沒有測試過,我的測試是使用的是 Vulkan
2026年08月20日 02点08分
level 14
mark
2026年08月20日 02点08分 8
level 12
gb那个太绿了,还是接受不了,还是前两天我发的那种gb着色器可以。gba的就很还原,尤其是拖影。
2026年08月20日 03点08分 9
level 10
太牛了
2026年08月20日 03点08分 10
level 7
Mach-O 楼主
標準的 GB 螢幕和 GBM 螢幕的差異,我放了一張網友當年測量的實拍圖。可能標準的 GB 螢幕還原出來就是這種偏綠的色彩,接下來我回頭嘗試還原一個 GBM 螢幕的效果。那個應該就是大家預期的灰色底色的單色屏了
2026年08月20日 03点08分 11
你看看我前几天发的帖子,里面有四种gb仿真着色器效果,感觉很不错
2026年08月20日 03点08分
@折影的十字架 那個人的 GitHub 我去看了.他的 shader 後來我也研究了一下 但這並不是我最後想要做的東西。 我想要達到的效果,並不是憑著我的印象去調整出一個 DMG 的螢幕或者是 GBA 的螢幕,而是基於我能找到的真實測量數據,去還原一個儘可能貼近那塊螢幕表現的效果。 固然它可能和大家印象中那塊螢幕上的表現有所差異,但實際上已經過了接近 40 年,印象是不準確的。
2026年08月20日 03点08分
@折影的十字架 不過它那個 Shader 的確非常忠實地還原了大家對於老螢幕的那種印象、那種顯示上的問題,比如說非常嚴重的行列串擾以及隨機的顯示噪點。這的確是大家對於老螢幕的一些印象,但它並不是當年那塊屏幕真實的表現,更像是一塊老化嚴重的顯示器。
2026年08月20日 03点08分
@Mach-O 其实gameboy实机现在还有不少能开机的,画面是怎样的观感,其实也不是靠印象中去复刻着色器效果
2026年08月20日 03点08分
level 13
switch的全能模拟器好像用不了
2026年08月20日 04点08分 12
這套 shader 是給 RetroArch用的。
2026年08月20日 04点08分
@Mach-O 好
2026年08月20日 04点08分
不应该啊,全能模拟器不就是retroarch嘛,switch版本也是retroarch啊
2026年08月20日 07点08分
@热爱模拟游戏2 用不了,这个是给安卓用的,到时候kPa到后再看看
2026年08月20日 07点08分
1