There is clearly something wrong with the images below. The shadows are not supposed to be this far away from the surfaces they are cast from. Can I correct this with bias or should I fix the scale? The shadows used to look real, but all this floating point multiplication must have got in the way. Two years ago it looked perfect. What happened with this shadowmap?
https://github.com/dimitrilozovoy/Voxyc/blob/master/engine/ShadowMap.cpp
https://github.com/dimitrilozovoy/Voxyc/blob/master/engine/ShapeRenderer.cpp
I'd check your light projection matrix , if you are using glm and 2 years ago things were ok, its probably something related to matrix projection, your code looks good to me, even if i hadn't the time to check it. Bias is used to reduce shadow acne , but introduces peter panning, usually it is set to 0.005 , but there are variations like tangent bias and other hack to minimize problems.
One question , why in this era of unreal and unity you have chisen to develop your engine ? i am too , by the way and i'd like to hear opinion form other apparently 'irresponsible' programmers.