Rendering Updates - October 2017

This is a thread with rendering updates for October! We are closing in on end of the year but still have a month or so more to go. Thanks to @ConvexRumbler, @Homeomorph, @maxvee, @programeow, @Qiblox and @zeuxcg for working on these!

Instancing is mostly live on desktop & consoles

If you want to know what Instancing is, Rendering Updates - September 2017 has a brief explanation as to how current part rendering system works and how instancing improves on that. Since that update we’ve had to briefly disable it to fix some issues, and now it’s back on on more configurations with more bug fixes.

Instancing is currently active for MeshParts and CSGs on almost all Windows devices (except for systems that use Direct3D 9), on about half of Mac devices (Metal-capable systems have it on, systems that only support OpenGL don’t) and on all Xbox devices. This accounts for ~94% of desktop devices and for 100% of consoles.

Remember, instancing is a performance/memory feature, so it shouldn’t affect the visuals of your game but it will make it run faster and take less memory.

What’s next for instancing? iOS support should roll out this year (which will account for ~85% of iOS devices). We are working on OpenGL support which would cover the other half of Mac devices and ~70% of Android devices if we’re lucky, but this is currently still in engineering and we expect a high degree of hardware compat issues so we’ll see how it goes. After that is done we plan to support more part types with the new system.

MeshParts now support normal maps on default materials

Previously, CSG parts rendered builtin Roblox materials at a higher fidelity compared to MeshParts since they used normal maps to get more surface detail, but MeshParts didn’t support that.

As part of the instancing work, we decided to support that in both rendering systems, so now it works everywhere, which brings untextured MeshParts to feature parity with CSG parts. As a result, builtin materials look more visually interesting on MeshParts.

Mobile/desktop material unification

For a while mobile used a simplified material representation that used assets in different ways compared to how our desktop renderer used them. This means that various material tiling improvements we’ve worked on didn’t apply in the same way to mobile.

This has now been fixed and mobile & desktop mostly use the same material pipeline (although we still disable some quality enhancements on mobile, and older mobile devices can’t support some of the material features). This should make various materials like Cobblestone, Marble, Grass, Brick and WoodPlanks look better on mobile devices that are reasonably powerful to support it.

In addition, we’ve noticed various discrepancies between material resolution on mobile for different materials; these have been corrected - materials on mobile now are always slightly lower resolution compared to desktop but this is the same between all materials - which saves a bit of memory on mobile.

Small material updates

A few small material issues have been also fixed with various materials:

  • Grass should no longer have black artifacts on iOS devices
  • Rust should no longer have black artifacts on Android devices
  • Marble texture has been updated to fix seams introduced in a previous texture update.

Various fixes and improvements

  • SurfaceGui and BillboardGui objects now support LightInfluence if AlwaysOnTop=true
  • .obj export does not export builtin material textures anymore, as we found that it causes regressions in some modeling software. We plan to revisit this later.
  • Trails have a new method, Clear, that lets you immediately remove all existing Trail segments

Performance and memory improvements

Some big changes in this category barely missed the end of month to ship, so we only shipped improvements to stats & quality level controls:

  • Quality slider is now available on mobile! Now it’s easier to check your game’s performance and behavior in various settings, and you can conserve battery on a high-end phone that’s otherwise capable of rendering a high quality picture by reducing it if you want to.

  • Performance widget now shows GPU time on Metal-compatible devices (on iOS & Mac). This timing is precise starting from iOS 10.3/macOS 10.13 and approximate on earlier operating systems.

That’s all for now. Happy Halloween!

56 Likes

Quality Update, why is roblox releasing updates so fast tho?

2 Likes

Yay more improvements for Mac users :happy3:

1 Like

This helps so much with my game getting out there on more platforms, hope to keep seeing more improvements in the coming months!

Is that a bad thing…?
They release updates (almost) every Tuesday night.

10 Likes

Grrrrr!

Less updates please!!

Ya I feel you though, it seems decent sized updates have been coming out SUPER fast recently. They did do quite a big round of funding, might be the effects of that kicking in, but it feels like that was too recently.

I imagine they are following the Agile practice of frequent releases. Here’s an article on it.

1 Like

Most excited for normal maps, can’t wait to see what the feature holds with this.

it’s also important to know, there are many teams at roblox that work on different things, so one team gets a few things done, push, next week another team or two gets more done, release.

@zeuxcg
UnionOperations and meshes with a LocalTransparencyModifier > 0 are no longer affected by LocalTransparencyModifier anymore.


Interestingly, a weird side effect of this is if a UnionOperation (or Mesh without a texture) has a LocalTransparencyModifier > 0 and there’s a neon part rendering on screen… it glows as if it were a neon part.