SurfaceGuis render over non-opaque objects; workaround recently broken

Non-opaque objects which are placed on or close to the display surface of a SurfaceGui on an area covered by a UI element (e.g. a Frame, an ImageLabel, etc.) will see that element rendered over that object at most viewing angles. The object itself is still visible, but only outside of the areas where it intersects with the SurfaceGui. Shadows are still cast as normal.

Simple reproduction place: SurfaceGuiBugReproduction.rbxl (58.9 KB)

From my research into this I have learned that this issue has been present since SurfaceGuis were released in 2013, and that it’s folly to hold out hope for this ever being fixed. However, an interesting aside:

Having to deal with this problem, I found a workaround which involved using the surfaces of SelectionBoxes to act as surrogates for parts’ transparency. A SelectionBox could be applied to a part which would be made wholly transparent, and the SelectionBox’s SurfaceTransparency could be used instead. This actually worked, and semi-transparent rectangular prisms could be rendered properly over SurfaceGuis with no issue. What pushed me to make this report was the fact that this workaround seems to have been recently broken, seemingly in versions 687-689 (I unfortunately cannot be sure of the exact version).

That workaround was vital to my project. I hope that it can be restored, and/or offer insight to help introduce a wider workaround for all semi-transparent objects.

Hi LilPrincesses123 ,

I’m not familiar with the bug you are trying to work around, if you have another dev forum post or example I’d be happy to look at it. It sounds like this workaround may have stopped working due to an unrelated bug fix, which isn’t really something we can change.

Yes, here are some recent ones from 2024 (though you can find such threads dating back to 2013). The latter is not exactly the same, but still similar and I assume it’s the same root cause.

The case of my workaround is interesting as it demonstrates that the ability for SurfaceGuis to play nice with transparent parts does (or, did) exist in the Roblox engine in practical terms but not through conventional means.

Thanks for the additional details and bug reports. I understand this is frustrating but the only way we can really fix this is by addressing the original issues. We can’t guarantee that workarounds that rely on rendering bugs will continue to work.