All UI elements will render as translucent (inherent to the variable opacity setting in UMG) and therefore use alpha blend, even if opacity is set to 100% within UMG - is this correct?
The fact that UI elements can use materials with alternate blend modes in addition to the opacity setting within UMG leads me to believe that all UI elements are rendered using two alpha passes
Example:
- Create a button with a material-based brush using the masked blend mode
- Place the button in the UI
- The button will then be rendered using alpha test via the masked blend mode, as well as alpha blend caused by the UMG opacity setting, even if the opacity is set to 100%
Can anyone confirm that this is the case?
There doesn’t appear to be any option to disable the UMG opacity setting and force a UI element to be completely opaquely rendered.
Optimally, a large UI element that was 100% opaque and using invalidation boxes would serve to cull the game scene via front-to-back rendering on mobile devices.
Currently the opposite appears to be the case, where large UI elements with any level of opacity and regardless of material settings, will always perform an alpha blend on the rendered scene (often twice), significantly affecting performance, especially on ES2.0 level devices.
Additionally, with translucent blending being very costly on mobile, the fact that this operation appears to be performed twice on most UI elements seems like a very good candidate for optimization in the UE4 implementation.