Outline Thickness property for new Highlight object

I was happy to see the highlight object finally functioning, but not being able to customize how thick the border is a pretty big let down. Currently the outline scales depending on the distance between the camera and part.

ezgif.com-gif-maker (30)

Would be nice to see a toggle to disable distance scaling and enable a strict size. Something similar to scale and offset I guess.


Bumping this. The current thickness is barely noticeable.


If we could do this we could make some really cool stuff, like this:


I doubt this will be added as the highlight object seems to be unperformant at high pixel thickness, which you can now see with the new selection outline update when you change the “Selection Line Thickness” setting to a high number (~50)

1 Like

Bump. Just shy of being the perfect outline renderer, but being super thin, the outline unfortunately isn’t useful enough on its own. Luckily in my usecase (targeting), I can leverage the highlight fill; however, I would prefer to not have to, and I imagine there would be others that don’t like the fill.


It’s an extremely simple request - the Highlight effect has an infill & outline, each color-able and able to be made transparent. But it greatly surprises me that there is not a thickness option for the outline, in the same way that there might be for a Gui object.

Can we get this? thanks


Something I would also love to see is crease and angle settings.
Currently outlines mostly outline the outer silhouette of an object, it would be nice to configure it so it can add outlines to edges, corners, intersections and such of a model as well to allow cartoon graphics in games.


It won’t allow for cartoon graphics anyway, because the max limit of simultaneously rendered highlights is very low (22 I think?) for that purpose.

1 Like

There is literally no reason to limit it unless it creates a massive amount of draw calls or lag, even then, it should be the developer’s choice and responsibility to use it.
But Roblox is known for not being very efficient at rendering certain 3D graphics and limiting or hiding graphics related settings and features.

Iirc the highlight feature draws a new layer for each highlight that is rendered (this is why highlights cannot be layered to blend color)


TBH sounds like highlights are a sort of half-baked implementation then. A feature released in modern roblox, designed in a way that makes it extremely specific-usage rather than broad-usage.

No idea where you’re getting that idea, Roblox is insanely efficient in terms of rendering; they have to run on phones that have been obsolete for years. It’s usually just the cross-platform compatibility they have to accommodate that creates obscure limitations in what’s possible that are not very visible to us.

See my reply here for a little more speculation/insight into why there is a limit.
CC @Maxwell_Edison

For further context, an outline shader is usually done by running typically a 3x3 kernel over a silhouette image to calculate a new texture containing the edges. 3x3 convolution filters are limited to a 2 pixel outline by nature of the way they work. I’m not sure if this is exactly what Roblox is doing, but it rings very close. Using this approach, AFAIK to get a thicker outline you would need to use a larger kernel, but this increases the number of texture samples per pixel quite a lot, which gets expensive.


Have you tried making scenes with lots of foliage, trees and complex 3D objects? Optionally you can add PBR on top of it too.
Roblox starts lagging insanely when you do that. game engines like Unity, Unreal Engine and Godot don’t have a issue with this.

Roblox is terrible with detailed games or having lots of lights.
Once you start working with high polygon counts, PBR and lots of lighting your frames start dropping really fast.

Also objects like union operations have caused me many headaches, meshes made in Blender often seem to perform significantly better.

(And yes I am aware of things like mesh/object instancing, shared data, cluster/batch render calls, etc.)

It’s important to keep in mind that Roblox likely uses a lot of tricks behind the scenes that enable it to run on mobile devices in the first place. Out of the box you would see a Unity game with the same kind of foliage run even worse on a mobile device than Roblox runs on a powerful PC with the same dense geometry. There is probably a performance ceiling being hit on more powerful devices due to such tricks, or else further implementation details outside of my boathouse that limit performance.

Also unions are not particularly relevant to this; they are by nature inferior to hand-authored assets because they are automatically generated, and very frequently cannot resolve certain cases in a clean way, producing very inefficient geometry. They’re more a convenience tool than anything, and have no play in rendering performance.


Yeah, I understand this limitation, moreso I feel that there should have been an alternative way to design this. What you’re saying is likely true, but I’m wondering if it had to be true - plenty of games have much more complex visual outline effects, even of varying thicknesses.

Perhaps it’s true that this was the clear best way for roblox to make the system, but somehow I feel as though there could have been some more clever method that could be used.
Roblox has a very talented team, this seems like a very bog-standard implementation however.

1 Like

Apparently other engines have a “mesh outline” system, where it clones, resizes, inverts the normals of and gives a solid colour to a mesh. This does not give support for a FillColor system, however, and might not even be very viable for Roblox because their vision is for everything to be dynamic, and this way of outlines, without some clever tricks, will likely be very slow in the case of objects that are created while the game is running or is modified otherwise, especially high-poly meshes.