I’m at UE5.6 and encountered a crash today:
LogStats: FPlatformStackWalk::StackWalkAndDump - 5.917 s LogOutputDevice: Error: === Handled ensure: === LogOutputDevice: Error: Ensure condition failed: FinalPreExposure > 0.0f [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Renderer\Private\PostProcess\PostProcessEyeAdaptation.cpp] [Line: 1285] LogOutputDevice: Error: Stack: LogOutputDevice: Error: [Callstack] 0x00007ffaf3e35653 UnrealEditor-Renderer.dll!FViewInfo::UpdatePreExposure()
Looking through PostProcessEyeAdaptation.cpp] [Line: 1285]
it appears the crash comes from:
// This computation must match FinalLinearColor in PostProcessTonemap.usf.
const float FinalPreExposure = SceneColorTint * GlobalExposure * VignetteMask * LocalExposure;
ensure(FinalPreExposure > 0.0f);
The log does make sense, since I am manipulating the postprocess blendables: SceneColorTint
and Vignette Intensity
values when the crash happens.
However, I don’t understand how my manipulation can cause the FinalPreExposure
to go below 0?
Both of my newly assigned values are above it’s default values:
SceneColorTint
[1, 1, 1,] → [3, 2.5, 2.5]
Vignette Intensity
[0.4] → [0.75]
How come these larger values produce a FinalPreExposure <= 0
(and cause a crash) while the default value didn’t?
More importantly, how do I manipulate postprocess blendables without encountering this crash?
Thank you!