Question

Que sont les shaders de vertex et de pixel?

Quelle est la différence entre eux? Lequel est le meilleur?

Était-ce utile?

La solution

Un Pixel Shader est un composant GPU (unité de traitement graphique) pouvant être programmé pour fonctionner. par pixel et prenez soin de choses comme l'éclairage et la cartographie des bosses.

Un Vertex Shader est également un composant GPU et est également programmé à l'aide d'un langage d'assemblage spécifique. , comme les pixel shaders, mais sont orientés vers la géométrie de la scène et peuvent effectuer des tâches telles que l’ajout d’arêtes de silhouette cartoony aux objets, etc.

Ni est meilleur que l'autre, ils ont chacun leurs utilisations spécifiques. La plupart des cartes graphiques modernes prenant en charge DirectX 9 ou une version supérieure incluent ces fonctionnalités.

Il existe de nombreuses ressources sur le Web pour mieux comprendre comment utiliser ces éléments. NVidia et ATI sont en particulier de bonnes ressources pour les documents sur ce sujet.

Autres conseils

DirectX 10 et OpenGL 3 ont introduit le troisième type de géométrie.

Dans le rendu de l'ordre du pipeline -

Vertex Shader : prend un seul point et peut l'ajuster. Peut être utilisé pour élaborer des calculs d’allégement de sommets complexes ** comme configuration pour la prochaine étape et / ou pour déformer les points autour (oscillation, échelle, etc.).

chaque primitive résultante est transmise à la

Géométrie Shader : prend chaque primitive transformée (triangle, etc.) et peut effectuer des calculs. Cela peut ajouter de nouveaux points, les enlever ou les déplacer au besoin. Ceci peut être utilisé pour ajouter ou supprimer des niveaux de détail de manière dynamique dans un seul maillage de base, créer des maillages mathématiques basés sur un point (pour les systèmes de particules complexes) et d’autres tâches similaires.

chaque primitive résultante est convertie en ligne de balayage et chaque pixel couvert recouvre la plage

Pixel Shader (Fragment Shader dans OpenGL): calcule la couleur d'un pixel à l'écran en fonction des éléments transmis par le vertex shader, des textures liées et des données ajoutées par l'utilisateur. Cela ne peut pas du tout lire l'écran actuel, il suffit de déterminer la couleur / transparence que ce pixel devrait être pour la primitive actuelle.

ces pixels sont ensuite placés dans le tampon de dessin actuel (écran, tampon de fond, rendu en texture, peu importe)

Tous les shaders peuvent accéder à des données globales telles que la matrice de la vision du monde et le développeur peut transmettre des variables simples à utiliser pour l'éclairage ou à d'autres fins. Les shaders sont traités dans un langage de type assembleur, mais les versions modernes de DirectX et d'OpenGL ont des compilateurs de langage de haut niveau construits dans le style c, appelés respectivement HLSL et GLSL. NVidia dispose également d’un compilateur de shader appelé CG qui fonctionne sur les deux API.

[modifié pour refléter l'ordre incorrect que j'avais auparavant (Geometry- > Vertex- > Pixel), comme indiqué dans un commentaire.]

Il y a maintenant 3 nouveaux shaders utilisés dans DirectX 11 pour la tessellation. La nouvelle commande de matière complète est Vertex, Hull, Tessellation, Domaine, Géométrie, Pixel. Je n'ai pas encore utilisé ces nouveaux logiciels, alors ne vous sentez pas qualifiés pour les décrire avec précision.

Les shaders Vertex et Pixel fournissent différentes fonctions dans le pipeline graphique. Les vertex shaders prennent et traitent les données relatives aux vertex (positions, normales, texcoords).

Les shaders de pixels (ou plus précisément de fragments) prennent des valeurs interpolées à partir de celles traitées dans le vertex shader et génèrent des fragments de pixels. La plupart des " cool " les choses se font en pixel shaders. C’est à cet endroit que l’on cherche la texture et l’éclairage.

Spécifique à DirectX:

Shader:

Ensemble de programmes qui implémentent des fonctionnalités graphiques d'addition aux objets qui ne sont pas définis dans le pipeline de rendu fixe. De ce fait, nous pouvons avoir nos propres effets graphiques en fonction de nos besoins - nous ne sommes plus limités à des paramètres prédéfinis & # 8220; fixes & # 8221; opérations.

HLSL: (langage d'ombrage de haut niveau):

HLSL est un langage de programmation comme C ++, utilisé pour implémenter des shaders (Pixel Shaders / Vertex Shaders).

Vertex Shaders:

Un vertex shader est un programme exécuté sur le GPU de la carte graphique qui opère sur chaque sommet individuellement. Cela facilite la rédaction de notre propre algorithme personnalisé pour travailler avec le sommet.

Pixels Shaders:

Un pixel shader est un programme exécuté sur le GPU de la carte graphique lors de le processus de rastérisation pour chaque pixel. Cela nous donne la possibilité d'accéder / de manipuler directement des pixels individuels. Cet accès direct aux pixels nous permet d’obtenir divers effets spéciaux, tels que le multitexturation, l’éclairage par pixel, la profondeur de champ, la simulation des nuages, la simulation des incendies et des techniques d’ombrage sophistiquées.

Remarque: Vertex Shaders et Pixel Shaders (programmes) doivent être compilés à l'aide d'une version spécifique du compilateur avant utilisation. La compilation peut être effectuée comme si vous appeliez une API avec des paramètres obligatoires tels que le nom de fichier, la fonction d’entrée principale, etc.,

En termes de développement, un pixel shader est un petit programme qui agit individuellement sur chaque pixel, de la même manière qu'un vertex shader agit individuellement sur chaque sommet.

Ils peuvent être utilisés pour créer des effets spéciaux, des ombres, un éclairage, etc.

Etant donné que chaque pixel / sommet est exploité individuellement, ces shaders se prêtent à l’architecture hautement parallèle des processeurs graphiques modernes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top