Add SceneRenderTask.PreRender

This commit is contained in:
Wojtek Figat
2021-02-01 11:14:59 +01:00
parent f15f7ff59f
commit 011b5f3e51
3 changed files with 18 additions and 3 deletions

View File

@@ -260,6 +260,11 @@ void SceneRenderTask::OnCollectDrawCalls(RenderContext& renderContext)
CollectDrawCalls(renderContext);
}
void SceneRenderTask::OnPreRender(GPUContext* context, RenderContext& renderContext)
{
PreRender(context, renderContext);
}
void SceneRenderTask::OnPostRender(GPUContext* context, RenderContext& renderContext)
{
PostRender(context, renderContext);

View File

@@ -313,6 +313,18 @@ public:
/// <param name="renderContext">The rendering context.</param>
virtual void OnCollectDrawCalls(RenderContext& renderContext);
/// <summary>
/// The action called after scene rendering. Can be used to perform custom pre-rendering or to modify the render view.
/// </summary>
API_EVENT() Delegate<GPUContext*, RenderContext&> PreRender;
/// <summary>
/// Called before scene rendering. Can be used to perform custom pre-rendering or to modify the render view.
/// </summary>
/// <param name="context">The GPU commands context.</param>
/// <param name="renderContext">The rendering context.</param>
virtual void OnPreRender(GPUContext* context, RenderContext& renderContext);
/// <summary>
/// The action called after scene rendering. Can be used to render additional visual elements to the output.
/// </summary>

View File

@@ -199,9 +199,8 @@ void Renderer::Render(SceneRenderTask* task)
#endif
// Perform the actual rendering
task->OnPreRender(context, renderContext);
RenderInner(task, renderContext);
// Custom additional rendering
task->OnPostRender(context, renderContext);
#if USE_EDITOR
@@ -306,7 +305,6 @@ void RenderInner(SceneRenderTask* task, RenderContext& renderContext)
#endif
renderContext.List->Settings.AntiAliasing.Mode = aaMode;
// Prepare
renderContext.View.Prepare(renderContext);
renderContext.Buffers->Prepare();