Dagegen spricht, dass meine Modellklasse nicht wissen kann, welche Daten später benötigt werden. Es könnte ja sein, dass im Laufe des Spiels ein anderer Shader zum Rendern des gleichen Objekts herangezogen wird, der ein anderes Vertexformat erwartet.
Normal existiert ein Basisset von Attributen, dass jeder Shader verwendet (Position, UV-Set, [Farbe], Tangentframe), wenn ein Shader mal ein Attribut nicht benötigt ist das meißt nicht ganz so tragisch. Würdest du darauf Rücksicht nehmen müsstest du z.B. für einen Light-Prepass sämtliche Modeldaten in doppelter Ausführung hinterlegen. Oft ist es aber so, dass Attribute hinzukommen die nicht zu diesem Basisset gehören (z.B. Skinningdaten, weitere UV-Sets für Textursplatting, o.ä.). Es macht hier keinen Sinn diese Daten standardmäßig für jedes Model zu hinterlegen, da ja nur ein Subset von Modellen diese Daten effektiv benötigt. Diese Modelle werden entsprechend auch mit anderen Shadern gerendert. Dafür bietet sich oft an solche Features im Shader über Macros zu aktivieren und entsprechend das Vertexlayout anzupassen.