BillboardGuis don't render GuiObjects that are positioned outside of their canvas borders, even with ClipDescendants set to false

If a GuiObject is fully outside the borders of a BillboardGui, it will not render even with ClipDescendants set to false.

Here is an example video:

The purple box represents the bounds of the BillboardGui, and the green box is a frame within the BillboardGui that is moving back and forth. The BillboardGui has ClipDescendants set to false, however still doesn’t render items that are fully outside of its borders.

Why I think this is a bug and not a feature:

This behavior is likely a result of how GUI containers render GuiObjects, similar to how a ScreenGui wouldn’t render something completely outside of the screen’s bounds. However, BillboardGuis are a unique case as they have a ClipDescendants property, unlike ScreenGui.

This behavior is inconsistent with the whole purpose of a ClipDescendants property:
“When set to true, portions of GuiObjects that fall outside of the BillboardGui’s canvas borders will not be drawn.”

If the BillboardGui isn’t going to render objects outside of its bounds, what is the point of the ClipDescendants property in the first place? Why not just have it ClipDescendants no matter what? Currently, if you decide to disable ClipDescendants on a BillboardGui, you get behavior which I can’t imagine any valid use case for, as opposed to just rendering everything outside of the bounds which is what the developer would assume the behavior would be.

6 Likes

This is also the case for SurfaceGui, and ScreenGuis. Additionally, rotated objects are not clipped in GuiObjects with ClipsDescendants enabled. They disappear the same way as in the video you showed!

1 Like

Thank you for your reply.


Yes, I mentioned this in my post:

SurfaceGuis would have the same behavior here as a BillboardGui does, as far as not rendering items fully out of bounds goes.


This is true, however this is not a bug:

3 Likes

Hi @Vmena - thank you for reporting this issue! Are you able to make the Billboard GUI large enough to fit the gui you want inside of it and set ClipDescendents to true?

Let us know if that’s a viable workaround for you.

Thanks!

Thank you for the swift response @DrRanchDressing.

In most cases this would be a viable workaround, as a BillboardGui has unlimited size. However, I have a unique use case where this would not be preferred.

Basicallly, I am creating a vertical list using UIListLayout that can be small or rather large (size being the quantity of frames that are being vertically listed). If I were to “solve this” by increasing the size of the BillboardGui, I would have to choose a maximum number of elements in this list that can be displayed, which I’d rather not do at this point. And if I did do that, if I later change my mind about the maximum size, I have to go back through and rescale everything in the UI to be a percentage of the new maximum size. On top of that, if there is a small number of elements, now I have a huge BillboardGui for just one or two small UI elements, I don’t know if that has any negative performance implications though.

Niche use case aside, I fail to see the point of a ClipDescendants property if the Gui doesn’t render objects outside of it anyways… I’m hoping this is as easy as disabling a piece of code that “de-renders” GuiObjects outside of the BillboardGui, however if this is just a current limitation of the engine please let me know.

1 Like

Would be lovely if they considered this change, since positioning UI elements outside of a BillboardGUI is often easier than trying to squeeze everything in.


image
It would be far easier if I could just push the text up and keep the GUI square to contain the image nicely. Unfortunately this isn’t the case, and the behavior completely goes against with how other UI elements (i.e. a Frame) work.

Right now the “hack” to get this to work is to set the position to something like -.199 rather than -.2. It’s ugly, but works.

1 Like

Thank you for your report.
Regarding the rendering of infinite out-of-bounds items in Billboard and Surface GUIs, this presents significant technical challenges. Because these elements can exist anywhere in the 3D world space, efficiently determining which ones are coming into view for rendering and applying necessary optimizations becomes extremely difficult. Supporting such a scenario universally would have a substantial impact on performance.
Due to these complexities, we hope you can inform us the bound of your visible UI up-front by configuring sufficient size for Billboard/SurfaceGui. Unfortunately we will not be able to support the functionality to render out of bound guis in surface or billboards in the short-term considering we have a descent amount of users on mid-end mobile device that we hope to make most experience available.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.