Okay, I took a look again and, unfortunately, didn't get anywhere. The biggest issue seems to be how the specular lighting is calculated, but I cannot figure out at all how it's supposed to work, even after tweaking.
On an aside though, I did find that the GitHub repository for the DecalCo shader has a GLES2 shader included! It also has the normal map support, though they replaced dFdx
and dFdy
using a different method. They have it disabled though, as I do not think they could figure it out either.
There is likely a solution, but my guess is that it would involve passing more data to the shader, like the world normals for the scene or the camera transform through a uniform.