Recently, we enabled a new property on SurfaceGui, MaxDistance, which lets you limit the distance that SurfaceGuis will render at. Before, SurfaceGuis would always render no matter how far away they were.
All previously created SurfaceGuis will have a MaxDistance of 0. This means that the limit is turned off, the same as before. Newly added SurfaceGuis in Studio will default to 1000 studs.
For experiences that use a large number of SurfaceGuis, using this property should help improve FPS and avoid text flickering. For more information on text flickering, take a look at this post.
To reduce the pop-in effect, you can try putting something underneath the SurfaceGui, like a decal, or changing the part color.
Please share your feedback and any questions you may have!
I asked this in release notes for 590. I was wondering if it would be performant to replace decals with surface GUIs with aggressive distance limitations. Let’s say for example I have a large “art gallery” with different rooms, with each room filled with a lot of decals. Would it be beneficial to game performance if those decals were replaced with surface GUIs with images on them to take advantage of the max distance property? Or would that actually reduce performance due to the intrinsic properties of surface GUIs?
I think you’re still better off using decals in this case. Their limited functionality (a static image) comes with much better performance. SurfaceGuis come with the full capability of the UI system and are more costly to render.
One area that might be relevant for you though is the loading - you might want the paintings to only load in once the user gets close to save bandwidth/memory. There’s no built in way to do this with decals, other than to manually create/destroy them based on proximity.
Small, but fantastic nonetheless! This will help on devices with limited rendering ability. I have one question though: Is there any way we can make this local to the player? If we could make it so that only mobile devices have this or something of the matter that would be amazing.
As someone who makes insane usage of surfaceGUIs for signs and labels on models in my maps (because decal moderation is cringe and I don’t want to risk it when I’m just making text-only signs), being able to reduce how many GUIs are rendered by way of distance is a blessing
Does this feature work from the origin of the part it was inserted on, or from edges as well? (Haven’t tested yet, but I use some SurfaceGui to add an effect to a huge block)
What is the % of the performance boost and Memory Reduction?
Why already existing SurfaceGuis are not by default to 1000 studs? It’s not a game breaking feature , it’s just helping. Having too many SurfaceGuis will take to many time to update
But this update is really good, thx!
I was thinking it would be cool if this could detect the largest font and base the maxdistance on the max font size (what is even possible to see from x studs away). But 1000 is a good default I guess, maybe a little too generous but.
Maybe in the future you could add a automatic occlusion checkbox that is based on font size.