Vertex shader vs Fragment Shader [dupliquer]

cette question a déjà une réponse ici:

  • Qu'est-ce que le Vertex et les pixels shaders? 5 réponses

j'ai lu quelques tutoriels concernant Cg, mais une chose n'est pas tout à fait claire pour moi. Quelle est exactement la différence entre le vertex et les shaders de fragment? Et pour quelles situations est l'un mieux que l'autre?

89
demandé sur adivasile 2010-12-12 13:41:29

5 réponses

un fragment shader est le même que pixel shader.

une des principales différences est qu'un shader vertex peut manipuler les attributs des sommets. qui sont les points de coin de vos polygones.

le shader de fragment d'autre part prend soin de la façon dont les pixels entre les sommets regardent. Ils sont interpolés entre les sommets définis suivant des règles spécifiques.

Par exemple: si vous voulez que votre polygone à complètement rouge, vous définissez tous les sommets rouge. Si vous voulez des effets spécifiques, comme un dégradé entre les sommets, vous devez le faire dans le fragment shader.

autrement dit:

le vertex shader fait partie des premières étapes dans le pipeline graphique, quelque part entre la transformation de coordonnées du modèle et le découpage du polygone je pense. À ce stade, rien n'est vraiment fini.

cependant, le fragment / pixel shader est partie de l'étape de rastérisation, où l'image est calculée et les pixels entre les sommets sont remplis ou "colorés".

vient de lire à propos de la filière Graphique ici et tout se révèlera: http://en.wikipedia.org/wiki/Graphics_pipeline

158
répondu The Surrican 2013-05-26 19:46:03

Vertex shader est fait sur chaque vertex, tandis que fragment shader est fait sur chaque pixel. Le shader de fragment est appliqué après le shader de sommet. En savoir plus sur les shaders GPU pipeline link text

25
répondu BЈовић 2010-12-12 18:25:49

NVIDIA CG Book

la transformation de Vertex est la première étape de traitement dans le pipeline de matériel graphique. La transformation du Vertex exécute une séquence d'opérations mathématiques sur chaque vertex. Ces opérations comprennent la transformation de la position du vertex en une position de l'écran pour l'utilisation par le rasterizer, générant des coordonnées de texture pour la texturation, et l'éclairage du vertex pour déterminer sa couleur.

le les résultats de la rastérisation sont un ensemble de pixels ainsi qu'un ensemble de fragments. Il n'y a pas de relation entre le nombre de Sommets qu'une primitive a et le nombre de fragments qui sont générés quand elle est rastérisée. Par exemple, un triangle composé de seulement trois sommets pourrait occuper tout l'écran, et donc générer des millions de fragments!

plus tôt, nous vous avons dit de penser à un fragment comme un pixel si vous ne saviez pas exactement ce qu'était un fragment. À ce stade, cependant, la distinction entre un fragment et un pixel devient important. Le terme pixel signifie "élément d'image"."Un pixel représente le contenu de la zone tampon à un endroit précis, comme la couleur, la profondeur, et toute autre valeur associée à cet endroit. Un fragment est l'État requis potentiellement pour mettre à jour un pixel particulier.

le terme "fragment" est utilisé parce que la rastérisation brise chaque primitif géométrique, tel qu'un triangle, en fragments de taille pixel pour chaque pixel que la couverture primitive. Un fragment a une localisation de pixel associée, une valeur de profondeur, et un ensemble de paramètres interpolés tels qu'une couleur, une couleur secondaire (speculaire), et un ou plusieurs ensembles de coordonnées de texture. Ces différents paramètres interpolés sont dérivés des sommets transformés qui constituent la primitive géométrique particulière utilisée pour générer les fragments. Vous pouvez penser à un fragment comme un " pixel potentiel."Si un fragment passe les différents tests de rastérisation (dans l'étape des opérations raster, qui est décrite sous peu), le fragment met à jour un pixel dans la zone tampon.

19
répondu user242564 2017-05-09 14:02:09

les Shaders de sommet et les Shaders de Fragment sont tous les deux des caractéristiques de l'implémentation en 3-D qui n'utilise pas le rendu par pipeline fixe.Dans tout Rendu 3-D, les shaders de sommet sont appliqués avant les shaders de fragment / pixel.

vertex shaders fonctionne sur chaque vertex.si vous avez un maillage polygonal fixe et que vous voulez le déformer dans une shader, vous devez l'implémenter dans vertex shader.I. e tout changement physique dans les appreances vertex peut être fait dans les shaders vertex.

Fragment shaders prend la sortie du vertex shader et couleurs assocaites, la valeur de profondeur d'un pixel, etc.après ces opérations, le framgment est envoyé Framebuffer pour affichage à l'écran.

certaines opérations comme par exemple le calcul de l'éclairage u peut effectuer dans le vertex shader aussi bien que freagment shader. mais frragment shader fournit de meilleurs résultats que le vertex shader.

4
répondu user2439483 2013-05-31 15:53:21

dans le rendu d'images via du matériel 3D, vous avez typiquement un maillage (point, polygones, lignes) qui sont définis par des sommets. Pour manipuler les sommets individuellement typiquement pour des mouvements dans un modèle ou des vagues dans un océan, vous pouvez utiliser des shaders de sommet. Ces sommets peuvent avoir la couleur statique ou la couleur assignée par les textures, pour manipuler les couleurs de sommet vous utilisez des shaders de fragment. À la fin du pipeline lorsque la vue passe à l'écran, vous pouvez également utiliser des shaders de fragment.

2
répondu whatnick 2010-12-12 10:50:23