More shader work plus materials refactor