Skip to main content

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

PluginEnginePostProcess hookCallback signatureFViewInfo dependency
v1.05.3MotionBlur(PassId, callbacks, bEnabled)Required
v1.15.4, 5.5MotionBlur(PassId, callbacks, bEnabled)Required
v1.25.6, 5.7ReplacingTonemapper(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 the Texture member

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

  1. In the Epic Games Launcher, remove the plugin from your project.
  2. Reinstall the plugin (v1.1) on your project via the Epic Games Launcher.
  3. Rebuild the project.

Settings in DefaultEngine.ini are unchanged — no action needed.

5.4 / 5.5 → 5.6 ou 5.7

  1. In the Epic Games Launcher, remove the plugin from your project.
  2. Reinstall the plugin (v1.2) on your project via the Epic Games Launcher.
  3. Rebuild the project.

Settings in DefaultEngine.ini are unchanged.

tip

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.

Do not mix versions

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.