One possible potential (probably minor) optimization to ETC1 encoding: determine the principle axis of the entire texture, rotate the texture's RGB pixels (by treating them as 3D vectors) so this axis is aligned along the grayscale axis, then compress the texture as usual. The pixel shader can undo the rotation using a trivial handful of instructions.
ETC1 uses colorspace lines constrained to be parallel to the grayscale axis, which this optimization exploits.
ETC1 uses colorspace lines constrained to be parallel to the grayscale axis, which this optimization exploits.