I have tried both shader-based and geometry-based approaches, both on uneven terrain :
[how to make these kind shodow?)