Blending in material based on mesh local height?

Hello! I have a bunch of assets that I would like to blend in better with my nature and terrain.
I’m wanting to add some moss to the lower half of them to make them look more natural, a lot of them use tilable textures, and I use some dynamically generated stuff like speedtrees, so I am looking for a way to apply this dynamically rather than handpainting it on the uv’s of each asset.

Would you have some ideas on how I can blend in a material based on it’s distance from pivot Z? Or some other solution that would provide equivalent results.

I made an OK-ish solution that will work with any objects that flares out towards the bottom by using world-aligned blend. But it wouldn’t work for something like building walls.

something like this may work.