summaryrefslogtreecommitdiff
path: root/Plugin.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Plugin.cs')
-rwxr-xr-xPlugin.cs80
1 files changed, 79 insertions, 1 deletions
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<float>("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>? createTAAObject;
+ private Hook<CreateTAAObject2>? createTAAObject2;
+ private Hook<DestroyTAAObject>? destroyTAAObject;
+ private nint taaObject = 0x0;
+ private static Parameter[] taaParameters = {
+ newParameter<bool>("TAA Reprojection", 0x19D, ParameterType.BOOL),
+ newParameter<bool>("TAA Jitter Enable", 0x184, ParameterType.BOOL),
+ newParameter<float>("TAA Blend Rate", 0x180, ParameterType.FLOAT),
+ newParameter<float>("TAA Variance Gamma", 0x194, ParameterType.FLOAT),
+ newParameter<bool>("TAA Sharpen", 0x187, ParameterType.BOOL),
+ newParameter<float>("TAA Sharpen Amount", 0x198, ParameterType.FLOAT),
+ newParameter<bool>("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<int> setShadowQuality;
@@ -2184,6 +2203,10 @@ namespace WorldTuningTool
createFXAAObject2 = Hook.Create<CreateFXAAObject2>(0x142393680, CreateFXAAObject2Hook); // nint
destroyFXAAObject = Hook.Create<DestroyFXAAObject>(0x142393740, DestroyFXAAObjectHook); // nint, int
+ createTAAObject = Hook.Create<CreateTAAObject>(0x1423911A0, CreateTAAObjectHook);
+ createTAAObject2 = Hook.Create<CreateTAAObject2>(0x142391320, CreateTAAObject2Hook); // nint
+ destroyTAAObject = Hook.Create<DestroyTAAObject>(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<UpdateShadowParams>(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();
}