diff --git a/Source/Engine/Graphics/Enums.h b/Source/Engine/Graphics/Enums.h index 74c859352..7d9b5ceb3 100644 --- a/Source/Engine/Graphics/Enums.h +++ b/Source/Engine/Graphics/Enums.h @@ -591,22 +591,22 @@ API_ENUM() enum class Quality : byte API_ENUM() enum class MaterialPostFxLocation : byte { /// - /// The after post processing pass using LDR input frame. + /// The 'after' post processing pass using LDR input frame. /// AfterPostProcessingPass = 0, /// - /// The before post processing pass using HDR input frame. + /// The 'before' post processing pass using HDR input frame. /// BeforePostProcessingPass = 1, /// - /// The before forward pass but after GBuffer with HDR input frame. + /// The 'before' forward pass but after GBuffer with HDR input frame. /// BeforeForwardPass = 2, /// - /// The after custom post effects. + /// The 'after' custom post effects. /// AfterCustomPostEffects = 3, @@ -620,6 +620,11 @@ API_ENUM() enum class MaterialPostFxLocation : byte /// AfterAntiAliasingPass = 5, + /// + /// The 'after' forward pass but before any post processing. + /// + AfterForwardPass = 6, + API_ENUM(Attributes="HideInEditor") MAX, }; @@ -664,6 +669,11 @@ API_ENUM() enum class PostProcessEffectLocation /// AfterGBufferPass = 6, + /// + /// The 'after' forward pass but before any post processing. + /// + AfterForwardPass = 7, + API_ENUM(Attributes="HideInEditor") MAX, }; diff --git a/Source/Engine/Renderer/Renderer.cpp b/Source/Engine/Renderer/Renderer.cpp index d3ea5800e..584ab6b45 100644 --- a/Source/Engine/Renderer/Renderer.cpp +++ b/Source/Engine/Renderer/Renderer.cpp @@ -545,6 +545,10 @@ void RenderInner(SceneRenderTask* task, RenderContext& renderContext, RenderCont RENDER_TARGET_POOL_SET_NAME(frameBuffer, "FrameBuffer"); ForwardPass::Instance()->Render(renderContext, lightBuffer, frameBuffer); + // Material and Custom PostFx + renderContext.List->RunMaterialPostFxPass(context, renderContext, MaterialPostFxLocation::AfterForwardPass, frameBuffer, lightBuffer); + renderContext.List->RunCustomPostFxPass(context, renderContext, PostProcessEffectLocation::AfterForwardPass, frameBuffer, lightBuffer); + // Cleanup context->ResetRenderTarget(); context->ResetSR();