a little better shader generation