Améliorer le rendu avec le High Level Shader Language
CHAPITRE 13
309
struct VertexInput
{
float4 Position : POSITION;
float2 TexCoord : TEXCOORD0;
};
Dans la structure précédente, vous constatez que deux sémantiques sont utilisées : une pour
la position du vertex et l’autre pour les coordonnées de texture qui lui sont associées. La
liste complète des sémantiques disponibles se trouve dans la documentation de DirectX,
le tableau 13-2 présente un court extrait de cette liste.
Procédez de la même manière pour les données en sortie du vertex shader (VertexOutput),
les données en entrée du pixel shader (PixelInput) et celles en sortie du pixel shader
(PixelOutput). Attention, la liste des sémantiques n’est pas la même pour chacune de ces
étapes.
Écrire un vertex shader
Vous savez à présent tout ce qu’il faut savoir pour écrire un premier vertex shader. Il
s’agit d’une simple fonction qui doit retourner un objet de type VertexOutput, qui est une
structure que vous avez normalement déclarée.
VertexOutput vertexShader(VertexInput input)
{
VertexOutput output;
WorldViewProjection = mul(mul(World, View), Projection);
output.Position = mul(Pos, WorldViewProjection);
output.TexCoord = input.TexCoord;
return(output);
}
Tableau 13-2 Sémantiques d’entrée pour vertex shader
Sémantique
Description
COLOR
Couleur diffuse ou spéculaire.
NORMAL
Normale au vertex.
POSITION
Position du vertex.
TEXCOORD
Coordonnées de texture associées au vertex.
Incompatibilité de versions
Certaines sémantiques ne sont pas toujours valables ou ne s’utilisent pas toujours de la même façon selon
la version des vertex shaders ou pixel shaders. Vous devrez donc faire attention à la version des shaders
que vous utiliserez lors de la compilation.
=Labat FM.book Page 309 Vendredi, 19. juin 2009 4:01 16
Précédent

- 330/366

Suivant