I've implemented dynamic 2D soft shadows from this article on gamedev.net. It uses an image for the penubmra and is fast, physically accurate and looks good in most situations, so I really like the technique.
The problem is that it doesn't work properly for concave polygons, two polygons being close together, or a polygon being small compared to the light source. The polygons in my app are going to be user generated, so I can't easily avoid these scenarios.
Is there a technique that still looks good an accurate in the situations that I listed?