IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Tutoriels Direct3D 10 : Shaders

logo msdn


précédentsommairesuivant

III-11. Tutoriel 11 : Vertex shaders

tuto11

III-11-a. Résumé

Ce tutoriel traite des possibilités du vertex shader. Il est conçu pour montrer à l'utilisateur les capacités de manipulation des sommets. A la fin de ce tutoriel, nous aurons un effet de vague imposé au modèle du personnage du tutoriel précédent. Cet effet est créé entièrement par le GPU avec aucune interaction du CPU avec les données.

III-11-b. Source

(SDK root)\Samples\C++\Direct3D10\Tutorials\Tutorial11

III-11-c. Shader de sommet

Les tutoriaux précédents ont déjà montrés l'utilisation du vertex shader, ce tutoriel va accentuer ce stage dans le pipeline. Les sommets contiennent différents types d'informations telles que les coordonnées, les normales, les coordonnées de texture, les matériaux, les couleurs, et même des données personnalisées. Par exemple, si vous regardez l'exemple ParticlesGS, vous verrez que chaque sommet passé dans le pipeline contiendra aussi une variable appelée Timer, laquelle peut faire varier l'apparence des particules sur le temps.

Le but du vertex shader est de décharger les calculs intensifs du CPU, vers le GPU. Ceci libère le CPU pour accomplir d'autres tâches dans l'application. Par exemple, les jeux déchargent parfois les traitements graphiques vers le GPU, pendant que l'intelligence artificielle et la physique sont effectuées par le CPU.

Ce tutoriel est conçu pour montrer les possibilités du vertex shader, plutôt que d'apprendre des techniques spécifiques. Il est encouragé d'essayer de nouveaux effets et de faire des essais en fonction des résultats. Pour les méthodes spécifiques pour accomplir les effets, se référer aux exemples inclus avec le SDK. Cependant, notez qu'ils sont bien plus complexes et appliquent des concepts bien plus avancés.

III-11-d. Création de l'effet de vague

L'effet de vague sur le modèle est créé en modulant la position de x de chaque point par une onde sinusoïdale. L'onde sinusoïdale est contrôlée par la position y, de ce fait créant une vague le long du modèle. Cependant, pour faire bouger la vague et donner l'apparence d'animation, l'onde sinusoïdale est également modulée par une variable de temps.

Finalement, il y a une variable pour contrôler le nombre de déplacement par le vertex shader, et ceci est la variable d'ondulation. Cette variable est passée dans le shader et contrôlée par un curseur graphique.

 
Sélectionnez
output.Pos.x += sin( output.Pos.y*0.1f + Time )*Waviness;

Après que cette manipulation soit effectuée, le vertex shader devra toujours préparer les sommets pour affichage. Donc, il y a toujours la transformation de la matrice de monde, de la matrice de vue, et la matrice de projection. Cependant, on choisi de faire la transformation de monde avant l'effet de vague, ainsi il sera plus facile de déterminer les effets sur l'écran, car les axes x et y sont apparents.

 
Sélectionnez
output.Pos = mul( output.Pos, View );
output.Pos = mul( output.Pos, Projection );

précédentsommairesuivant

Cet article est une traduction d'un article original de Microsoft en anglais. Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Microsoft. Lire l'article original Ici.