2016-11-24 7 views
0

Je suis novice en OpenGL et j'essaie de comprendre les shaders de vertex et de fragment. Il semble que vous pouvez utiliser un vertex shader pour faire un dégradé si vous définissez la couleur que vous voulez pour chacun des vertices, mais il semble que vous pouvez aussi faire des dégradés en utilisant un fragment shader si vous utilisez la variable FragCoord, par exemple.OpenGL: Fragment vs Vertex shader pour les dégradés?

Ma question est, puisque vous semblez pouvoir faire des dégradés de couleurs en utilisant les deux types de shaders, lequel est préférable d'utiliser? Je suppose que les vertex shaders sont plus rapides ou quelque chose comme tout le monde semble les utiliser, mais je veux juste m'assurer.

+0

Cela dépend du type de dégradé. Si vous voulez juste un gradient linéaire (par face), utilisez le vertex shader et laissez le GPU faire l'interpolation. Pour les autres types, vous aurez surtout besoin du fragment shader. –

+0

Oui, par visage était ce que je voulais. Merci pour l'info – MysteryPancake

Répondre

0

... puisque tout le monde semble les utiliser

utilisant sommet et shaders de fragments sont obligatoires dans OpenGL moderne pour le rendu absolument tout. Donc tout le monde utilise les deux. C'est la responsabilité du vertex shader de calculer la couleur aux sommets, OpenGL de l'interpoler entre eux, et fragment shader pour écrire la valeur interpolée à la pièce jointe de couleur de sortie. † OK, vous pouvez également utiliser un shader de calcul avec imageStore, mais je parle ici du pipeline de rastérisation.