From 9ff7632f042c67a338d8ec2e13b6a1ca68dd5375307875faf607a3dd32981c8c Mon Sep 17 00:00:00 2001 From: copecone Date: Tue, 11 Aug 2026 03:24:28 +0900 Subject: [PATCH] Fix Single Frame Delay in Capture --- Core/PostRenderHook.cs | 10 +++++++++- Core/RenderManager.cs | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Core/PostRenderHook.cs b/Core/PostRenderHook.cs index d53d1c9..c4da767 100644 --- a/Core/PostRenderHook.cs +++ b/Core/PostRenderHook.cs @@ -1,3 +1,4 @@ +using System.Collections; using System.Reflection; using HarmonyLib; using UnityEngine; @@ -16,10 +17,17 @@ namespace ADOFAIRenderer.Core private void LateUpdate() { + StartCoroutine(PostFrameCoroutine()); + } + + private IEnumerator PostFrameCoroutine() + { + yield return new WaitForEndOfFrame(); + var val = (MeshRenderer)_camQuadMeshField!.GetValue(scrCamera.instance); if (RenderManager.Instance) { - RenderManager.Instance.OnPostRender(val.material.mainTexture as RenderTexture); + RenderManager.Instance.OnPostFrame(val.sharedMaterial.mainTexture as RenderTexture); } } } diff --git a/Core/RenderManager.cs b/Core/RenderManager.cs index b50430c..5c4f476 100644 --- a/Core/RenderManager.cs +++ b/Core/RenderManager.cs @@ -293,7 +293,7 @@ namespace ADOFAIRenderer.Core } // ReSharper disable once Unity.IncorrectMethodSignature - public void OnPostRender(RenderTexture? texture) + public void OnPostFrame(RenderTexture? texture) { if (!IsCapturing || !texture) return;