Files
mhwilds-optimization/reframework/autorun/mhwilds_disable_postprocessing.lua
2025-03-15 20:17:25 -05:00

198 lines
8.6 KiB
Lua

--v1.1.3
local statics = require("utility/Statics")
local TAAStrength = statics.generate("via.render.ToneMapping.TemporalAA", true)
local localExposureType = statics.generate("via.render.ToneMapping.LocalExposureType", true)
local lensDistortionSetting = statics.generate("via.render.RenderConfig.LensDistortionSetting", true)
--Default settings
local settings =
{
TAA = false,
jitter = false,
LDRPostProcessEnable = true,
colorCorrect = true,
lensDistortionEnable = false,
localExposure = false,
localExposureBlurredLuminance = true,
customContrastEnable = false,
filmGrain = true,
lensFlare = true,
godRay = true,
fog = true,
volumetricFog = true,
customContrast = 1.0
}
local apply = false
local save = false
local changed = false
local initialized = false
--Singleton and manager types
local cameraManager, cameraManagerType, graphicsManager, graphicsManagerType
--gameobject, component, and type definitions
local camera, cameraGameObject, LDRPostProcess, colorCorrectComponent, tonemapping, tonemappingType, graphicsSetting
--Saves settings to json
local function SaveSettings()
json.dump_file("mhwi_remove_postprocessing.json", settings)
end
--Loads settings from json and puts into settings table
local function LoadSettings()
local loadedTable = json.load_file("mhwi_remove_postprocessing.json")
if loadedTable ~= nil then
for key, val in pairs(loadedTable) do
settings[key] = loadedTable[key]
end
end
end
--Get component from gameobject
local function get_component(game_object, type_name)
local t = sdk.typeof(type_name)
if t == nil then
return nil
end
return game_object:call("getComponent(System.Type)", t)
end
--Apply settings
local function ApplySettings()
if initialized == false then log.info("[DISABLE POST PROCESSING] Not initialized, not applying settings") return end
log.info("[DISABLE POST PROCESSING] Applying settings")
--Set tonemapping and LDRPostProcessing
tonemapping:call("setTemporalAA", settings.TAA and TAAStrength.Strong or TAAStrength.Disable)
tonemapping:call("set_EchoEnabled", settings.jitter)
tonemapping:call("set_EnableLocalExposure", settings.localExposure)
tonemapping:call("setLocalExposureType", settings.localExposureBlurredLuminance and localExposureType.BlurredLuminance or localExposureType.Legacy)
--Set contast values depending on customContrastEnable
if settings.customContrastEnable == true then
tonemapping:call("set_Contrast", settings.customContrast)
elseif settings.colorCorrect == false then
tonemapping:call("set_Contrast", 1.0)
else
tonemapping:call("set_Contrast", 0.3)
end
--Set graphics setting
graphicsSetting:call("set_Fog_Enable", settings.fog)
graphicsSetting:call("set_VolumetricFogControl_Enable", settings.volumetricFog)
graphicsSetting:call("set_FilmGrain_Enable", settings.filmGrain)
graphicsSetting:call("set_LensFlare_Enable", settings.lensFlare)
graphicsSetting:call("set_GodRay_Enable", settings.godRay)
graphicsSetting:call("set_LensDistortionSetting", settings.lensDistortionEnable and lensDistortionSetting.ON or lensDistortionSetting.OFF)
if apply == true then graphicsManager:call("setGraphicsSetting", graphicsSetting) end
end
--Initialize by getting singletons, types, objects, then create hooks
local function Initialize()
log.info("[DISABLE POST PROCESSING] Trying to initialize...")
--Get singletons managers
cameraManager = sdk.get_managed_singleton("app.CameraManager")
if cameraManager == nil then return end
graphicsManager = sdk.get_managed_singleton("app.GraphicsManager")
if graphicsManager == nil then return end
log.info("[DISABLE POST PROCESSING] Singleton managers get successful")
--Get types
cameraManagerType = sdk.find_type_definition("app.CameraManager")
graphicsManagerType = sdk.find_type_definition("app.GraphicsManager")
log.info("[DISABLE POST PROCESSING] Singleton managers type definition get successful")
--Get gameobjects, components, and type definitions
camera = cameraManager:call("get_PrimaryCamera")
cameraGameObject = camera:call("get_GameObject")
LDRPostProcess = get_component(cameraGameObject, "via.render.LDRPostProcess")
colorCorrectComponent = LDRPostProcess:call("get_ColorCorrect")
tonemapping = get_component(cameraGameObject, "via.render.ToneMapping")
tonemappingType = sdk.find_type_definition("via.render.ToneMapping")
graphicsSetting = graphicsManager:call("get_NowGraphicsSetting")
log.info("[DISABLE POST PROCESSING] Component get successful")
--Create hooks and register callback
sdk.hook(cameraManagerType:get_method("onSceneLoadFadeIn"), function() end, function() ApplySettings() end)
sdk.hook(tonemappingType:get_method("clearHistogram"), function() end, function() tonemapping:call("set_EnableLocalExposure", settings.localExposure) end)
re.on_application_entry("LockScene", function() colorCorrectComponent:call("set_Enabled", settings.colorCorrect) end)
log.info("[DISABLE POST PROCESSING] Hook and callback creation successful")
--Apply settings after initialization
initialized = true
ApplySettings()
log.info("[DISABLE POST PROCESSING] Initialization successful")
end
--Load settings at the start and keep trying to initialize until all singleton managers get
LoadSettings()
re.on_frame(function() if initialized == false then Initialize() end end)
--Script generated UI
re.on_draw_ui(function()
if imgui.tree_node("Post Processing Settings") then
changed = false
--Settings menu
changed, settings.TAA = imgui.checkbox("TAA enabled", settings.TAA)
if changed == true then ApplySettings() end
changed, settings.jitter = imgui.checkbox("TAA jitter enabled", settings.jitter)
if changed == true then ApplySettings() end
imgui.new_line()
changed, settings.colorCorrect = imgui.checkbox("Color correction", settings.colorCorrect)
if changed == true then ApplySettings() end
changed, settings.localExposure = imgui.checkbox("Local exposure enabled", settings.localExposure)
if changed == true then ApplySettings() end
imgui.text(" ") imgui.same_line()
changed, settings.localExposureBlurredLuminance = imgui.checkbox("Use blurred luminance (sharpens)", settings.localExposureBlurredLuminance)
if changed == true then ApplySettings() end
changed, settings.customContrastEnable = imgui.checkbox("Custom contrast enabled", settings.customContrastEnable)
if changed == true then ApplySettings() end
changed, settings.customContrast = imgui.drag_float("Contrast", settings.customContrast, 0.01, 0.01, 5.0)
if changed == true then ApplySettings() end
imgui.new_line()
imgui.text("Graphics Settings")
changed, settings.lensDistortionEnable = imgui.checkbox("Lens distortion enabled", settings.lensDistortionEnable)
if changed == true then ApplySettings() end
changed, settings.fog = imgui.checkbox("Fog enabled", settings.fog)
if changed == true then ApplySettings() end
changed, settings.volumetricFog = imgui.checkbox("Volumetric fog enabled", settings.volumetricFog)
if changed == true then ApplySettings() end
changed, settings.filmGrain = imgui.checkbox("Film grain enabled", settings.filmGrain)
if changed == true then ApplySettings() end
changed, settings.lensFlare = imgui.checkbox("Lens flare enabled", settings.lensFlare)
if changed == true then ApplySettings() end
changed, settings.godRay = imgui.checkbox("Godray enabled", settings.godRay)
if changed == true then ApplySettings() end
imgui.spacing()
--Apply graphics settings when clicking on apply box
changed, apply = imgui.checkbox("Apply graphics settings", apply)
if apply == true then
ApplySettings()
apply = false
end
imgui.text("WARNING: applying graphics settings will set")
imgui.text("ambient lighting to high due to a bug in the game")
imgui.text("until returning to title or restarting the game")
imgui.new_line()
--Save settings when clicking on save box
changed, save = imgui.checkbox("Save settings", save)
if save == true then
SaveSettings()
save = false
end
imgui.new_line()
imgui.tree_pop()
end
end)