Partager via


Modificateurs pour les ps_2_0 et les versions ultérieures

Les modificateurs d’instruction affectent le résultat de l’instruction avant qu’elle ne soit écrite dans le registre de destination.

Cette section contient des informations de référence pour les modificateurs d’instructions implémentés par le nuanceur de pixels version 2_0 et ultérieures.

Nom Syntaxe 2_0 2_x 2_sw 3_0 3_sw
Centroïde _Centroïde x x x x x
Partial_Precision _Pp x x x x x
Saturer _Sam x x x x x

 

Centroïde

Le modificateur centroïde est un modificateur facultatif qui restreint l’interpolation d’attribut dans la plage de la primitive lorsqu’un centre de pixels à plusieurs échantillons n’est pas couvert par la primitive. Cela peut être vu dans l’échantillonnage centroïde.

Vous pouvez appliquer le modificateur centroïde à une instruction d’assembly, comme illustré ici :

dcl_texcoord0_centroid v0

Vous pouvez également appliquer le modificateur centroïde à une sémantique, comme illustré ici :

float4 TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0
{
    return tex2D( PointSampler, TexCoord );
}

En outre, tout registre de couleurs d’entrée (v#) déclaré avec une sémantique de couleur aura automatiquement le centroïde appliqué. L’exactitude des dégradés calculés à partir d’attributs qui sont échantillonnées centroïdes n’est pas garantie.

Précision partielle

Le modificateur d’instruction de précision partielle (_pp) indique les zones où la précision partielle est acceptable, à condition que l’implémentation sous-jacente la prenne en charge. Les implémentations sont toujours libres d’ignorer le modificateur et d’effectuer les opérations affectées en toute précision.

Le modificateur _pp peut se produire dans deux contextes :

  • Sur une déclaration de coordonnées de texture pour permettre la transmission des coordonnées de texture au nuanceur de pixels sous forme de précision partielle. Cela permet, par exemple, d’utiliser des coordonnées de texture pour relayer les données de couleur vers le nuanceur de pixels, ce qui peut être plus rapide avec une précision partielle qu’avec une précision totale dans certaines implémentations. En l’absence de ce modificateur, les coordonnées de texture doivent être transmises en toute précision.
  • Sur n’importe quelle instruction, y compris les instructions de chargement de texture. Cela indique que l’implémentation est autorisée à exécuter l’instruction avec une précision partielle et à stocker un résultat de précision partielle. En l’absence d’un modificateur explicite, l’instruction doit être exécutée avec une précision totale (quelle que soit la précision d’entrée).

Exemples :

dcl_texcoord0_pp t1
cmp_pp r0, r1, r2, r3

Saturer :

Le modificateur d’instruction saturé (_sat) sature (ou serre) le résultat de l’instruction dans la plage [0, 1] avant d’écrire dans le registre de destination.

Le modificateur d’instruction _sat peut être utilisé avec n’importe quelle instruction, à l’exception des instructions frc - ps, sincos - ps et n’importe quelle instruction tex*.

Pour ps_2_0, ps_2_x et ps_2_sw, le modificateur d’instructions _sat ne peut pas être utilisé avec l’écriture d’instructions dans des registres de sortie (registre de couleur de sortie ou registre de profondeur de sortie). Cette restriction ne s’applique pas aux ps_3_0 et versions ultérieures.

Exemple :

dp3_sat r0, v0, c1

Instructions du nuanceur de pixels