Make Nanite Tessellation ignore object scale

Is there a way to ignore the object scale when it comes to displacement?

Currently the magnitude of the material is scaled by the objects scale, which causes bigger objects to have bigger displacements. This works fine when the material is 1:1 with the object, but it breaks world align materials.

These two spheres use the same material, but have different scales.

1 Like

Proof of concept:
By add the following I get to hack in place that Displacement is not scaled. But there are some artifacts… Notice all the things use the same world positioned material

File: Private\Nanite\NaniteRasterizationCommon.ush Line: 461

NormalClip /= InstanceData.NonUniformScale.w / 100;

Artifacts
Not sure why the nanite mesh breaks down. I can’t find any references to Magnitude anywhere else in the code.

1 Like

Really looks awesome though!

1 Like

Ended up making a PR enabling it in the engine.

https://github.com/EpicGames/UnrealEngine/pull/11735

I hope they make it a engine default thing… this should be the way it works by default it sucks blueprint users have no good way to use tesselation

I’m guessing this also works with non-uniformly scaled meshes? Like say I have a 4x4 wall and I stretch it on one axis it should ignore the scale and just look as it should, right?

Edit: Doesn’t seem to work in 5.6