Removing Outlines

TL;DR: This is an advance notice that outlines are going to be removed from Roblox in the coming weeks.

UPDATE This change is now in effect (since May 19).


On July 1st 2019, we’ve officially deprecated outlines. You can read the detailed reasoning as to why this was important here: Deprecating Outlines. When we did this, we promised to maintain the new option, Lighting.LegacyOutlines, at least until the end of the year.

Because it’s now 2020, the time has come to reevaluate this. As we invest more into rendering features like PBR, there’s more pressure to keep our shaders lean - and outlines have a performance cost.

When you disable outlines, we completely eliminate the performance cost on CPU, and eliminate some of the cost on GPU on lowest quality settings - however, there’s still unfortunately some GPU overhead that we have to pay, both on lowest quality and especially on higher quality.

For every feature that deeply affects the rendering pipeline like this it’s common to have to embed some shader code into every shader permutation that is used - we have close to a thousand of those. If you want a feature to come at zero cost, you - unfortunately - have to precompile shader variants that have this feature enabled & disabled - this increases the permutation count 2x and is taxing because more shaders have to be compiled offline (which makes graphics engineers sad) and created at runtime (what if you suddenly toggle outlines in Studio?). This also makes it hard to maintain and optimize shader code, as anyone who saw functions with dozens of nested if statements can attest to.

Because of this, we don’t have shader permutations for outlines - (when we shipped outlines) we used to have an assumption that everyone wants outlines, and so we should optimize for the presence of outlines. This assumption has proven to be false.

Looking at our analytics, we observe that almost no game is using outlines today; these are stats from last weekend, weighted by game popularity (don’t pay mind to the event count, this is heavily sampled production data, so only percentages are representative:

As you can plainly see, in vast vast vast vast vast vast vast majority of game sessions outlines are disabled. We have also looked at the long tail of games that have outlines enabled and it’s not clear that they serve a significant visual purpose among the few places that use them. We didn’t know this last year - which is why we kept the option to enable outlines. Given this, it doesn’t make sense to maintain outline support on the platform any longer.

This is an advance notice that outlines are going to be removed from Roblox in the coming weeks. There’s no specific timeline yet because the impact of the change is small and visual only - but don’t be surprised if one day you stop seeing outlines altogether. Specifically what will happen is:

  • Lighting.LegacyOutlines will disappear from Studio, and existing places that set it to true will behave as if it’s false
  • Lighting.Outlines will be preserved (as deprecated) for scripts that happen to reference it, but won’t do anything.
  • We will be able to streamline some of our shaders which will slightly improve performance in some cases, and make our lives easier.

If you’re affected by this, the existing workarounds involve using a Decal with a single-pixel opaque black border on an otherwise transparent texture. You can vary the texture size / border width to reach the thickness you want. This doesn’t work well unless the geometry is simple blocks, or if the block size is highly variable, but for most gameplay-related needs this should be reasonably practical.

If you would like to have other ways to reach the visuals that you were hoping to reach with outlines, please don’t hesitate to create threads in Feature Requests forum. While we are currently focusing on making our renderer produce more physically realistic pictures, support for stylization is at the back of our minds - it won’t be prioritized soon but we want to keep hearing the feedback to help us plan ahead.

215 Likes

Obviously, this is the most obvious step to take, considering the quality of gameplay overall! Very pleased with this. :slight_smile:

21 Likes

Awesome change! This will improve overall gameplay. Great to see Roblox considering all aspects of players gameplay.

9 Likes

Oh well. I can’t say that this was unexpected. So much for the hilarious side-effects of enabling outlines:

(Outlines off:)

(Outlines on:)

17 Likes

This change made sense in the long run. As stated in the post, this feature is barely used and is mostly just for collecting dust.

6 Likes

I’m glad to see this change, game looks better, performance boost and the fact that I just don’t use it, what’s the point of it anyways, unless you’re keeping a classic game alive.

8 Likes

It would be nice if the old topic was edited to reflect it being removed.

7 Likes

I doubt the old topic is read or referred to given the date it was written.

9 Likes

Was there any use to outline feature beside visual effects. I personally never used this.

3 Likes

And nothing of value was lost.

I remember distinctly when outlines were first added and forcibly enabled for every game. I’m glad they’re finally being put to rest; they don’t serve a purpose in the modern era.

11 Likes

I see why outlines are being removed, but I personally find them useful in studio for identifying borders of parts in certain situations (example below).

Outlines on:

Outlines off:

Don’t tell me I’m the only person who finds them useful lol

44 Likes

I think this could be replicated with a plugin that shows outlines for nearby parts using the SelectionBox class. I do something similar for my collision group editor.

49 Likes

I remember being so confused when outlines were first added and all my builds suddenly looked so UGLY. I was so mad, for days, because I couldn’t figure out what outlines were or where they had come from.

Nothing but thumbs up from me. I think they were quite possibly the most stupid “feature” ever added.

Don’t shoot me if you had a unique use case for them or disagree. Just my opinion: Outlines were terrible, always.

16 Likes

Few questions:

  1. What about parts with no outline surfaces?
  2. Will this feature be replaced by Celshading someday? I want cool Borderlands style outlines without having to play with inverted meshes. (Outline object would be welcome tbh)

But yes, only game which I saw use it recently was old version of RHS.

14 Likes

That’s true, but it can come at a performance cost if too many parts are in one area.
I personally just select a part under workspace to see outline, if needed.

2 Likes

Exactly what I was thinking. My mind was going: “Borderlands, Borderlands, BORDERLANDS!” - And im not a fan of Borderlands xD. Aside that long awaited and obvious update that shows how roblox is evolving, good work boys (and gals) :+1: .

Sidenote for Dogutsune: I believe @InternallyAmplified did a post on [NEW] EXPERIMENTAL CEL building style <–Found here.

4 Likes

Bit disappointed in this. Outlines were never something I liked seeing in games, but as a builder they certainly had utility. Makes it easier to build if you can see where the borders of the parts are more clearly.

17 Likes

I don’t think performance would matter if the plugin would be used for identifying parts; the selection boxes would be temporary while someone is verifying the position of the parts.

4 Likes