more shader infrastructure... it seems there is no end to it...