texcrd - ps
Copie les données de coordonnées de texture du registre d’itérateur de coordonnées de texture source en tant que données de couleur dans le registre de destination.
Syntaxe
texcrd dst, src |
---|
where
- dst est le registre de destination.
- src est un registre source.
Notes
Versions du nuanceur de pixels | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texcrd | x |
Cette instruction interprète les données de coordonnées comme des données de couleur (RVBA).
Aucune texture n’est échantillonné par cette instruction. Seules les coordonnées de texture définies à cette étape de texture sont pertinentes.
Lorsque vous utilisez texcrd, gardez à l’esprit les détails suivants sur la façon dont les données sont copiées du registre source vers le registre de destination. Le registre de coordonnées de texture source (t#) contient les données dans la plage [-D3DCAPS9. MaxTextureRepeat, D3DCAPS9. MaxTextureRepeat], tandis que le registre de destination (r#) peut contenir des données uniquement dans la plage (probablement plus petite) [-D3DCAPS9. PixelShader1xMaxValue, D3DCAPS9. PixelShader1xMaxValue]. Notez que pour le nuanceur de pixels version 1_4, D3DCAPS9. PixelShader1xMaxValue doit être un minimum de huit. L’instruction texcrd, dans le processus de serrage des données sources qui ne sont pas à portée du registre de destination, est susceptible de se comporter différemment sur différents matériels. Le premier matériel du nuanceur de pixels version 1_4 sur le marché effectue une pince spéciale pour les valeurs en dehors de la plage. Cette pince est conçue pour produire un nombre qui peut tenir dans le registre de destination, mais également pour préserver le comportement d’adressage de texture pour les données hors plage (voir D3DTEXTUREADDRESS) si les données devaient ensuite être utilisées pour l’échantillonnage de texture. Toutefois, les nouveaux matériels de différents fabricants peuvent ne pas présenter ce comportement et peuvent simplement découper les données pour s’adapter à la plage de registres de destination. Par conséquent, le plan d’action le plus sûr lors de l’utilisation du nuanceur de pixels version 1_4 texcrd consiste à fournir des données de coordonnées de texture uniquement dans le nuanceur de pixels qui se trouve déjà dans la plage [-8,8] afin de ne pas vous fier à la façon des pinces matérielles.
Contrairement à texcoord_, texcrd ne serre pas les valeurs comprises entre 0 et 1.
Règles d’utilisation de texcrd :
- Le même modificateur .xyz ou .xyw doit être appliqué à chaque lecture d’un registre t(n) individuel dans une instruction texcrd ou texld.
- Le quatrième résultat de canal de texcrd est non défini/défini dans tous les cas.
- Le troisième canal n’est pas défini/non défini pour le cas xyw_dw.
Exemples
L’ensemble complet de syntaxe autorisée pour texcrd, en tenant compte de toutes les combinaisons valides de modificateur/sélecteur de source et de masque d’écriture de destination, est illustré ci-dessous. Notez que les notations .rgba et .xyzw peuvent être utilisées de manière interchangeable.
Copie les trois premiers canaux du registre d’itérateur de coordonnées de texture, t(n), dans r(m). Le quatrième canal de r(m) est non initialisé.
texcrd r(m).rgb, t(n).xyz
// Produces the same result as the previous instruction
texcrd r(m).rgb, t(n)
Place les premier, deuxième et quatrième composants de t(n) dans les trois premiers canaux de r(m). Le quatrième canal de r(m) est non initialisé.
texcrd r(m).rgb, t(n).xyw
Voici un exemple de division projective utilisant le modificateur _dw.
Cet exemple montre comment copier x/w et y/w de t(n) dans les deux premiers canaux de r(m). Les troisième et quatrième canaux de r(m) ne sont pas initialisés. Toutes les données précédemment écrites dans le troisième canal de r(m) seront perdues. Les données du quatrième canal de r(m) sont perdues en raison du marqueur de phase. Pour la version 1_4, l’indicateur D3DTTFF_PROJECTED est ignoré.
texcrd r(m).rg, t(n)_dw.xyw
Rubriques connexes