Smooth Terrain updates

Several updates shipped for smooth terrain yesterday on desktop. Specifically:

  1. We switched to a different texture representation that allows us to reduce the memory use a bit but more importantly fixes shimmering and weird colors at grazing angles.
  2. Some optimizations were made for raycasts and collision detection
  3. In Studio terrain undo history is now compressed which significantly reduces the memory requirements
  4. Water reflection clipping on the sides of the screen has been significantly reduced
  5. Short white single-pixel lines on some voxels should no longer appear when MSAA is on
  6. Experimental LOD option is available in Studio

To use the LOD, go to Studio Rendering settings and enable ExperimentalTerrainLOD flag. It only affects Studio. The geometry far away from the camera/character will be replaced with a simplified version.

I encourage those of you who use terrain or water to test out LOD - I’m gathering feedback to make sure I fix as many outstanding issues as I can. You should try to play your game with this setting enabled in Studio, check what the performance is (the expectation is that it’s comparable on small levels and drastically better on big levels), check for any visual issues that you’d like to be fixed and post your feedback here.

If you have questions or problems with some other changes mentioned here except or in addition to LOD, feel free to post them here as well.

24 Likes

It works pretty well, but it kind of destroys my mountain.

Before

After

Do you know if its possible if you could make the terrain LOD system optional per place?

4 Likes

Thanks! This was my biggest annoyance with water reflections.

The only problem I have is that it’s very noticeable when you’re walking toward some low-detail terrain and the high-detail pops in. Also as a developer I would like to have the option to force significant landmarks to always be high detail.

This is pretty much impossible. The current LOD distances are a bit aggressive in some cases; I’m planning to extend them which may make this better.

2 Likes

Do you have a place link I can check out?

If you need a studio file I can give you that too.

I love the usage of decal trees around the far side. You can barely notice but it looks and runs so well. Would that be possible with the mountains too perhaps? Maybe even layering parts of them so it still maintained a type of “parallax scrolling”?

Thats a great idea! I’ll try it

I’m getting some very strange mini-voxel terrain in seemingly random spots. As you zoom out, these spots get bigger and are easier to find, but when zooming in they get smaller until they are as small as in pic.
The part next to the small terrain is 1x1x1.

Place link is Project Lag™ - Roblox

Hmm, does this only show up with LOD enabled? Also, can you tell me the exact coordinate of this part so that I can find the mini-voxel?

The part is called MiniVoxelPart, and is at (-895.5, -30.5, -2528.5). It seems to also show up without LOD. Apparently its just a voxel with a super low occupancy value, it must have been there before, though it was much easier to find with the LOD. Guess that’s a bonus of this new feature :sweat_smile:

While I’m at it though:

Namnlös 2.png

Seams between different detail levels are very rough in some places, especially where terrain is completely separated.

Namnlös 3.png

Smooth hills have a tendency to become very spiky at lower detail levels. I imagine you can adjust this based on the “hardness” of the materials? (stone looks harder than grass and so on)

Yeah, I’m working on improving this right now.

1 Like

I only have a flat plane of water in my place. Before testing in studio it would always run at like 15 FPS (because 2-3 windows rendering the same thing open…). Now it runs much smoother. And a flat plane obviously doesnt suffer from graphical artifacts… :slight_smile:

1 Like

That mountain looks incredible :hushed:

1 Like

Getting some strange results from a flat plane of water with parts above it. The land mass is 8.6 studs above the water yet it seeps through.


2 Likes

This was really nice to have… I was able to import 18.14M voxels of terrain and have no lag (after generating the map)
Sadly the height wasn’t imported properly, but till… Being able to have a map thats made from terrain and 24.0000001k studs from corner to corner is amazing.

Map.rbxl (1.2 MB)

EDIT: Apparently roblox runs out of allocated memory after trying to generate more then 20M cells.

You may need to raise the land mass.
The resolution of the terrain gets larger and larger the further away from the Camera’s focus it is, so information about the surrounding areas becomes lossy, and the height of the water essentially starts to round upwards.

blob.png

2 Likes

I feel like this may actually be the problem of the water layer being too thin (1-voxel?) in which case there’s not enough information to preserve the volume and the height starts to wobble - I have seen this before in my tests.

Making water 4 voxels thick or so may fix this.

1 Like

I tweaked the LOD logic a bit and I’m now getting this (on the previous version of your place with an actual mountain :smiley: ):

So not as beautiful as your original place but a much better quality compromise. I will spend some more time focusing on LOD selection tweaking after I get the seams out of the way - I’m hoping to make it quality level dependent so that on low quality distant geometry does not look as good but does not cost much.

8 Likes

Hmm, I’ve successfully ran levels up to 500M voxels in Studio. Play Solo does not quite work at that scale but it works with somewhat more modest sizes.

The map you’ve attached actually seems to have 111M voxels? (judging by print(workspace.Terrain:CountCells()/1e6))