This is a thread with rendering updates for August! Thanks to @BouyertheDestroyer, @ConvexRumbler, @maxvee, @programeow, @Qiblox and @zeuxcg for working on these!
Metal is live on macOS
We now use Metal rendering backend when available on macOS (specifically it requires 10.11/10.12 OS and a reasonably recent Mac: Support for Metal on Mac, iPad, and iPhone - Apple Support).
This brings about the following improvements:
- Rendering performance is increased in some levels. Gains vary between levels and hardware, in some cases weâve seen renderPerform drop from 6 ms to 1.5 ms.
- MSAA is back on 10.12! (we had to disable it before due to a OpenGL driver bug).
â If you are using an AMD GPU and 10.11, you should upgrade to 10.12 because MSAA is disabled on 10.11/AMD due to another driver bug, this time in Metal driver - Improved depth buffer precision (Rendering Updates - April 2017) is enabled on Metal, so for Metal-compatible Macs the near plane automatically switches to 0.1 as well
- Generally Metal drivers are somewhat more stable and we expect better support from Apple going forward
Around 51% of our users currently run Metal on macOS based on statistics from earlier this month; hopefully this number will grow over time (iOS is currently 85% Metal for us).
As part of this transition we ported Roblox to 64-bit on macOS - both Studio and Client are now enjoying the benefits of the large address space.
Improved Neon effect
Based on the feedback to post-processing poll, we took a look at making Neon work better across different quality levels and distances. While we canât afford enabling Neon on all quality levels like we did with Blur, we did spend some time to make it a bit faster (so that itâs now enabled a bit earlier), cleaned up some mismatches with Neon part colors on low quality and high quality and made some fixes to how Neon parts look in the distance.
You can read more about it here: Introducing: Improved Neon
New Sky properties
You can now control the textures used to render sun/moon via Sky.SunTextureId and Sky.MoonTextureId properties.
Additionally you can control the size using Sky.SunAngularSize/Sky.MoonAngularSize (these are specified in degrees and are measuring angular size/diameter: Angular diameter - Wikipedia).
Performance and memory improvements
We are working on many improvements in this area, in particular mesh optimizations and lighting optimizations; for this month we shipped these two improvements:
- Texture cache now uses canonical asset names so that different references to the same asset (such as rbxassetid://ID and http://www.roblox.com/asset/?id=ID) are only loaded once
- Character shadow rendering is ~2x faster on desktop GPUs for levels with few characters
Various fixes and improvements
As usual we have a mix of fixes for community-reported issues as well as other small things.
- A new property, Lighting.ClockTime, makes it easier to control time of day from scripts and Studio
- Light objects now have slider metadata to make Studio property tweaking easier
- Emoji rendering artifacts (Emoji Have Incorrect Alpha Blending) have been fixed
- OBJ export now correctly preserves part colors
- Setting Lighting.Brightness to 0 now completely disables lighting from the sun/moon
- Fix white artifacts in new SpawnLocation texture that were visible on dark parts
- Low-quality blur now works correctly in Vulkan for people who are brave enough to enable it in Studio