vkBasalt – это слой API vulkan, позволяющий выполнить собственные шейдеры в трёхмерной сцене без необходимости модифицировать приложение, осуществляющее рендеринг.
Слой входит в состав диструбитва Debian и устанавливается как обычно:
# apt install vkbasalt
Создаём в произвольном месте файл vkBasalt.conf. В файле прописываем следующие настройки:
- Кнопка включения / отключения эффектов наживую
toggleKey = Home
Работает в среде X window, и в настоящий момент не поддерживается в среде wayland, где придётся пользоваться следующей настройкой.
- Включать эффекты при запуске
enableOnLaunch = True
- Пути к текстурам и шейдерам:
reshadeTexturePath = "/path/to/reshade/Textures"
reshadeIncludePath = "/path/to/reshade/Shaders"
- Присваиваем имя эффекта конкретному шейдеру:
EyeAdaption = "/path/to/reshade/Shaders/EyeAdaption.fx"
- Активируем эффект в конфигурации
effects = EyeAdaption
Если хотим активировать несколько эффектов, перечисляем их через двоеточие:
effects = EyeAdaption1:EyeAdaption2
На этом минимальная конфигурация завершена. Переходим к настройкам запуска приложения. Прописываем следующие переменные окружения:
- Путь к файлу с конфигурацией:
export VKBASALT_CONFIG_FILE=/path/to/vkBasalt.conf
- Активируем загрузку слоя vkBasalt при создании контекста вулкан-приложения:
export ENABLE_VKBASALT=1
Готово.
Теперь в приложении, запущенном с этими переменными среды, будет включён по умолчанию дополнительный эффект, реализуемый указанным шейдером.
Дополнение по переносу GLSL-шейдеров из reShade в vkBasalt
Многие шейдеры для reShade имеют механизм конфуграции, позволяющий задать начальные значения для шейдера через графический интерфейс. vkBasalt такого инструментария не имеет, поэтому начальные значения придётся вписывать в шейдер напрямую. Посмотрим как это делается на примере EyeAdaption.fx:
Оригинальный код шейдера после блока комментариев начинается примерно следующим образом:
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "ReShade.fxh"
#include "ReShadeUI.fxh"
//effect parameters
uniform float fAdp_Delay <
...
...
...
> = 0.1;
//global vars
#define LumCoeff float3(0.212656, 0.715158, 0.072186)
uniform float Frametime < source = "frametime";>;
Все блоки кода вида uniform float Какое-тоИмя < ... > = 0.2; – это начальные константы и описание интерфейса для отображения в reShade. Для установки своих значений шейдера в vkBasalt достаточно закомментировать эти блоки и прописать свои значения напрямую в код шейдера для каждого из закомментированных блоков:
uniform float fAdp_BrightenHighlights=0.000000 ;
uniform float fAdp_BrightenMidtones=0.100000 ;
uniform float fAdp_BrightenShadows=0.100000 ;
uniform float fAdp_DarkenHighlights=0.000000 ;
uniform float fAdp_DarkenMidtones=0.000000 ;
uniform float fAdp_DarkenShadows=0.000000 ;
uniform float fAdp_Delay=0.000000 ;
uniform float fAdp_Equilibrium=0.000000 ;
uniform float fAdp_Strength=6.000000 ;
uniform float fAdp_TriggerRadius=7.000000 ;