Hey all, unfortunately Unreal 5.6 is a step forward in performance but some of the UI changes seem to be negative. One of the most important is with the Transform Gizmo.
In every previous version of Unreal, the Transform Gizmo would show occlusion, it would be dark grey if it was buried behind objects, and it would be pure Red Green Blue when unoccluded by objects. This was particularly helpful when offsetting pivots or when trying to see exactly where an object is in 3D space. In Unreal 5.6 it seems that regardless of where an object is in the world, it is always pure Red, Green, and Blue and occlusion has no effect on the shading of the Transform Gizmo. I realize this sounds like a small thing, but it’s how every object in Unreal is selected and viewed.
It’s possible that this is a small checkbox in the editor preferences and I haven’t found it, but has anyone else experienced this issue or know a fix for this? I can’t explain how helpful this was and now that it’s gone it makes lining up basic objects a huge pain. Appreciate any feedback/advice in the meantime. Thanks!
I’m not entirely sure if there’s a built-in option to toggle the display, but I found a way to directly modify the display effect in the file
File: UE_5.6\Engine\Shaders\Private\PostProcessCompositePrimitives.usf.
In
#if 0 // Don't modify based on occlusion
static const float OccludedColorMultiplier = 1.0f;
float DarkenMask = 1.0f;
#else // Apply pattern mask based on occlusion
static const float OccludedColorMultiplier = 0.7f;
// Generate 2x2 square tiling pattern for foreground primitive that end up behind scene opaque primitives.
float PatternMask = ((ColorPixelPos.x / 2 + ColorPixelPos.y / 2) % 2) * OccludedColorMultiplier;
// These constants express the two opacity values we see when the primitive is hidden
float LowContrastPatternMask = lerp(OccludedColorMultiplier, 1, PatternMask);
LowContrastPatternMask = saturate(lerp(LowContrastPatternMask, 1, bOpaqueEditorGizmo));
float DarkenMask = lerp(LowContrastPatternMask, 1.0f, DepthMask);
#endif
// Blend editor primitives with scene color.
OutColor.rgb = SceneColor.rgb * (1 - EditorPrimitiveColor.a) + EditorPrimitiveColor.rgb * DarkenMask;
FLATTEN
if (bProcessAlpha)
{
static const float OccludedAlphaMultiplier = OccludedColorMultiplier;
float HiddenMask = lerp(OccludedAlphaMultiplier, 1.0f, DepthMask);
OutColor.a = lerp(SceneColor.a, 1, EditorPrimitiveColor.a * DarkenMask * HiddenMask);
}
else
{
OutColor.a = 0;
}