this could fail if someone tries to pass attachment points in the wrong order right? perhaps we could resize the vector and check if the texture is allocated when using them