最近の記事

2022年05月08日

ReShadeの代わりにLinux版Steamで使えるポストプロセッシングインジェクター「vkBasalt」

Linux版SteamでReShadeを使うには、ReShadeのd3d9.dllなどをアプリケーション毎のwinecfgで割り当てる必要があります。しかし、この方法では、DKVXを使っていないDLLを読み込む事になるので、描画速度がDKVXを使っている時よりもかなり遅くなってしまいます。
そこで、ReShadeを使わずに、ポストプロセッシングによって画質を向上させるツールがLinuxディストリビューションにはあります。それが、vkBasaltです。vkBasaltのグラフィックスAPIは、Vulkanが使われています。

Ubuntuの場合は、公式リポジトリで公開されているので、apt installコマンドでインストール出来ます。


$ sudo apt install vkbasalt


◇vkBasaltの公式リポジトリ
https://github.com/DadSchoorse/vkBasalt

vkBasaltを有効にするには、オプションを付けてアプリケーションを動かすようにコマンドを追加します。vkBasaltの公式リポジトリで、その方法は記載されています。Steamの場合は、vkBasaltを使いたいアプリケーションにオプションを追加します。

ENABLE_VKBASALT=1 %command%


スクリーンショット_2022-05-07_08-40-13.png

vkBasaltは、ReShadeのようにゲーム内に専用のGUIツールは用意されていません。vkBasalt.confという設定ファイルをテキストエディタで新規に作ります。場所はゲームフォルダでも構いませんが、汎用的に使うつもりであるなら、homeディレクトリの.configディレクトリ直下に作ると便利です。このツールは、ReShade FX Shadersを使う事が出来ます。ReShade FX Shadersのフォルダも.configディレクトリに置いておくと分かり易いです。

◇ReShade FX Shadersの公式リポジトリ
https://github.com/crosire/reshade-shaders

vkBasalt.confのファイルは以下の物をベースにすると良いでしょう。
https://github.com/DadSchoorse/vkBasalt/blob/master/config/vkBasalt.conf

ReShader FX Shadersを使う場合は、明示的にシェーダのパスを示し、エイリアスを設定しておきます。vkBasaltにはHDRが無いので、ReShader FX ShadersのFakeHDR.fxを使うと良いでしょう。


reshadeTexturePath = "/home/valkyrie/.config/vkBasalt/reshade-shaders-master/Textures"
reshadeIncludePath = "/home/valkyrie/.config/vkBasalt/reshade-shaders-master/Shaders"
hdr = /home/valkyrie/.config/vkBasalt/reshade-shaders-master/Shaders/FakeHDR.fx
effects = fxaa:cas:hdr



以下は、vkBasaltのContrast Adaptive Sharpening(CAS)とFXAA、ReShade FX ShadersのFakeHDRだけを使ったものです。結構クッキリとした画質になりました。CASのcasSharpnessは0.9に設定しています。

スクリーンショット_2022-05-07_12-07-38.png
スクリーンショット_2022-05-07_12-05-39.png
スクリーンショット_2022-05-07_12-04-57.png



スクリーンショット_2022-05-07_09-38-42.png
スクリーンショット_2022-05-07_09-51-37.png
スクリーンショット_2022-05-07_09-49-03.png

◇List of Reshade shaders working with vkBasalt
https://github.com/gripped/vkBasalt-working-reshade-shaders

◇vkBasalt.confの設定例

#effects is a colon seperated list of effect to use
#e.g.: effects = fxaa:cas
#effects will be run in order from left to right
#one effect can be run multiple times e.g. smaa:smaa:cas
#cas - Contrast Adaptive Sharpening
#dls - Denoised Luma Sharpening
#fxaa - Fast Approximate Anti-Aliasing
#smaa - Enhanced Subpixel Morphological Antialiasing
#lut - Color LookUp Table

reshadeTexturePath = "./reshade-shaders-master/Textures"
reshadeIncludePath = "./reshade-shaders-master/Shaders"

