Separate shader objects and program pipelines