Context :
I'm writing a 2D mobile game in Unity where the graphics are essentially black lines drawn on a background image plus some lighting. Running full RGB calculations for every step seems like a waste of processing power. What I'd like to do is render everything in [grey, alpha] and then multiply by the sRGB background image in a separate shader at the end. Actually, ideally, I'd like basically to specify custom components like [grey, highlight, additive, alpha], each of which can be ignored in a given pass, and then do a custom operation with those when I apply the background image, like ceil(src*(dst.r + dst.g)) + half4(dst.b). I can figure out how to do that between 2 textures within a shader, but not between texture and screen (a.k.a. src & dst).
Question :
Basically, is there a way of writing a per-component replacement of the built-in Blend functions? Because something like Blend SrcAlpha OneMinusSrcAlpha only works with the full float4 or half4 vectors.
Or do I need to grab the screen like a texture and handle it within a pass block, and then do Blend Off or Blend One Zero? Or do something with RenderTextures perhaps? My intuition suggests that that would undo some of the efficiency I'd gained in previous steps, though...?