Pixel Depth Offset and Layered Material Painting: Crazy useful Unreal features Blender needs!

@Nerve Welcome to the community.
Are you searching for something like this?

I have also tried creating a node setup that would do this.


I can’t tell from your video ,but do you run into the same problem? I seems to work OK for flat terrain ,but anything that’s not flat doesn’t work. The only way I have solved this is using dynamic paint ,but that’s a pain with a lot of objects.

1 Like

@AFWS Currently on weekend. Will track it down.
But I am pretty sure, it can be done with World+object normals very efficiently. Let me know if any progress can be mode on that methodology.
The paper for devs :

All those other examples aren’t really what the opening post is describing though. Sure, it’s easy to just mask the lower part of a mesh based on Z position and change the material for that part.

The special thing about that Unreal/Battlefront concept is the fact that first of all it’s not just creating a mask based on the world Z position, but on the Z position of the terrain underneath, no matter the shape.

Furthermore the blending material is taking its UVs from the terrain AND blends its normals with those of the terrain, eliminating a visible seam. None of those Blender node setups seem to do any of that.

1 Like

Thanks for the clarification. I get it now. Possibly have some prototype. Let’s try.


I think I’m getting pretty close. Does like @Laserschwert mentioned. Uses terrain UVs and normals.


Here’s my ground masking approach. Only works for ground plane. Currently using ground positional value to derive with the dot product.
For curvature I guess we need to find a way out for making a dot product or distance field of hill object normal and ground object normal.

Maybe Animation node has some opportunity on that. Unfortunately going back to production for now. So, can’t really get into it right now,

Here’s the file and demo if it helps.

1 Like

This all looks like really good work. Is there are way to smooth the normals across the intersect seam? The intersections are still fairly visible.

Actually, wait, AFWS’s solution looks like it’s doing…something like that?

These solutions needs to be mixed together. I am currently on production and will become free in February. If someone else want to handle it, can dld the zip. Although mine one serves only for planner. Curvature needs some mixture of dependent object normals.
@AFWS is using Dynamic Paint for masking if I am not wrong. Which is actually a very good way.

@AFWS Could you please share the detailed node tree from this result? Looks very useful and I hope it helps me with my project. Thanks!

Would love to see the progress and playing around

You made a wonderfull mix there, would you like to share more about the nodes and attributes? i’m searching to learn this technique

@nikegrass @christianwilliam @Melkor

Waiting for @cgvirus to be able to join in. Like cgvirus mentioned, I’m using dynamic paint, data transfer modifier(uvs and normals) and nodes to be able to do this. Because of this, you can’t always keep it “interactive” and it fails like 50% of the time. If you’re already using dynamic paint for something else, this technique doesn’t work. In 2.8, you can’t have a canvas and brush on the same object. This limits the blending to just one object.

@AFWS @cgvirus any word on this? Would be extremely helpful for landscape work. Can’t find a single method that is really effective at getting good results with blending meshes.


Haven’t messed around with it anymore.


This gets the landscape intersection ,but it only works in cycles.


@Alberto, I want to point out that you made almost the opposite argument as this throughout 2.80 development. You were always looking for an “easy” button for everything even though the capabilities were always there. You are a major reason I stopped coming to this forum. You are tirelessly combative about any new feature requested and any change made to the way 2.79 worked. I hope now you can accept that all of the resistance you made to the changes that the 2.8x series brought were completely unfounded. I hope you can find the strength to stop trolling on this site in order to fight for some “ideal” that is ever shifting in your mind and let the adults handle business without your constant noise, arguing, and worthless resistance. Find another forum to argue on. You aren’t helping. Get lost.


Hey there ! Wondering if you can help me recreate your node setup to blend normals with the ground plane?? I think i’m close but it doesn’t look nearly as good as yours @AFWS


The normals isn’t coming from the nodes. You need to use a data transfer modifier to the get normals.

Could you share a more detailed setup? @Nerve asked the same I believe. I’m not sure how you are incorporating the data transfer modifier with your nodes - thanks in advance! @AFWS


Done with Geo Node and Data Transfer. Unfortunately Normal attribute can not be changed in Geo node right now. So Data transfer came handy. Hope it helps folks.