How to inject a custom multi-pass RDG post-process effect as a distributable plugin — without modifying PostProcessing.cpp?

Hi everyone,

I’m relatively new to UE5 source code and RDG, and I’ve been trying to learn how to build a custom post-process plugin the “right way.” I’d really appreciate any guidance from those with more experience in this area!

What I’m trying to do: I want to insert a custom post-process effect (a multi-pass RDG chain) at a specific point in UE5’s pipeline — after TAA/TSR resolves, before final output. The passes need access to FViewInfo internal data (e.g., temporal jitter, previous
frame info).

The problem I’ve run into: As far as I can tell, the only way to call the custom effect at the correct pipeline stage is to directly modify PostProcessing.cpp. This means anyone using the feature must build the engine from source with the patch applied, which makes
standard plugin distribution (e.g., via Fab/Marketplace) impossible.

I’m not sure if I’m missing something — perhaps there’s a proper extension point I haven’t found yet.

My questions:

  1. Is there any UE5 extension point that allows a plugin to inject a custom pass into the main post-process chain without modifying PostProcessing.cpp? I looked at ISceneViewExtension but wasn’t sure if it covers this case.
  2. Does ISceneViewExtension::SubscribeToPostProcessingPass() support full multi-pass RDG chains with access to FViewInfo private members, or is it mainly designed for single-pass / material-based effects?
  3. If modifying engine source is unavoidable for this kind of low-level post-process injection, is there an officially supported pattern for distributing such work (e.g., as an Engine Source Plugin via GitHub)?

Thank you so much in advance — any pointers to documentation, examples, or past discussions would be hugely helpful!

Engine Version: UE5 source build