Do three.js sprites support custom shaders?
No. They have SpriteMaterial thing that holds your
beer parameters for this shader. You can see that this shader is compiled once and is totally inaccessible from outside of SpritePlugin.
What do I do about this?
When I need to paint sprites with custom shader, I do it. How? Obviously, I have to overwrite whole original SpritePlugin code at some point before WebGLRenderer is created. This code is fairly stable, but changes do happen from time to time, so I would need to merge those changes whenever I switch to new three.js revision. Generally, I could just use the latest one, and leave update task for someone else to handle in the future.
But today I decided to do something different. I used whatever code was there in the engine and applied only small necessary changes to it on the fly. How? SpritePlugin.toString() → eval(). Here, check out the example: