Quick answer: Disable Cull Transparent Mesh on Image components inside masks. The flag drops fully-transparent triangles by alpha; masks change visibility post-rasterization, so the engine cannot know what the mask reveals.

Here is how to fix Unity UI elements that disappear unexpectedly inside Mask or RectMask2D when Cull Transparent Mesh is on. The optimization assumes vertex alpha indicates final visibility; masks invalidate that assumption.

The Symptom

Image with transparent areas inside a Mask. Some parts inside the mask vanish even though they should be visible.

What Causes This

Vertex alpha-based culling. The renderer drops triangles whose corner alpha is 0; mask reveals do not change vertex alpha.

Sprite alpha edges. Sprites with feathered edges have low-alpha triangles; the cull skips them even when masked region would include them.

The Fix

Step 1: Disable Cull Transparent Mesh on masked images. On the Image component, expand Maskable section. Uncheck Cull Transparent Mesh.

Step 2: Bulk update via script.

[UnityEditor.MenuItem("Tools/Disable Cull On Masked Images")]
static void Disable()
{
    foreach (var img in Object.FindObjectsByType<UnityEngine.UI.Image>(FindObjectsSortMode.None))
    {
        if (img.GetComponentInParent<UnityEngine.UI.Mask>() != null)
        {
            var cr = img.GetComponent<CanvasRenderer>();
            cr.cullTransparentMesh = false;
        }
    }
}

Step 3: For RectMask2D, the same applies. RectMask2D uses shader-side rect clipping. Vertex alpha culling is independent and produces the same artifact.

Step 4: Verify with Frame Debugger. Find the masked image draw call. Check vertex count vs expected; if drastically fewer than expected, culling is over-aggressive.

Step 5: Performance check. Cull Transparent Mesh saves fill rate. Re-enabling on every image adds overhead. Disable only on masked images, leave on for opaque ones.

“Mask reveals what culling already dropped. Disable cull on masked images. Both behaviors stay correct.”

Related Issues

For UI Mask issues, see UI Mask Children. For CanvasGroup alpha, see CanvasGroup Alpha.

Cull off on masked Images. Mask reveal works as expected.