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); CollectDrawCalls(renderContext);
} }
void SceneRenderTask::OnPreRender(GPUContext* context, RenderContext& renderContext)
{
PreRender(context, renderContext);
}
void SceneRenderTask::OnPostRender(GPUContext* context, RenderContext& renderContext) void SceneRenderTask::OnPostRender(GPUContext* context, RenderContext& renderContext)
{ {
PostRender(context, renderContext); PostRender(context, renderContext);

View File

@@ -313,6 +313,18 @@ public:
/// <param name="renderContext">The rendering context.</param> /// <param name="renderContext">The rendering context.</param>
virtual void OnCollectDrawCalls(RenderContext& renderContext); 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> /// <summary>
/// The action called after scene rendering. Can be used to render additional visual elements to the output. /// The action called after scene rendering. Can be used to render additional visual elements to the output.
/// </summary> /// </summary>

View File

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