(Very) Large Scale Landscape Shaking

Hey!

I’m working on a landscape, an Island with 55x22km, aprox…

The thing is, it looks like it is shaking… With and without texture applied. I tried applying the materials in a smaller scale landscape and the textures look great and are not shaking at all…

A cube example of how the texture should probably look :sweat_smile: :

So that shows that maybe my landscape is really large and it’s messing up with how it is shown…

How can I fix this and make my materials work and look good without the landscape shaking and what workarounds do I have to still have this Island with the same size 55x22km?

Thanks

Did you find out what caused this? I have the same problem with the landscape “moving”

1 Like

I can’t really explain why it happens… I resorted to create a smaller area for now to create the landscape…

I believe it’s due to it’s size(?)… Maybe there’s a few parameters to have in mind when applying a landscape material to a landscape this size… I applied the same landscape material to a smaller landscape area and it works fine.

So my guess would be that the GPU is trying to load all the textures in the landscape at once and it can’t really process it correctly… That might explain why it works better with smaller landscapes.

I believe that to achieve this we need to implement a good performance strategy. Meaning the landscape (that in my case was aprx 55km per 27km wide…) is to large to be rendered at once, you’re not going to see all that landscape in-screen at the same time… Even if your landscape is way smaller than mine.

That’s why I believe that in order to solve this issue, you need to undergo an optimization process. Optimize how the landscape portions load in and out in order to have the least amount of landscape surface (that you can’t see on screen) rendering textures at once, and I believe the problem will be fixed.

NOTE: This not only happens in my landscape material, it also happens when I have lot’s of textures in different objects… it all comes to optimization basically.

Sorry for not being able to give a specific fix, but this is the conclusion I took from this.

Hope you can make it work!

+1 getting this effect too. any insight on this would be great.

1 Like

one way I found that works is https://www.youtube.com/watch?v=a_BYct15LBg&t=124s

1 Like

switching to nanites helped. it takes up more gpu resources, but it seemed to work for me.

1 Like

For the n(th) time.

Regadless of what the Noobs think.

This is a floating point precision error.
Look it up.
Fix it.

And stop trolling reports of conduct violation. Exposing one for what he oh so clearly is does not violate any code of conduct.
The next editing or removal is going to escalate right up through epic’s legal department.

Hey everyone,

Just to clarify upfront, I’m not a decades-long, seasoned developer with all the answers. I’m someone who learns as I go, doing this for both a living and, honestly, for fun too. Over the years, I’ve gained insights from hands-on experience and problem-solving, but I’m still constantly learning, just like many of you. The information I’m sharing here might not always be the perfect solution for every case, and it may even present some errors or be outdated. It’s not guaranteed to be 100% accurate or up-to-date, but I encourage you to explore, experiment, and figure out what works best for you. This is all about learning as we can, and each project is a step forward.


World Partition, World Composition, Floating Point Precision, Large World Coordinates, Level Streaming, etc

In large-scale environments, as you move further from the world origin (0,0,0), floating-point calculations can lose precision, leading to jittery or shaky visuals. Additionally, misconfigurations in World Partition and level streaming can cause parts of the landscape to load or unload unexpectedly, leading to instability.

World Origin Shifting iis a concept you should familiarize yourself with, as it may help understand and resolve some of these issues.

A few links that may help:
Large worlds in UE5 - YT
Large World Coordinates - UE Documentation
World Partition - UE Documentation
Level Streaming - UE Documentation
World Composition - UE Documentation
Issue with world origin shifting - YT
Unreal Engine 5 Landscape Material - YT


The issue you’re facing might not necessarily be tied to Floating Point Precision or World Partition settings—there could be other factors involved. It’s important to dig deeper and explore various potential causes. In my case, the problem stemmed from a combination of misconfigured settings, particularly with how World Partition was implemented, and other project-related aspects. When I created a new project from scratch in the same engine version and replicated the issue, it didn’t happen. This made it clear that the problem was rooted in specific configurations of my original project, which hadn’t been properly optimized or adjusted, especially after updating the engine version.

1. Physics Sub-Stepping & Tick Settings:

In UE4, Physics Sub-Stepping allows for more frequent updates, improving the stability of physics simulations like ragdoll effects. It’s enabled in Project Settings > Physics > Framerate. However, custom physics requires some adjustments, and collision callbacks may be delayed, causing multiple callbacks in a single frame.

In UE5, the approach has changed. Substepping is managed internally, and developers no longer have manual control over it. Custom physics functions are called once per frame, unlike in UE4.

A possible workaround in UE5 is using the Async Tick Physics plugin, which provides more control over physics updates.

I haven’t had the chance to explore this in my projects, so feel free to check the links below for more details and dive deeper into this if you’re facing issues.

Learn More: Physics Sub-Stepping - UE Documentation


2. Landscape Tessellation and Nanite Settings:
When using Nanite with landscapes, you can achieve higher visual fidelity, but it’s important to understand how it affects performance and that improper configurations in landscape tessellation or Nanite can cause visual glitches, such as flickering or tearing… Consider optimizing your assets and testing the impact of these settings on your project before fully implementing them.

Learn More: Using Nanite with Landscapes - UE Documentation

3. Landscape Scale and Collision Settings:
Incorrect collision settings can cause physics issues, like characters getting stuck or jittering. Be sure to check and adjust your landscape’s collision complexity and ensure it’s scaled correctly for smooth interactions.

Learn More:
Landscape Technical Guide - UE Documentation
Unreal Engine 5.4: Nanite Tessellation in 10 Minutes - YT
Nanite Tesselation - YT

Better Procedural Landscapes in Unreal Engine 5.3 - YT


4. Camera and Character Movement Replication (For Multiplayer Setups):
In multiplayer setups, proper movement replication and client-side prediction are crucial for smooth movement across clients. Take time to familiarize yourself with Unreal’s networking setup to prevent issues with jitter or lag.

Learn More:
Networked Movement in the Character Movement Component - UE Documentation
Unreal 5 Multiplayer FPS - Replicating models, movement, and shooting - YT
Quick & Easy Multiplayer Replication in UE5 Unreal Engine - YT
Unreal Engine - Replication Basics (3 parts) - YT


While the issues you’re experiencing could stem from Floating Point Precision, World Partition, or other common causes, it’s important to take a thorough approach when debugging. As discussed, there are several factors that can contribute to performance problems, such as physics settings, landscape configurations, and multiplayer replication. My advice is to dive deep into each of these areas, understand their impact, and tweak them according to your specific needs.

Ultimately, there’s no one-size-fits-all solution, and a bit of trial and error will go a long way in uncovering the root cause of any issues. Keep experimenting, and don’t hesitate to consult the links provided for more in-depth information on each topic.

Happy developing, and I hope this helps!