-- @ Version: SCREEN SPACE SHADERS - UPDATE 22
-- @ 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 .. ", 1)")

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