Procedural Landscape from Shader Graph Editor | Plugin | 4.26 / 4.27 / 5.0

9/22 edit: Now available for 4.27 plugin

Hello UE Community,
Sharing here a plugin to create landscapes from the shader editor, within a material function.
You can use any noise, heightmap, any tool within the material editor to create landscapes, landmass, even oceans.
There’s runtime procedural asset spawning and you cna leverage up to 4 landscape layers to help you blend materials, spawn assets,… !

If you play around with it, let me see your creations ! You can find me on twitter:


I added a bunch of features: multiple landscape layers, ability to access the generated render targets (so Ocean can access the terrain height), ability to spawn any actor on the surface (VFX, NPCs,…)

1 Like

why wouldn’t you put it on the Epic Marketplace though?

1 Like

I’ll once i’ve the missing legal document to complete my profile.



Thanks. This will build to my Mac but when I build to my ipad it cannot find the plugin. It worked when it was a Project but not as a plugin. I will try moving the files to the main project directory and remaking it.

1 Like

I’m really not knowledgable enough on this subject. Are you using ue 5.0?

Me neither. I tried it in both. Oh well. If you could share the project ?

1 Like

i have been working and updating mostly the plugin for a couple days, let me see if i can figure out the issue you’re having with ipad. There might be a silly fix.

I got it to load Maxime so it is probably my end. I enabled landmass and a few other things. Unfortunately it is not working properly - probably Mac M1 and iPad issues. I know there is a problem with render targets on Mac

Can you try to add this line in the plugin “ProceduralLandscape.uplugin” file :

“SupportedTargetPlatforms”: [

Also you might have to lower the number of vertice per patch (i’ve set it to 511 on a couple of the demo maps): it’ll end up creating 2k rendertarget if you have set 2 texels inner-vertices, or even 4K+ if you’ve set it to 4.

I need a better way to define memory/RT budget, and some safeguards as there’s none!

1 Like

Ok thanks Maxime. Yep the landscape comes out stepped on the iPad which is a render target issue I will try lower vertices Thanks for your help. It is now building in UE5 to iPad

1 Like

I would try using the runtime version of a given map at first, find the number of vertices working well, then enable cache and see how far you can go with the cache resolution by playing with the number of texel between vertices.

Got to say i didn’t try on mobile but there’s no reason it shouldn’t work !

1 Like

Sorry to bother you again Maxime. I have got the vertices down to where it works on ipad but the character is floating a few feet above the landscape. I know it wont be an exact match but is seems more than just the coarseness of the vertices, how do I match them up better ( if possible ) ?

1 Like

I absolutely want to figure out your issue, what are the settings of your world? If you can post a screenshot or your settings/your problem, would help. in wireframe mode the collision mesh should be seen in blue, while the world is grey/yellow.
If you’re making changes to the world Material function, you need to toggle ‘rebuild’ in the detail panel to update the collisions accordingly.

The collision is fine on the Mac it is when I build out to the iPad it goes awry. I am using my own material. I am using the “reference” landscape from the plugin folder. World dimension 10,000 127 vertices on runtime. 1 collision mesh per quadrant and 31 Collision mesh Vertice any more and it steps on the iPad ( the character keeps jumping down ) Do I need to be using your world material ?

1 Like

Not at all, the world material has no consequence on the collision ( as long as your not modifying the world position offset in the material).
Let me set up a test scene brb

So there is a collision mesh and a landscape texture mesh ? The collision mesh is somehow higher. What influences this ? Could be just an iPad / iOS issue Maxime so don’t worry too much

1 Like

I’ll figure it out, the collision mesh is computed with the same material function you used to generate the world, and is masked.

I might be missing a texture - I get a lot of missing texture errors “Failed to load ‘/MegascansPlugin/MSPresets/MSTextures/noise_mask’” - which is why I use my own material - I will check the function