1) it's already possible to change all 4 channels independently. Use pixel_for_bmap + pixel_to_vec to get the "old" values, change one (or more) of them, and use pixel_for_vec + pixel_to_bmap to write the "new" values back to the bitmap.

2) a shader makes no difference between models/blocks/terrain/whatever.