Divergent/mods/Screen Space Shaders/gamedata/scripts/ssfx_shadows.script

83 lines
2.9 KiB
Plaintext

-- @ Version: SCREEN SPACE SHADERS - UPDATE 19
-- @ Description: Shadows script
-- @ Author: https://www.moddb.com/members/ascii1457
-- @ Mod: https://www.moddb.com/mods/stalker-anomaly/addons/screen-space-shaders
-- Shadows
local ssfx_shadows_quality = 0
local ssfx_shadows_lod_min = 0
local ssfx_shadows_lod_max = 0
local ssfx_shadows_volumetric_res = 0;
local ssfx_shadows_volumetric = false
local ssfx_shadows_volumetric_int = 0
local ssfx_shadows_volumetric_quality = 0
function apply_shadows_settings()
get_console():execute("r2_ls_depth_bias -0.00005" )
get_console():execute("r2_ls_squality " .. ssfx_shadows_quality )
get_console():execute("ssfx_shadows (" .. ssfx_shadows_lod_min .. "," .. ssfx_shadows_lod_max .. ",0)")
get_console():execute("ssfx_volumetric (" .. (ssfx_shadows_volumetric and 1 or 0) .. "," .. ssfx_shadows_volumetric_int .. "," .. ssfx_shadows_volumetric_quality .. "," .. ssfx_shadows_volumetric_res .. ")")
end
function on_option_change()
-- Get settings
ssfx_shadows_quality = ssfx_001_mcm.ssfx_get_setting("shadows", "lod_quality", ssfx_shadows_settings)
ssfx_shadows_lod_min = ssfx_001_mcm.ssfx_get_setting("shadows", "lod_min", ssfx_shadows_settings)
ssfx_shadows_lod_max = ssfx_001_mcm.ssfx_get_setting("shadows", "lod_max", ssfx_shadows_settings)
ssfx_shadows_volumetric_res = ssfx_001_mcm.ssfx_get_setting("shadows", "volumetric_resolution", ssfx_shadows_settings)
ssfx_shadows_volumetric = ssfx_001_mcm.ssfx_get_setting("shadows", "volumetric_force", ssfx_shadows_settings)
ssfx_shadows_volumetric_int = ssfx_001_mcm.ssfx_get_setting("shadows", "volumetric_int", ssfx_shadows_settings)
ssfx_shadows_volumetric_quality = ssfx_001_mcm.ssfx_get_setting("shadows", "volumetric_quality", ssfx_shadows_settings)
-- Min resolution
if (ssfx_shadows_lod_min == 0) then
ssfx_shadows_lod_min = 128
elseif (ssfx_shadows_lod_min == 1) then
ssfx_shadows_lod_min = 256
elseif (ssfx_shadows_lod_min == 2) then
ssfx_shadows_lod_min = 512
elseif (ssfx_shadows_lod_min == 3) then
ssfx_shadows_lod_min = 768
elseif (ssfx_shadows_lod_min == 4) then
ssfx_shadows_lod_min = 1536
else
ssfx_shadows_lod_min = 768 -- Vanilla value
end
-- Max resolution
if (ssfx_shadows_lod_max == 0) then
ssfx_shadows_lod_max = 1536
elseif (ssfx_shadows_lod_max == 1) then
ssfx_shadows_lod_max = 2048
elseif (ssfx_shadows_lod_max == 2) then
ssfx_shadows_lod_max = 2560
elseif (ssfx_shadows_lod_max == 3) then
ssfx_shadows_lod_max = 3072
elseif (ssfx_shadows_lod_max == 4) then
ssfx_shadows_lod_max = 4096
else
ssfx_shadows_lod_max = 1536 -- Vanilla value
end
-- Volumetric resolution
ssfx_shadows_volumetric_res = 100.0 / ssfx_shadows_volumetric_res
-- Apply settings
apply_shadows_settings()
end
function on_game_start()
-- General Functions
RegisterScriptCallback("on_option_change", on_option_change)
-- Read and apply settigns
on_option_change()
end