Material Noise node - how to prevent it from recalculating pattern each frame?

Hi, I was attempting to make a random terrain material for a planet (sphere mesh) using the noise node in the editor. I managed to get some reasonable looking terrain in the material editor, however when running the game the noise pattern was getting recalculated each frame (I believe).

How can I get the noise pattern to be generated only once (on start)?

I have since found that it isn’t being recalculated each frame but it is actually location based. (my mesh is in orbit)

So now what I need to know is if there is a way to generate a noise pattern for a mesh and for it to stay the same when moved.

Using the noise node in a material will always recalculate every frame. (And is quite heavy) So if you want something static this might not be the best performing approach.

However, if you do want to take this route the noise node has a position input. With nothing plugged it will use worldspace. If you take a worldspace node and subtract the actor’s world space position and plug that in you are effectively calculating the noise in local space and get the same results even when moving. (Note that if you also rotate or scale the mesh you have to compensate for them too)

What I originally meant by ‘recalculating’ was creating a new noise pattern. I understand that this is not the case. In my scenario a static texture would not suffice therefore the noise node would be the best approach and I am happy to accept the performance cost of doing so.

I did notice the position input but when attempting to use it I just plugged my meshes world position in and it didn’t make a difference, thanks for explaining how this should be done. The documentation doesn’t really give any clues as to what this is for, it’s only description is: ‘Allows the texture size to be adjusted via a 3D vector.’ which made me think this would not solve the problem as I don’t want to adjust the size as such.

In any case, you have solved the problem so many thanks for this.

Best regards,

Dan