UE Version Guide
The plugin ships in three separate packages because UE's post-processing extension API changed between 5.3, 5.4, and 5.6. The shader code and Project Settings are identical across all versions.
Version compatibility table
| Plugin | Engine | PostProcess hook | Callback signature | FViewInfo dependency |
|---|---|---|---|---|
| v1.0 | 5.3 | MotionBlur | (PassId, callbacks, bEnabled) | Required |
| v1.1 | 5.4, 5.5 | MotionBlur | (PassId, callbacks, bEnabled) | Required |
| v1.2 | 5.6, 5.7 | ReplacingTonemapper | (PassId, View, callbacks, bEnabled) | Not required |
What changed in 5.4 / 5.5
The 5.3 → 5.4 migration is minimal. 5.5 uses the same package as 5.4 — no additional changes were needed. The only difference is how the scene color texture is passed from the post-process callback:
- 5.3 — callback returns
FScreenPassTexture - 5.4+ — callback returns
FScreenPassTextureSlice; the plugin reads theTexturemember
All settings, shaders, and behavior are identical. If you're upgrading a 5.3 project to 5.4, just swap the plugin package.
What changed in 5.6 / 5.7
5.7 uses the same package as 5.6 — the API introduced in 5.6 is unchanged in 5.7.
The 5.6 API introduces a dedicated ReplacingTonemapper post-processing pass. This is a significant improvement:
New hook: ReplacingTonemapper
In 5.3/5.4, the plugin had to inject at the MotionBlur pass (just before the built-in tonemapper) because there was no official way to replace it. In 5.6, EPostProcessingPass::ReplacingTonemapper exists for exactly this purpose.
Result: The plugin no longer needs to manually neutralize the UE tone curve. The ReplacingTonemapper hook bypasses the built-in tone curve automatically.
Updated SubscribeToPostProcessingPass signature
// 5.3 / 5.4
virtual void SubscribeToPostProcessingPass(
EPostProcessingPass PassId,
FAfterPassCallbackDelegateArray& InOutPassCallbacks,
bool bIsPassEnabled) override;
// 5.6
virtual void SubscribeToPostProcessingPass(
EPostProcessingPass PassId,
const FSceneView& InView,
FPostProcessingPassDelegateArray& InOutPassCallbacks,
bool bIsPassEnabled) override;
The 5.6 version receives a const FSceneView& InView and uses FPostProcessingPassDelegateArray instead of FAfterPassCallbackDelegateArray.
No more FViewInfo
In 5.3/5.4, the plugin cast the FSceneView to FViewInfo (an internal engine type) to access the ShaderMap. This required including renderer private headers:
// Build.cs — 5.3 / 5.4
PrivateIncludePaths.Add(Path.Combine(EngineDirectory, "Source/Runtime/Renderer/Private"));
In 5.6, the public FSceneView API is sufficient. The PrivateIncludePaths line is removed, making the plugin less coupled to engine internals.
Migrating your project
5.3 → 5.4 ou 5.5
- In the Epic Games Launcher, remove the plugin from your project.
- Reinstall the plugin (v1.1) on your project via the Epic Games Launcher.
- Rebuild the project.
Settings in DefaultEngine.ini are unchanged — no action needed.
5.4 / 5.5 → 5.6 ou 5.7
- In the Epic Games Launcher, remove the plugin from your project.
- Reinstall the plugin (v1.2) on your project via the Epic Games Launcher.
- Rebuild the project.
Settings in DefaultEngine.ini are unchanged.
If your project has custom code that references FAgxToneMappersSceneViewExtension directly, check the method signatures — the 5.6/5.7 version of SubscribeToPostProcessingPass has a new const FSceneView& InView parameter.
Using the wrong package for your engine version will cause compiler errors. Use v1.1 for 5.4/5.5, v1.2 for 5.6/5.7.