Hey wrongtarget, I absolutely remember that you did one of the unity bump mapped implementations a while ago
believe me, I read all that stuff 🙂
https://www.dropbox.com/sh/pxr0wo3pooxtbqq/AAAdiqctBgBRnfQ30RTuyq6na?dl=0
So here's my current setup. The shader is pretty messy since I tend to just throw stuff in and comment other stuff out while I'm trying stuff. A lot of things aren't commented, there's a line which specifically emphasizes the horizontal normals, for example. I'll work on cleaning it up.
The way the shader works is that the forward base pass, which includes a directional light, all vertex lights, and spherical harmonics, draws the character as a transparent sprite with alpha blending, and then other lights are drawn with an alpha cutout approach additively on top of the transparent sprite. Because of this, a character illuminated by directional lighting will look just like a character drawn with the basic lit spine shader, but a character with no directional light and only spotlights will be drawn completely with alpha cutouts. The trick is that mixing them seems to work pretty well
tell me what you think.
This is the highest quality approach I've been able to figure out, since unity (as far as I know) doesn't make the data for point lights available in the forward base pass. It's sort of like fancy grass shaders that draw transparent style first for smooth edges, and then draw alpha cutouts after to deal with draw order.
Except, for characters you don't want those smooth edges being drawn in the wrong order either, so you use the RendererSortingOverrideGroup component to sort all of the mesh renderers for the spine animations. Just add the RendererSortingOverrideGroup to a game object and then drag all the spine renderers to the list it has. Currently sorting only happens during play mode, not in edit mode.
One last note: The changes to SkeletonRenderer will look for a bool in one of the csharp atlas classes I think. That's only there because it was needed when converting backfacing meshes to frontfacing meshes in SkeletonRenderer, because spine can rotate some of the textures when it packs them, and there was no easy way to figure out which ones had been rotated. You can probably just remove this part, since with bump mapping it's way easier to just disable rotation in the atlas anyway.
Ok, let me know if you've got any questions!