Smooth Terrain LOD

No - this update only affects terrain voxels.

1 Like

I seem to have found a weird bug with it, forming ‘world holes’ (like in Minecraft) in smooth terrain:

Closer up:

Attempting to walk closer to the ‘world hole’ appears to fix the rendering as it loads the higher-detail region.

Do you have a place link?

I was generating terrain in https://www.roblox.com/games/433691900/Terrain-gen-2-0 - it had StreamingEnabled turned on, but I’m trying it without to see if I can replicate the issue.

EDIT: With streaming turned off, the issue does not seem to occur.

1 Like

I think I found another bug:

Terrain LOD appears to not update correctly if the terrain is far enough from the origin (I’m at about 5.2k studs from the origin)

Here’s another view of the issue:

Terrain LOD updates correctly for the ‘chunks’ that I am standing on, however.

This is in the same place I linked earlier, with StreamingEnabled turned back on

1 Like

This looks fantastic!

20 Likes

As far as optimization goes it feels great; had one example of a place going for ~25 FPS to a constant 59.8 now.

That being said, in areas where speed is involved it feels like it goes for optimization over looks a bit too much. Like at walking speed everything looks OK, but when driving a car at 200 studs per second the terrain is updating too much. Like can we have some way to adjust it to gain back some quality over performance if we want to, like increasing the range that terrain is at max quality?

My place used to run as smooth as silk, but now I get frequent freezes for ~1/3 of a second.

The place has tons of terrain and fast runspeed.

1 Like

I don’t get any freezes on this place. You are testing in player, right? Can you post the specs of whatever you’re running it on, and a profiler dump (press Ctrl+F6, run around until you get a freeze, select Dump -> 512 frames, it will save an HTML file to C:\Users\username - PM me that)

Yeah, I’m thinking about possible APIs for LOD control. Could make sense to tweak how aggressive it is (I think there were some feedback issues with just driving that off quality level), could make sense to make the vertical distance affect LOD as well. I’ll look into that.

Btw, can you send me a link to the place that you’re talking about (with the car @ 200 s/s)?

2 Likes

I’m very happy to hear about performance improvements but I’m dissatisfied with how my islands look now.

A bit better up close.

1 Like

Not sure what they looked like before. In general if you want to preserve the material at the top it should have at the minimum occupancy not less than the material below, and preferably have an extra layer or two for safety (not always required). If the islands were supposed to have a glacier (?) bottom with a thin layer of water, you should make the layer of water a bit thicker.

2 Likes

I apologize for not being specific.

The reduction in detail for the ice water around the island leads to really big and irregular holes as seen in my picture above. The entire terrain loses it’s bumpy texture as the LOD gets lower as it moves out. The terrain in the distance also looks “mushy” because the lacking of crisp lines like the old island. I’m glad we got LOD but until I have more control over it, looking at the islands from the sky is going to be subpar.

this is fantastic. i use a big smooth terrain map for one of my games, and i was only getting around 20fps while rendering the whole thing, but now it’s a constant 60!

1 Like

This is great in some cases, but it would be terrific if it was toggable and/or adjustable. Two games I’m working on look like crap from short distances because of it, and one of the doors surrounded by terrain gets filled in around the corners.

(I can get pictures later tonight when home)

Right, so the water issue is likely because the water layer is very thin - few voxels, and I suspect low occupancy values. In general LOD code tries to maintain the “cover” material to some extent. This may be tuned a bit more - can you give me a place link? But otherwise I’d recommend making water a bit deeper, and/or using full occupancy values for water voxels where appropriate.

For example, right now you can easily mishandle occupancy for procedurally generated terrain - you can have a 3-voxel deep water with occupancy 0.01 in all 3 layers and it’d render fine and the difference between that and occupancy 1 would be just a bit of the adjustment in the water height. With LOD, the material under water can overtake water with this kind of setup.

In general I suspect that this entire island was very taxing on the GPU pre-LOD so obviously this becomes a performance-quality tradeoff.

1 Like

I don’t think toggling is a good idea. You have to think about the ecosystem with the varied hardware - like, when smooth terrain came out Quarry started using it at day 1, and good PCs were able to handle it fine - but a lot of users reported basically running out of memory, mostly due to rendering. While rendering memory was optimized at some point it still is not enough without LOD.

Now, adjusting the LOD parameters could work. I’ll need to look into how much a developer can relax LOD settings without causing issues for low-end (within reason) systems, and whether this can be tied to graphics quality or not.

2 Likes

For now I will just not show users a full view of the islands. It’s just a bit dissapointing that users with high end systems cannot enjoy high LOD terrain.

@zeuxcg Now that this is live, is the resolution parameter for smooth terrain coming up in the future?

Huh. Now I don’t understand why you were getting the ice/water interleaving in strange ways like your screenshot shows. When I play the game I see a solid layer of water around the island - that should not change with LOD. To get ice/water mix you have to have ice voxels inside the water somehow but I don’t think this is the case. Any chance the current version does not use the same generation algorithm as the one the screenshot in this thread was taken from?