Modifying the postprocessing pipeline through a plugin

Hi everyone,

I was wondering if there currently is a roadmap for making the postprocessing pipeline available for modification using the C++ plugin system. In this way there would be possibilities to make new effects and use compute shaders in the postprocessing pipeline and distribute them to users without having them generate a custom UE4 build. As a proof of concept I exposed all of the post processing classes and effects in the renderer module and wrote an override of the FPostProcessing::Process function, the proof of concept worked but is almost certainly going to clash with any of the code changes that would touch the postprocessing codebase. I think that the current implementation of the postprocessing passes using the composition graph works really well and would lend itself to custom pass injection and the removal of passes by a plugin system.

Thanks for looking into this and I look forward to a reply!

Thanks and have a great day,

Juul

Not out of the box, no. The problem with the current approach is that many post process effects rely on outputs from other effects, ie, they are order-dependent. So is the deferred renderer, which processes the post processing effects at a set stage. It is almost impossible to have non-data driven approach that would somehow sort the post processing effects and pipe them properly. Imagine that I have an effect that goes after DOF, and you have an effect that goes after DOF, who goes first? There is a substantial amount of work required to have correctly sorted and piped pipeline.

TLDR: No, you cannot do a PP effect from module without modifying the engine, but you are on the right track. You can modify the PostProcessing class or the deferred renderer to fit your need.

Does your answer still hold true for UE 4.21?