Level of Detail

July

19, 2016

by zeuxcg


Archive

As any game developer would tell you, lowering memory consumption is crucial if you want to fully optimize performance. Over the past month, we’ve been working hard to significantly improve the usability and efficiency of one of Roblox’s core features, Smooth Terrain, so that users of all kinds of hardware configurations could see and digest the fruits of your labor. One aspect of this process is introducing a new Level of Detail (LOD) system, which can help save video memory and ultimately make your games and experiences perform much better. In this article, we’ll explain more about LOD’s benefits and why this update will improve your overall Roblox experience.

Most video games today use an optimization process, called “Level of Detail,” which simplifies rendering geometry far away from the character/camera. In other words, terrain and other objects in the foreground are rendered with more detail than those in the background. In Roblox, this technique greatly reduces the hardware strain that comes from rendering all voxels at the same time, subsequently freeing up video memory and processing power that could be used for other important tasks, like physics simulation.

You can get a better understanding of what’s happening by checking out these two screenshots from a place that contains one billion voxels – just to give you an idea of its scope. The red boundary indicates the player’s general location. Following that, the terrain is split up into chunks that get bigger with increasing distance (blue marks the next boundary, yellow the next). The farther away the terrain is from the player, the less detail it has.

The bigger the terrain or quality level, the more significant the difference. In extreme cases like the one above, the difference in performance pre-LOD and post-LOD is quite astounding.

Along with LOD, we have also added the following for even more optimizations:

  • A new compressed in-memory voxel storage that reduces the amount of memory voxel data takes. The simpler the terrain, the more significant the gain.
  • Improved tiling method, which hides texture tiling artifacts on some materials (the most obvious example is that Grass is no longer covered in axis-aligned bright streaks).
  • Significant performance improvements for water rendering for some cases (mostly apparent if you use water but don’t use any other terrain materials).
  • Improvements in logic that computes whether the camera is underwater or not.

Given how increasingly complex and immense many Roblox games, experiences, and showcases have gotten since the launch of Smooth Terrain, we thought now would be the perfect time to implement LOD. This feature is live for users on all quality levels and doesn’t require builders to turn it on manually.

If you have any questions or if you’d like to report a bug, feel free to let us know in the comments below or on the DevForum.