Note also how shaders applied directly to sprites disable much of the sprite parameters in a .scn. Hence, you ae ***** to use framebuffers pre-camera , because you cannot apply shaders directly to the sprite nodes below the camera node where they will interfere there with the opacity animations and other sprite parameters that you may want to apply.
That is not quite true. If the shaders are written "correctly" then they will use the opacity and colour settings, together with their time dependencies, as set by opacity: and color: clauses and associated animate clauses. The "trick" is to multiply the pixel colour and opacity four vector, gl_FragColor, by gl_Color at some appropriate place in the shader - usually as its very last line. Unfortunately quite a few shaders omit this factor, but if so they are almost always simple to fix by adding the statement
gl_FragColor *= gl_Color; // Apply externally specified color and opacity factors.
gl_color is vec4(R,G,B,A) where R,G and B are set by the color: clause and A by the opacity clause: of the sprite. The default value is vec4(1.0,1.0,1.0,1.0).