Here's a quick tutorial on how to use a virtual texture to project instanciated grass onto your landscape and have great contact point with the ground, per individual grass blade, and make the grass remain straight.
It basically uses pivots baked into UVs to sample the landscape height in world space at each grass blade's location and move vertices vertically according to the delta between the landscape and the grass pivot.
Quick demo.