This is a thread with rendering updates for July! Technically it’s just 28th but we aren’t going to ship anything else over the weekend so might as well post this early. Thanks to @maxvee, @programeow, @Qiblox and @zeuxcg for working on these! Also @ConvexRumbler is with us again - welcome back!
We were working on three big projects (in addition to the lighting prototype that I’m sure all of you have seen?) but all of them didn’t quite ship this month Nevertheless a lot of exciting things have happened:
Blur is now available on all quality levels
We have implemented some changes to Blur to make it run better on low-end hardware; between this and the fact that Blur is rarely on all the time, we now enable Blur on all quality levels on all platforms (except for some old mobile versions). It looks worse on lower quality levels to conserve performance.
Fixes for particles and trails
Trail effects are fully live on all platforms including FaceCamera property. In addition to that:
- ParticleEmitter::Emit can now be called immediately after the particle emitter is created
- Trail.FaceCamera had an artifact with the last trail segment which has been fixed
- Creating a Trail effect no longer spams output with errors
- Fire effect now looks better in motion (or more specifically, the dark smoke part of the Fire effect)
Art updates
Grass texture has been updated to make tiling less noticeable (following http://devforum.roblox.com/t/new-grass-textures-incoming/42572). This is live on desktop and is making its way to console.
We are not currently using the same rendering technique on mobile so all tiling updates we’ve done aren’t improving mobile textures yet; this will happen later this year though.
Also we have updated the default SpawnLocation texture: https://pbs.twimg.com/media/DEbGFT9W0AAslyx.jpg
Significant mesh performance and memory optimizations
We have discovered some glaring inefficiencies in our mesh import process, that unfortunately have affected all meshes that have been uploaded to Roblox, including our own character packages (but not hats! ) . We are now automatically fixing these inefficiencies when loading meshes so that the gains apply retroactively to existing content. As a result:
- Meshes now take 2-4x less memory
- Meshes now render up to 3x faster
- Cluster updateGeometry performance spikes on mesh-heavy levels are up to 2x smaller.
Once again, you don’t have to reimport your meshes to get these benefits (however, we are working on followup updates that will thoroughly optimize meshes during mesh import in Studio to render them even faster, which will only apply to newly imported content - more on that next month).
Performance and memory improvements
We continue to eliminate small and large inefficiencies and obsessively optimize all areas of rendering code. Some results from this month:
- Text rendering is up to 10% faster in some cases
- Cluster geometry update is ~10% faster in many cases (and up to 2x faster in some contrived cases)
- All part rendering geometry takes ~20% less memory now (including meshes and CSGs)
- Fixed a bug that caused character join/leave event (and similar cases for models with humanoids entering or leaving the world) to rebuild all world geometry causing frame spikes.
Various fixes
… and a few more bug fixes this month.
- Material diffuse textures are now exported during .obj export
- MeshParts with textures with alpha no longer glow when neon parts are in view (that has been a long time coming)
- Decomposition geometry no longer glows when neon parts are in view