material shader refactor