separating shader specific tasks from square