From eb4941f2c0dd216c0f97be20c3b6b7167185ddd5 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Fri, 26 Jun 2026 17:48:47 -0400 Subject: TAA object Signed-off-by: Andrew Opalach --- Plugin.cs | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) (limited to 'Plugin.cs') diff --git a/Plugin.cs b/Plugin.cs index 85710d0..2dfda8b 100755 --- a/Plugin.cs +++ b/Plugin.cs @@ -1758,6 +1758,23 @@ namespace WorldTuningTool newParameter("FXAA Edge Threshold Min", 0x180, ParameterType.FLOAT, pMinMaxStep(0.0f, 1.0f, 0.001f)) }; + private delegate nint CreateTAAObject(); + private delegate nint CreateTAAObject2(nint unknownPtr); + private delegate nint DestroyTAAObject(nint taaObjectInternal, int unknownInt); + private Hook? createTAAObject; + private Hook? createTAAObject2; + private Hook? destroyTAAObject; + private nint taaObject = 0x0; + private static Parameter[] taaParameters = { + newParameter("TAA Reprojection", 0x19D, ParameterType.BOOL), + newParameter("TAA Jitter Enable", 0x184, ParameterType.BOOL), + newParameter("TAA Blend Rate", 0x180, ParameterType.FLOAT), + newParameter("TAA Variance Gamma", 0x194, ParameterType.FLOAT), + newParameter("TAA Sharpen", 0x187, ParameterType.BOOL), + newParameter("TAA Sharpen Amount", 0x198, ParameterType.FLOAT), + newParameter("TAA Sharpend Ignore Edges", 0x19C, ParameterType.BOOL) + }; + private static MtObject? sMain = null; private static Parameter[] allParameters = new Parameter[]{ hqMode } @@ -1776,7 +1793,9 @@ namespace WorldTuningTool .Concat(bloomParameters) .Concat(dofParameters) .Concat(motionBlurParameters) - .Concat(fxaaParameters).ToArray(); + .Concat(fxaaParameters) + .Concat(taaParameters) + .ToArray(); private static int currentShadowResMultiplier = 1; private static NativeAction setShadowQuality; @@ -2184,6 +2203,10 @@ namespace WorldTuningTool createFXAAObject2 = Hook.Create(0x142393680, CreateFXAAObject2Hook); // nint destroyFXAAObject = Hook.Create(0x142393740, DestroyFXAAObjectHook); // nint, int + createTAAObject = Hook.Create(0x1423911A0, CreateTAAObjectHook); + createTAAObject2 = Hook.Create(0x142391320, CreateTAAObject2Hook); // nint + destroyTAAObject = Hook.Create(0x1423916E0, DestroyTAAObjectHook); // nint, int + IntPtr addr = PatternScanner.FindFirst(Pattern.FromString("48 89 5C 24 10 48 89 74 24 18 48 89 7C 24 20 55 41 56 41 57 48 8B EC 48 83 EC 30 48 8B FA 48 8B D9 E8 AA B6 C1 FF 48 8B 47 10 48 8D 57 50")); Assert(addr == 0x141AB2260); // nint, nint updateShadowParams = Hook.Create(addr, UpdateShadowParamsHook); @@ -2610,6 +2633,13 @@ namespace WorldTuningTool param.Update(fxaaObject); } } + if (taaObject != 0x0) + { + foreach (Parameter param in taaParameters) + { + param.Update(taaObject); + } + } } private void EvalSceneParamsHook(nint unknownPtr, nint unknownPtr2, int unknownInt, nint unknownPtr3) @@ -2694,6 +2724,40 @@ namespace WorldTuningTool return destroyFXAAObject!.Original(fxaaObjectInternal, unknownInt); } + private nint CreateTAAObjectHook() + { + taaObject = createTAAObject!.Original(); + foreach (Parameter param in taaParameters) + { + param.Update(taaObject); + } + return taaObject; + } + + private nint CreateTAAObject2Hook(nint unknownPtr) + { + taaObject = createTAAObject2!.Original(unknownPtr); + foreach (Parameter param in taaParameters) + { + param.Update(taaObject); + } + return taaObject; + } + + private nint DestroyTAAObjectHook(nint taaObjectInternal, int unknownInt) + { + Assert(unknownInt == 1); + if (taaObject == taaObjectInternal) + { + taaObject = 0x0; + foreach (Parameter param in taaParameters) + { + param.Update(taaObject); + } + } + return destroyTAAObject!.Original(taaObjectInternal, unknownInt); + } + private nint CreateDofObjectHook() { dofObject = createDofObject!.Original(); @@ -3921,6 +3985,20 @@ namespace WorldTuningTool } ImGui.PopID(); + ImGui.PushID("TAA"); + if (ImGui.CollapsingHeader("TAA")) + { + if (taaObject != 0x0) + { + ImGui.Text($"Address: 0x{taaObject:X}"); + foreach (Parameter param in taaParameters) + { + param.Draw(width); + } + } + } + ImGui.PopID(); + ImGui.Separator(); } -- cgit v1.2.3-101-g0448