J'ai appris un peu le rendu des métaux de base, et je suis coincé avec quelques concepts de base:Combien de fois le vertex shader est-il appelé avec du métal?
Je sais que nous pouvons envoyer des données vertex shader en utilisant:
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
Et nous pouvons le récupérer dans le shader avec:
vertex float4 basic_vertex(const device VertexIn* vertexIn [[ buffer(0) ]], unsigned int vid [[ vertex_id ]])
Si je comprends bien, la fonction de sommet sera appelée une fois par chaque sommet, et vertex_id mettra à jour à chaque appel pour contenir l'index de sommet.
La question est, d'où vient ce vertex_id?
Je pourrais envoyer au shader plus de données avec différentes tailles:
renderEncoder.setVertexBuffer(vertexBuffer, offset: 0, index: 0)
renderEncoder.setVertexBuffer(vertexBuffer2, offset: 0, index: 1)
Si VertexBuffer a 3 éléments, et vertexBuffer2 a 10 éléments ... combien de fois sont la fonction de sommet appelé? dix?
Merci!