Dynamic shadows artifacts

GetScreenSpaceData has non trivial cost associated with it. Suggest that you replace it with a function, that would grab only normals from gbuffer(or at least double check, if unused parts of it are compiled out of ASM. I believe they are not.), as well as exposing constants on that lerp for control, but overall, that would be a feasible temporary workaround. There are other potential uses for surface normal during shadow filtering btw.