Phase Vertex-shader

L’étape de nuanceur de vertex (VS) traite les sommets de l’assembleur d’entrée, en effectuant des opérations par vertex telles que les transformations, l’apparence, le morphisme et l’éclairage par sommet. Les nuanceurs de vertex fonctionnent toujours sur un seul sommet d’entrée et produisent un sommet de sortie unique. L’étape du nuanceur de vertex doit toujours être active pour que le pipeline s’exécute. Si aucune modification ou transformation de vertex n’est requise, un nuanceur de vertex pass-through doit être créé et défini sur le pipeline.

Nuanceur de vertex

Chaque vertex d’entrée du nuanceur de vertex peut être composé de 16 vecteurs 32 bits (jusqu’à 4 composants chacun) et chaque vertex de sortie peut comprendre jusqu’à 16 vecteurs à 4 composants 32 bits. Tous les nuanceurs de vertex doivent avoir au moins une entrée et une sortie, ce qui peut être aussi peu qu’une valeur scalaire.

L’étape du nuanceur de vertex peut consommer deux valeurs générées par le système à partir de l’assembleur d’entrée : VertexID et InstanceID (voir Sémantique de valeur système). Étant donné que VertexID et InstanceID sont tous deux significatifs au niveau du vertex, et que les ID générés par le matériel ne peuvent être introduits que dans la première étape qui les comprend, ces valeurs d’ID ne peuvent être transmises qu’à l’étape du nuanceur de vertex.

Les nuanceurs de vertex sont toujours exécutés sur tous les vertex, y compris sur les sommets adjacents dans les topologies primitives d’entrée avec adjacence. Le nombre de fois où le nuanceur de vertex a été exécuté peut être interrogé à partir du processeur à l’aide de la statistique du pipeline VSInvocations.

Un nuanceur de vertex peut effectuer des opérations d’échantillonnage de charge et de texture où les dérivés d’espace d’écran ne sont pas nécessaires (à l’aide des fonctions intrinsèques HLSL : Sample (objet de texture HLSL DirectX),SampleCmpLevelZero (objet de texture HLSL DirectX) et SampleGrad (objet de texture HLSL DirectX)).