diff --git a/CHANGELOG.md b/CHANGELOG.md index c5e6f56..cffbfc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Added indirect lighting modifier. - Added support for `Camera.current`. +- Added support for `OnRenderObject` callback. ### Changed diff --git a/Runtime/SRP/VXGIRenderPipeline.cs b/Runtime/SRP/VXGIRenderPipeline.cs index b4aae61..d0e89e4 100644 --- a/Runtime/SRP/VXGIRenderPipeline.cs +++ b/Runtime/SRP/VXGIRenderPipeline.cs @@ -106,6 +106,7 @@ void RenderFallback(ScriptableRenderContext renderContext, Camera camera) { renderContext.DrawRenderers(cullingResults, ref drawingSettings, ref _filteringSettings); renderContext.DrawSkybox(camera); + renderContext.InvokeOnRenderObjectCallback(); TriggerCameraCallback(camera, "OnPostRender", Camera.onPostRender); } diff --git a/Runtime/SRP/VXGIRenderer.cs b/Runtime/SRP/VXGIRenderer.cs index aca924a..47163c2 100644 --- a/Runtime/SRP/VXGIRenderer.cs +++ b/Runtime/SRP/VXGIRenderer.cs @@ -116,6 +116,8 @@ public void RenderDeferred(ScriptableRenderContext renderContext, Camera camera, RenderGizmos(renderContext, camera, GizmoSubset.PreImageEffects); + TriggerOnRenderObject(renderContext, camera); + TriggerCameraEvent(renderContext, camera, CameraEvent.BeforeImageEffects, vxgi); RenderPostProcessing(renderContext, camera); _command.SetGlobalVector(ShaderIDs.BlitViewport, new Vector4(camera.rect.width, camera.rect.height, camera.rect.xMin, camera.rect.yMin)); @@ -285,6 +287,14 @@ void TriggerCameraEvent(ScriptableRenderContext renderContext, Camera camera, Ca _eventCommand.Clear(); } + void TriggerOnRenderObject(ScriptableRenderContext renderContext, Camera camera) { + _command.SetRenderTarget(ShaderIDs.FrameBuffer, (RenderTargetIdentifier)ShaderIDs._CameraDepthTexture); + renderContext.ExecuteCommandBuffer(_command); + _command.Clear(); + + renderContext.InvokeOnRenderObjectCallback(); + } + void UpdatePostProcessingLayer(ScriptableRenderContext renderContext, Camera camera, VXGI vxgi) { var layer = vxgi.GetComponent();