We’re excited to announce that Highlights Outlines are now fully supported on mobile devices! Previously, Highlights on mobile differed significantly from their look on other platforms, and Outlines were not rendered at all. With this update, all Highlights with visible OutlineTransparency will render Outlines on mobile devices!
We’ve also made several fixes and improvements to Highlights to make them visually similar across all platforms.
Highlight Outlines are released directly to production and you can get the benefits on mobile clients immediately. Please note that this update is in Beta and it’s subject to change or rollback.
Low-end Highlight outlines
Additional fixes
We’ve corrected Highlight’s Fill color so that:
The Fill matches the selected color from the color picker
The Fill blends correctly with transparency (it currently darkens as the Fill gets more transparent)
We fixed the Fill bounds so that it extends all the way to the edges of the object highlighted
The Fill now fully supports 0-1 transparency values and properly alpha blend on mobile devices
Performance Impact
Highlight Outlines is a challenging feature to implement efficiently on mobile hardware. We’ve worked hard to bring Highlights Outlines to mobile in as a performant way as we can, but they do require GPU resources and can average around 1ms of GPU time for the first Highlight.
On mobile, the first Highlight rendered on the screen incurs most of the performance cost and you should not see a significant performance impact of using additional Highlights. Note, however, that Highlights are more costly in performance the more they cover the screen. This is only true on mobile, Highlights’ screen coverage does not impact performance on other platforms.
Highlights that are not visible on the screen, whether they are disabled or fully transparent, incur no performance cost.
Usage
You can set Outlines the same way as previously and they will now correctly render on mobile devices. To add Outlines to an object:
Parent a Highlight instance under the object you’d like to highlight
By default the OutlineTransparency property is set to 0 (fully visible). You can modify this value to fit your artistic vision.
You can modify the OutlineColor value to match your artistic vision
You can customize or remove the Fill by modifying the FillColor and FillTransparency properties.
One thing, some highlights don’t render at all when they’re being created with a script, you need to deactivate and reenable it for it to render, will this issue be eventually be fixed?
Good job! Additionally, I would love to make objects transparent or fully invisible and have outlines working. Is this something that would be possible in the future?
Any chance for Highlights to finally get a thickness property? I believe highlights already support some sort of editable thickness property since studio itself already allows for that behavior, no? So why not add that as a property to the highlight instance as well?
It would be possible for desktop highlights. Mobile highlight, while looking the same, use a novel in house developed algorithm that is super fast, but does not support thicknesses.
We may consider it if there is a bigger push from the community. Not only that we can theoretically remove it, but we could change the limit to be per highlight visible on the screen and not per highlight in the workspace. That would more or less have the same performance cost as current system. This depends on our dev community. If you guys will let us know that you really need it, like you did with mobile outlines, we will allocate time to make these changes.
Highlights, while looking like a simple feature can be quite performance heavy and changes to the system needs a lot of consideration and engineering time
It uses the same system is client. I’ve said that thickness is possible on desktop and studio is only on desktop (PC/mac). Thickness changes are only possible on desktop. On mobile we use completely new technology that is heavily optimized and does not support thickness changes.
Very glad this update finally happened and I hope it will never roll back! But I have one question, will there ever be a property (say displayOrder/ZIndex) which is only available when the occlusion mode is Always on top? Its purpose would be to decide which would render above the other highlight first, this can be very useful especially for specific effects.
We do need! I never understood the 31-32 limit for highlights especially with how strict it is. Personally i never understand any limit to any of the features you guys add and just seem entirely redundant and a waste of resources from your side. Yeah there’s probably some developers that don’t know any better but ultimately it should be up to THEM!
Many people wish for the limit to be removed completely, a screen-only limit is the exact opposite of what we want. You could just remove the limit completely and let the people figure out how many highlights they are going to put in their game, which will allow you guys to improve upon the system’s performance with less pressure since the limit is currently the only thing that makes highlights unattractive.
Edit: By the way, is there also a way to have our suggestions heard out more clearly? I feel like there are a lot of great suggestions out there that either get overshadowed or simply ignored.