Ma question est ce qui est écrit dans le titre. Ce terme "couleur de sommet" apparaît beaucoup. J'ai du mal à comprendre cela.
Par exemple:
Un point simple sommet n'est-il pas sur l'espace 3D? Si oui, comment un point peut-il avoir une couleur? Ou cette "couleur" signifie-t-elle autre chose?
Il y a un nœud "Vertex Color" dans l'éditeur de matériaux du moteur irréel.
Quelqu'un peut-il éclairer ma question? Je n'ai rien trouvé d'utile quand j'ai googlé "qu'est-ce qu'une couleur vertex" mais des documentations trop techniques pour moi.
vertex
terminology
Bora
la source
la source
Réponses:
Les couleurs de sommet ne sont pas si pertinentes lorsque vous avez un maillage 3D entièrement texturé. Mais cela devient intéressant lorsque vous avez un maillage non texturé mais coloré. Dans ce cas, vous attribuez une couleur à chaque sommet. Le shader colorierait alors chaque pixel d'un polygone en interpolant entre les couleurs des trois sommets.
Les couleurs des sommets peuvent aussi parfois être intéressantes en combinaison avec des textures. Lorsque vous souhaitez utiliser un algorithme d'ombrage comme Gouraud Shading , vous calculez simplement l'intensité lumineuse sur chaque sommet, attribuez la couleur de la lumière au sommet comme couleur de sommet, et lorsque vous rendez la texture, vous multipliez la valeur de couleur de chaque pixel de texture avec les couleurs interpolées. Cela vous permet de calculer les sources de lumière dans le vertex shader au lieu du pixel shader. Ceci est généralement beaucoup plus rapide, car le vertex shader est généralement exécuté beaucoup moins fréquemment.
la source
En théorie, Vertex Color permet de colorer un modèle sans avoir à se soucier des textures. Ceci est assez courant en CAD.
En pratique, c'est juste un emplacement supplémentaire que vous pouvez utiliser pour pousser des données dans le sommet, que vous utilisez ensuite dans le vertex shader pour faire des trucs fous .
C'est ce que je pensais, lorsque j'ai commencé avec la 3D. J'ai vite compris que j'avais tort .
Vous pouvez considérer un sommet comme un blob de données qui constitue un coin d'un triangle que vous souhaitez peindre à l'écran (et ni la partie "coin" ni les parties "triangle", "peinture" ou "écran" ne sont toujours vraies) ). La position est un aspect optionnel de ce blob de données que nous appelons Vertex.
Vous pouvez faire beaucoup en attachant des données supplémentaires au sommet. L'exemple le plus célèbre est que vous pouvez ajouter des coordonnées uv pour dessiner une texture sur ce triangle. Vous (généralement) ne pouvez pas décider quelle partie d'une texture dessiner sur le triangle si vous n'avez qu'un point - vous avez également besoin de coordonnées de texture.
D'autres exemples standard de ce qui se trouve dans ce blob sont les normales et les tangentes. Ce qui est important, c'est que tous sont facultatifs, y compris le poste. Vertex Color n'est qu'une de ces entrées optionnelles que vous pouvez utiliser ou abuser pour créer une jolie image à l'écran.
la source
Les sommets peuvent avoir des couleurs, c'est une propriété tout comme la normale.
Dans les environnements 3D, un triangle est coloré en fonction des informations de couleur de ses sommets. Les fragments les plus proches du sommet A en obtiennent la couleur, les plus proches du sommet B obtiennent le col de B, et la couleur interpole entre les 2.
Il fonctionne de la même manière que l'éclairage par sommet
C'est un moyen simple d'ajouter des couleurs à un modèle sans utiliser de texture.
la source
Il y a déjà des réponses solides ici - je veux juste faire un carillon avec une autre façon courante de voir les couleurs de vertex utilisées:
Varier les couleurs des objets (ou d'autres attributs) dans un même appel par lots / tirages.
Vous verrez cela utilisé dans le rendu des systèmes de particules, du texte et des sprites groupés (généralement classés).
Imaginez que vous ayez un émetteur de particules qui génère des particules avec une couleur de départ aléatoire, ou qui s'estompe à 0 alpha pendant la durée de vie des particules. Si nous devions utiliser des uniformes de shader pour envoyer ces données de couleur, nous aurions besoin de dessiner chaque particule de couleur différente dans son propre appel de dessin, ce qui rend le système de particules beaucoup plus cher. Au lieu de cela, nous pouvons faire cuire ces couleurs dans les données de sommet pour les particules et rendre l'ensemble du lot en un seul appel.
Unity semble utiliser cette technique pour la variation de couleur des particules, ainsi que pour colorer des caractères individuels dans un TextMesh ou des Sprites rendus ensemble dans un lot.
Je crois que vous pouvez faire quelque chose de similaire avec l'instanciation de la géométrie, mais je ne sais pas comment les deux se comparent en termes de performances. Il est possible qu'aujourd'hui, ce type de modification instanciée des couleurs des sommets soit plus un maintien pour prendre en charge le matériel pré-OpenGL 3.1 / DX9 comme certains appareils mobiles, plutôt qu'une meilleure pratique pour les PC modernes. Je serais heureux de recevoir les commentaires de personnes qui ont effectué plus de réglages de performances avec des lots et des instanciations pour aider à déterminer si ces techniques ont remplacé les couleurs de vertex à cette fin. :)
la source