Rendering Updates - August 2017

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

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 :smiley:
  • 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
67 Likes

woooo

Papa Bless :pray:

2 Likes

:pray:

legit :ok_hand:t3: thank you engineering gods

1 Like

oooo Metal, and it’s not breaking everything!

<3

YES.

AND YES.

Thanks for all of your hard work! :smile:

3 Likes

yaaay

can’t wait to mess with lighting!!

ty :smile:

1 Like

does fbx export preserve part colors correctly? cause part colors seem washed up when imported into blender

This used to be the case before this change and shouldn’t happen anymore. We don’t have FBX export - only OBJ export, not sure what exactly you’re referring to.

oops, my apologies, forgot that exporting is only obj

haven’t exported in a while so i forgot about that, haha

Mama Bless :pray:

Does that mean light map (reflection maps) textures for the sky might be coming soon? :eyes:

1 Like

Oh god…

11 Likes

I was 100% sure this would happen and even had a line in the original post “Please use these features responsibly” but decided to delete it before posting.

15 Likes

I just think that would encourage people to use it like that. On the other hand, @TwentyTwoPilots did a good job using the Death Star to replace the moon.
https://twitter.com/22Pilots_RBLX/status/903405524963790851

1 Like

Is it possible for stars to render behind the moon image (or not make the image opaque, I’m not entirely sure how the celestial bodies are rendered)? Other than that, this update is pretty great so far.

It devolved from there:

8 Likes

Finally we can upload and resize HQ versions of the moon and not have the sun in the sky at the same time :stuck_out_tongue:

5 Likes

gone but never forgotten

3 Likes