This question is similar, but not the same as: PBR from one image - #23 by mrdoob
In my app, I am using dynamic textures where shapes are drawn on a 2d canvas and then moved to a webgl texture. At the moment, I need three canvases - one for color, one for metal/roughness and one for bump. If bump could occupy the other channel in the metal/roughness canvas it would save the need for another hi-res canvas and speed up texture copying by 50% by removing one of the canvases. The app has acceptable performance as it is, but it feels like it is on the edge of being a bit too slow. A 50% boost in image movement would make it a bit more snappy.
It seems that the bump map could just occupy a single color channel - is there a reason why it needs to be gray? Could I create a custom shader to handle a bump map that just uses a single channel?