ambient = ./reshade-shaders-master/Shaders/AmbientLight.fx
colorfulness = ./reshade-shaders-master/Shaders/Colourfulness.fx
denoise = ./reshade-shaders-master/Shaders/Denoise.fx
hdr = ./reshade-shaders-master/Shaders/FakeHDR.fx
finesharp = ./reshade-shaders-master/Shaders/FineSharp.fx
curves = ./reshade-shaders-master/Shaders/Curves.fx
clarity = ./reshade-shaders-master/Shaders/Clarity.fx
dpx = ./reshade-shaders-master/Shaders/DPX.fx
mxao = ./reshade-shaders-master/Shaders/MXAO.fx
filmicpass = ./reshade-shaders-master/Shaders/FilmicPass.fx
broom = ./reshade-shaders-master/Shaders/Bloom.fx
eyeadaption = ./reshade-shaders-master/Shaders/EyeAdaption.fx
rbm = ./reshade-shaders-master/Shaders/ReflectiveBumpMapping.fx
magicbroom = ./reshade-shaders-master/Shaders/MagicBloom.fx

effects = fxaa:cas:hdr:mxao:curves:clarity:colorfulness:dpx:magicbroom:rbm
depthCapture = off

#toggleKey toggles the effects on/off
toggleKey = Home

#enableOnLaunch sets if the effects are emabled when started
enableOnLaunch = True

#casSharpness specifies the amount of sharpning in the CAS shader.
#0.0 less sharp, less artefacts, but not off
#1.0 maximum sharp more artefacts
#Everything in between is possible
#negative values sharpen even less, up to -1.0 make a visible difference
casSharpness = 0.9

#dlsSharpness specifies the amount of sharpening in the Denoised Luma Sharpening shader.
#Increase to sharpen details within the image.
#0.0 less sharp, less artefacts, but not off
#1.0 maximum sharp more artefacts
dlsSharpness = 0.5

#dlsDenoise specifies the amount of denoising in the Denoised Luma Sharpening shader.
#Increase to limit how intensely film grain within the image gets sharpened.
#0.0 min
#1.0 max
dlsDenoise = 0.17

#fxaaQualitySubpix can effect sharpness.
#1.00 - upper limit (softer)
#0.75 - default amount of filtering
#0.50 - lower limit (sharper, less sub-pixel aliasing removal)
#0.25 - almost off
#0.00 - completely off
fxaaQualitySubpix = 0.75

#fxaaQualityEdgeThreshold is the minimum amount of local contrast required to apply algorithm.
#0.333 - too little (faster)
#0.250 - low quality
#0.166 - default
#0.125 - high quality
#0.063 - overkill (slower)
fxaaQualityEdgeThreshold = 0.125

#fxaaQualityEdgeThresholdMin trims the algorithm from processing darks.
#0.0833 - upper limit (default, the start of visible unfiltered edges)
#0.0625 - high quality (faster)
#0.0312 - visible limit (slower)
#Special notes: due to the current implementation you
#Likely want to set this to zero.
#As colors that are mostly not-green
#will appear very dark in the green channel!
#Tune by looking at mostly non-green content,
#then start at zero and increase until aliasing is a problem.
fxaaQualityEdgeThresholdMin = 0.0312

#smaaEdgeDetection changes the edge detection shader
#luma - default
#color - might catch more edges, but is more expensive
smaaEdgeDetection = luma

#smaaThreshold specifies the threshold or sensitivity to edges
#Lowering this value you will be able to detect more edges at the expense of performance.
#Range: [0, 0.5]
#0.1 is a reasonable value, and allows to catch most visible edges.
#0.05 is a rather overkill value, that allows to catch 'em all.
smaaThreshold = 0.05

#smaaMaxSearchSteps specifies the maximum steps performed in the horizontal/vertical pattern searches
#Range: [0, 112]
#4 - low
#8 - medium
#16 - high
#32 - ultra
smaaMaxSearchSteps = 32

#smaaMaxSearchStepsDiag specifies the maximum steps performed in the diagonal pattern searches
#Range: [0, 20]
#0 - low, medium
#8 - high
#16 - ultra
smaaMaxSearchStepsDiag = 16

#smaaCornerRounding specifies how much sharp corners will be rounded
#Range: [0, 100]
#25 is a reasonable value
smaaCornerRounding = 25

#lutFile is the path to the LUT file that will be used
#supported are .CUBE files and .png with width == height * height
lutFile = "/path/to/lut"


posted by takatan at 18:27| 大阪 ☀| linux | このブログの読者になる | 更新情報をチェックする