I have a terrain and a flat object that I want to seamlessly transition between. When I put them at exact same Y position with some overlap they create a very erratic and jagged pattern as if they are both fighting to be on top.
How Can i prioritise one over the other and make them work together/only show one of them but be on the same level?
This happens due to low float precision. For each pixel on a triangle, gpu calculates it distance to the camera and discards it if some other pixel was rendered in front of it. Given that float points are not very accurate, this gives the artifacts. This is the case for opaque geomettry, which the terrain shader is.
I suggest to check out Projectors, in case you need to render transparent image on top of any opaque geometry.
If you need to render opaque on opaque then your only option is to raise your flat object above the terrain just a little bit.
Also for the sake of experiment, you can make or find transparent terrain shader, and then use renderQueue in the material to control the order of what is drawn first, but this approach is a waste of gpu for no good reason.