We’ve implemented a bunch of fixes/improvements recently and this is a thread that tells you what got better and how Thanks to @maxvee, @Qiblox and @zeuxcg for the hard work!
Improved Z precision
On the systems that can support this (most Windows systems, all Xbox systems and most iOS systems - this is currently not available on Mac or Android) we’ve implemented several tweaks that improve precision of storage & computation for depth of all objects. Practically this means two things:
- Z fighting got significantly improved when this change is active, especially with content that’s built far from origin (0,0,0)
- Near plane is now at 0.1 instead of 0.5 when this is enabled
- In VR, where previously near plane was already 0.1 but there was a lot of Z-fighting as a result, near plane is still 0.1 but Z-fighting is dramatically reduced
Note that you still can not rely on the near plane being 0.1 for desktop games, mostly because of Mac where we can’t enable this change because of OpenGL issues. We’re taking a look at moving to Metal on Mac which would solve this problem (for Metal-capable Macs…). Stay tuned.
Correct(ish) GUI ordering
We have changed the way 3D GUI renders to solve a long-standing transparency ordering issue where Surface or Billboard GUI would always render on top of transparent objects, including parts and particle systems. Now GUI should be correctly sorted wrt decals, parts and particles.
Now, please keep in mind that we’re still not able to achieve a perfect sort order because the algorithm we use to determine which object should be in front of another object does this per-object, not per-pixel, and sometimes it guesses wrong. Still, this basically means that GUI is ordered appropriately as well as any other transparent objects, so there’s no GUI specific transparency sorting bugs any more.
This is currently live on desktop, and will be rolling out to Xbox and mobile in the coming weeks.
Small fixes
We keep working on tactical improvements that fix bugs, reduce crashes, memory consumption and improve performance. Here are fixes from the last month or so:
- Stability improvements for Direct3D 9 (for Windows XP and very old GPUs)
- Performance improvements for lighting update on some Intel GPUs
- Make particle emission more uniform for EmissionDirection != Top
- Fix particle emitter visibility issues (particles should no longer disappear when emitter goes out of the view)
- Faster visibility culling (saves 1-2 ms/frame on complex levels, more on mobile/Xbox)
- Neon parts causing transparency issues on some Macs in Studio and also in VR
- Reduce stuttering when loading places with large amounts of CSG/MeshParts
- Fix parts with NaN CFrames causing objects to disappear depending on where the camera is pointing
Feel free to post any questions or issues that you suspect may be related to any of these.
We are working on more performance and memory optimizations and also features but they will be a subject for future threads.