-- @ Version: SCREEN SPACE SHADERS - UPDATE 19 -- @ Description: LUT script -- @ Author: https://www.moddb.com/members/ascii1457 -- @ Mod: https://www.moddb.com/mods/stalker-anomaly/addons/screen-space-shaders local ssfx_lut_default = { group = 1, intensity = 1.00 } local ssfx_lut_transition_speed = 0.005 -- Internal vars local ssfx_lut_group1 = 0 local ssfx_lut_group2 = 0 local ssfx_lut_lerp = 0 local ssfx_lut_lerp_target = 0 local ssfx_lut_int = 0 local ssfx_lut_lerp_done = true local DebugGroup = 0; -- Set a LUT table for a specific map local ssfx_maps = { ["jupiter"] = { group = 25, intensity = 1.0 }, ["jupiter_underground"] = { group = 14, intensity = 1.0 }, ["k00_marsh"] = { group = 23, intensity = 1.0 }, ["k01_darkscape"] = { group = 21, intensity = 1.0 }, ["k02_trucks_cemetery"] = { group = 29, intensity = 1.0 }, ["l01_escape"] = { group = 21, intensity = 1.0 }, ["l02_garbage"] = { group = 27, intensity = 1.0 }, ["l03_agroprom"] = { group = 24, intensity = 1.0 }, ["l03u_agr_underground"] = { group = 32, intensity = 1.0 }, ["l04_darkvalley"] = { group = 27, intensity = 1.0 }, ["l04u_labx18"] = { group = 14, intensity = 1.0 }, ["l05_bar"] = { group = 18, intensity = 1.0 }, ["l06_rostok"] = { group = 19, intensity = 1.0 }, ["l07_military"] = { group = 20, intensity = 1.0 }, ["l08_yantar"] = { group = 30, intensity = 1.0 }, ["l08u_brainlab"] = { group = 14, intensity = 1.0 }, ["l09_deadcity"] = { group = 18, intensity = 1.0 }, ["l10_limansk"] = { group = 17, intensity = 1.0 }, ["l10_radar"] = { group = 17, intensity = 1.0 }, ["l10_red_forest"] = { group = 26, intensity = 1.0 }, ["l10u_bunker"] = { group = 14, intensity = 1.0 }, ["l11_hospital"] = { group = 31, intensity = 1.0 }, ["l11_pripyat"] = { group = 22, intensity = 1.0 }, ["l12_stancia"] = { group = 17, intensity = 1.0 }, ["l12_stancia_2"] = { group = 25, intensity = 1.0 }, ["l12u_control_monolith"] = { group = 14, intensity = 1.0 }, ["l12u_sarcofag"] = { group = 14, intensity = 1.0 }, ["l13_generators"] = { group = 20, intensity = 1.0 }, ["l13u_warlab"] = { group = 14, intensity = 1.0 }, ["labx8"] = { group = 14, intensity = 1.0 }, ["pripyat"] = { group = 18, intensity = 1.0 }, ["zaton"] = { group = 21, intensity = 1 }, ["y04_pole"] = { group = 30, intensity = 1.0 }, ["bunker_a1"] = { group = 14, intensity = 1.0 }, } local function ssfx_lut_transition() get_console():execute("ssfx_lut (" .. ssfx_lut_int .. "," .. ssfx_lut_group1 .. "," .. ssfx_lut_group2 .. "," .. ssfx_lut_lerp .. ")") end function ssfx_lut_diminish() -- Frame independent smoothing local smoothing = math.min(ssfx_lut_transition_speed * device().time_delta / 20, 0.19) -- Let's go! if (ssfx_lut_lerp < ssfx_lut_lerp_target) then ssfx_lut_lerp = ssfx_lut_lerp + smoothing else ssfx_lut_lerp = ssfx_lut_lerp - smoothing end if math.abs(ssfx_lut_lerp - ssfx_lut_lerp_target) <= ssfx_lut_transition_speed then ssfx_lut_group1 = ssfx_lut_group2 ssfx_lut_group2 = 0 ssfx_lut_lerp = 0 ssfx_lut_lerp_target = 0 ssfx_lut_lerp_done = true end end function ssfx_lut_change(group, insta) if (ssfx_lut_lerp_done == false) then return end if (insta == true) then ssfx_lut_group1 = group ssfx_lut_lerp = 0 ssfx_lut_lerp_target = 0 ssfx_lut_lerp_done = true ssfx_lut_transition() else ssfx_lut_group2 = group ssfx_lut_lerp_target = 1 ssfx_lut_lerp_done = false end end -- DEBUG local function ssfx_on_key_press(dik) local bind = dik_to_bind(dik) local kb = key_bindings if bind == kb.kWPN_RELOAD then DebugGroup = DebugGroup + 1 ssfx_lut_change(DebugGroup, false) end end local function actor_on_update() --local game_hours = level.get_time_hours() --printf("LUT TIME : %s", game_hours) if (ssfx_lut_lerp_done == false) then ssfx_lut_diminish() ssfx_lut_transition() end end local function actor_on_first_update() if (ssfx_maps[level.name()]) then Map_LUT = ssfx_maps[level.name()].group or ssfx_lut_default.group ssfx_lut_int = ssfx_maps[level.name()].intensity or ssfx_lut_default.intensity else Map_LUT = ssfx_lut_default.group ssfx_lut_int = ssfx_lut_default.intensity end ssfx_lut_change(Map_LUT, true) end function on_option_change() end function on_game_start() --RegisterScriptCallback("on_key_press", ssfx_on_key_press) -- General Functions RegisterScriptCallback("actor_on_first_update", actor_on_first_update) RegisterScriptCallback("actor_on_update", actor_on_update) RegisterScriptCallback("on_option_change", on_option_change) -- Read and apply settigns on_option_change() end