BillboardGuis are rendering transparent / behind on textures

BillboardGuis are being rendered behind textures in situations where they should be in front.

Expected behavior

I expect the BillboardGui to render in front of the texture correctly.

The problem is that the BillboardGui is being rendered behind textures in parts, which causes this weird effect where the text (for example) has a texture applied to it. The labels in the BillboardGui are all set to TextTransparency 0, which should be fully opaque.

The rendering works fine for opaque parts and the likes, with the BillboardGui showing up in front when it should. The issue is that when there’s a texture applied on those parts, this “order” suddenly ceases to work correctly.
I’ve noticed this is also an issue with chat bubbles which can some times make it difficult to see what other players are saying in-game.

5 Likes

There is an option on all billboard guis called “AlwaysOnTop”, if you check that then the billboard gui will always show above everything else.

1 Like

I don’t want the BillboardGui to show above everything else. AlwaysOnTop would make it visible through opaque objects as well, such as walls, which is not intended.

1 Like

As of right now, there is no way to manually adjust the display order of a billboard gui. The billboard gui rendering underneath some objects is actually a ROBLOX rendering glitch so there’s basically nothing you can do about it. (Besides having it render over everything else.)

You can work-around this by adding a 0.999 transparent part inside that part, it’s the only thing I can think of which is still not that efficient
Big fan on your game, which I’m playing while writing this

Thanks for the report! We’ll follow up when there’s any update on the issue.

@MetatableIndex could you please add a place file that demonstrates the issue.

Here:
billboardgui transparency bug repro.rbxl (97.0 KB)


You can reproduce in studio by dragging the camera over in an angle where the tag is above the texture.

This doesn’t happen with normal parts, even transparent.


Thanks for the repro steps!

The reason why this is happening is because in your case you’re using a Mesh that is large in size and goes around the camera and has a transparent alpha texture. For the alpha blending to work correctly, we need to render objects in order from farthest to nearest.
Due to computational limitations, we can’t sort every triangle; instead, we use an object or a mesh’s root position and sort them based on their distance to the camera. For meshes like yours, the root position doesn’t correctly represent how it should be rendered in terms of order.
Here, you can see it also doesn’t work correctly for the regular transparent (0.05 transparency) part which is in front of the alpha-textured mesh.

Unfortunately, there is no quick fix from the engine side. What you can try is to split your mesh into smaller chunks that are spatially grouped together. In this case, the engine would be able to properly sort the objects.

I hope it helps.

3 Likes