Refactor the code to allow different graphics pipelines to use different Vertex structs and different uniform and vertex attributes