198 lines
8.6 KiB
Lua
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) |