想給Linux遊戲加上濾鏡、特效、光影著色器、提升畫質效果?安裝後處理軟體「vkBasalt」吧。
vkBasalt是由Georg Lehmann開發的開源軟體,他說這是仿造「ReShade」產生的專案,連特效種類都很相似,相容部份ReShade的著色器。
差別在於,ReShade是專為Windows遊戲寫的,雖然 Linux系統的ReShade可以用Proton跑,但頂多支援到Steam Proton跑的Windows遊戲(例如GTA V)。而vkBasalt不只支援Steam Proton,還支援Linux的原生Vulkan遊戲(例如War Thunder)。
vkBasalt能配合DXVK與VKD3D使用,但預設不支援OpenGL寫的遊戲。
Bottles for Linux的開發者已將vkBasalt納入他的應用程式,稱之為"post processing effect"。
1. 安裝vkBasalt#
請參照 Github指示
Arch Linux從AUR安裝:
yay -S vkbasalt lib32-vkbasalt
Flatpak版:
flatpak install org.freedesktop.Platform.VulkanLayer.vkBasalt
2. 用圖形介面Goverlay編輯vkBasalt設定檔#
安裝圖形程式 Goverlay來編輯vkBasalt設定檔。
Arch Linux從AUR安裝:
yay -S goverlay-bin
Goverlay預設編輯的是位於~/.config/vkBasalt/vkBasalt.conf
的vkBasalt設定檔。
切換到vkBasalt頁面,勾選要使用的著色器,加到右邊的面板
點選右下角Save儲存。按一下RUN,就會跑出測試用的Vkcube方便觀察效果。在執行過程中,按Home鍵可關閉vkBasalt的特效。
通常用下去比較「有感」的著色器是AdaptiveSharpn、AdaptiveFog、AmbientLight、Bloom、Clarity、FakeHDR這類的。
Goverlay似乎有bug,之前啟用的著色器列表重開後就會噴掉。
3. vkBasalt用法#
3.1. 原生Vulkan程式#
使用以下環境變數執行。
ENABLE_VKBASALT=1 <應用程式名稱>
例如執行Vkcube。在執行過程中按Home鍵可關閉vkBasalt的特效。
ENABLE_VKBASALT=1 vkcube
3.2. Flatpak的Vulkan程式#
以Steam遊戲為例,請先 用Flatpak安裝Steam。
- 加入以下環境變數,啟用vkBasalt,指定vkBasalt的設定檔位置,並開放Steam讀取
flatpak override --user --env=ENABLE_VKBASALT=1 com.valvesoftware.Steam
flatpak override --user --env=VKBASALT_CONFIG_FILE=/home/user/.config/vkBasalt/vkBasalt.conf com.valvesoftware.Steam
flatpak override --user --filesystem=/home/user/.config/vkBasalt com.valvesoftware.Steam
- 接著在要使用vkBasalt的遊戲的啟動選項加入
ENABLE_VKBASALT=1
3.3. 非Vulkan的OpenGL程式#
vkBasalt預設只支援Vulkan程式,利用Mesa的Zink驅動將OpenGL轉譯為Vulkan,這樣vkBasalt就能載入了。不過強制啟用Zink可能導致遊戲閃退,所以這裡我採用折衷作法:利用Steam提供的Gamescope合成器,將OpenGL轉Vulkan。
- 安裝Gamescope
flatpak install flathub com.valvesoftware.Steam.Utility.gamescope
- 編輯Steam遊戲的啟動選項,加入Gamescope的指令
gamescope %command%
4. 在vkBasalt使用ReShade的著色器#
以crosire蒐集的Reshade著色器為例,下載 ReShade FX shaders壓縮檔,解壓縮將
Shaders
和Textures
放到任意目錄,例如~/.local/share/reshade/
編輯
~/.config/vkBasalt/vkBasalt.conf
,填入ReShader Fx著色器所在目錄
# 要啟用的Reshade著色器
effects = colorfulness:denoise
# 個別Reshade著色器對應的具體路徑
colorfulness = /home/user/.local/share/reshade/Shaders/Colourfulness.fx
denoise = /home/user/.local/share/reshade/Shaders/Denoise.fx
# Reshae著色器路徑
reshadeTexturePath = /home/user/.local/share/reshade/Textures
reshadeIncludePath = /home/user/.local/share/reshad/Shaders