Description

SetBlendState() is called from non-UI code but has HDR UI overrides baked in. The UI specific code should be moved to the UI code that calls SetBlendState() - likely in FCanvas, or the function should be more explicit that there is a UI special case handling.

The override exists because when r.HDR.UI.CompositeMode is enabled, UI is rendered into an offscreen buffer that later gets composited with the HDR scene. The alpha channel matters for that composition step, so SE_BLEND_Translucent (which writes BF_Zero, BF_One to alpha — i.e., doesn't touch alpha) gets remapped to SE_BLEND_AlphaBlend (which writes BF_InverseDestAlpha, BF_One — accumulates alpha properly), however.

Steps to Reproduce
  1. Call SetBlendState() from non-UI code with r.HDR.UI.CompositeMode 1 (default) and a blend mode that gets overridden e.g. SE_BLEND_Translucent

Expected

The blend mode is set to SE_BLEND_Translucent

Actual

The blend mode is mapped to SE_BLEND_AlphaBlend

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-370940 in the post.

0
Login to Vote

Won't Fix
ComponentUE - Rendering - Architecture
Affects Versions5.7
CreatedMar 20, 2026
ResolvedApr 6, 2026
UpdatedApr 6, 2026
View Jira Issue