New SurfaceGui.MaxDistance property

Hey Developers,

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!

Thank you.


This topic was automatically opened after 10 minutes.

Wonderful! I am gonna use this and I am going to update my games.


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.


Thank you very much :smiley: Perhaps in the future, a max distance property could be added for decals too, then.


Amazing feature, can’t wait to see what’s next!


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 :pray::pray::pray:


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)


It takes the distance from the closest point on the SurfaceGui, so it should work even if you have a very wide UI.


I have some questions

  • 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!

when will you guys fix surfaceGUIs on tools?


this is good for the scoreboard that has a lot of content, I hope I’m right


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.


What would be the performance benefits overall? Appreciate this sort of feature.

Also would there by any chance of having the CanvasGroup’s limitations lifted?


It’s pretty cool to see some new ways that performance can be improved by reducing the amount of assets loaded in the client workspace at a time. :+1:


Owww yeees i really love thissss

finally I won’t have to be playing with the other properties to make the gui disappear whenever I want


If you want to update all your SurfaceGuis at once, here’s an Explorer trick.


This post alone deserves to be an announcement. Never knew of this ability at all.