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!