There is a quite easy approach to render soft lights direclty while you raytrace the pixels of your terrain.
Dont use a single point for the sun - use an area. If you use a squared area then you have 4 points available. Every pixel of the terrain traces to all 4 points.
So if it happens that it hits all 4 of them then it gets full sun light.
If it hits none it is in full shadow.
If it hits only 2 of them it is in half shadow.
The size of the rectangled sun influences the size of the soft-shadows.
The calculation will take 4-times your current time but it might be worth it.
The quality can be better, when you rotate the rectangle like this:
Code:
x
x x x
x