texbem - ps
Appliquez une fausse transformation de carte de l’environnement de bosse. Pour ce faire, modifiez les données d’adresse de texture du registre de destination, à l’aide des données de perturbation d’adresse (du,dv) et d’une matrice d’environnement de bosse 2D.
Syntaxe
texbem 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 |
---|---|---|---|---|---|---|---|---|---|
texbem | x | x | x |
Les données de couleur rouge et vert dans le registre src sont interprétées comme les données de perturbation (du,dv).
Cette instruction transforme les composants rouges et verts dans le registre source à l’aide de la matrice de mappage d’environnement de bosses 2D. Le résultat est ajouté au jeu de coordonnées de texture correspondant au numéro de registre de destination et est utilisé pour échantillonner l’étape de texture actuelle.
Cette opération interprète toujours du et dv comme des quantités signées. Pour les versions 1_0 et 1_1, le modificateur d’entrée de mise à l’échelle signée du registre source (_bx2) n’est pas autorisé sur l’argument d’entrée.
Cette instruction produit des résultats définis lorsque les textures d’entrée contiennent des données de format signé. Les données de format mixte fonctionnent uniquement si les deux premiers canaux contiennent des données signées. Pour plus d’informations sur les formats de surface, consultez D3DFORMAT.
Cela peut être utilisé pour diverses techniques basées sur la perturbation d’adresse, y compris le mappage d’environnement par pixel factice et l’éclairage diffus (mappage de bosses).
Lorsque vous utilisez cette instruction, les registres de textures doivent suivre la séquence suivante.
// The texture assigned to stage t(n) contains the (du,dv) data
// The texture assigned to stage t(m) is sampled
tex t(n)
texbem t(m), t(n) where m > n
Les calculs effectués dans l’instruction sont illustrés ci-dessous.
// 1. New values for texture addresses (u',v') are calculated
// 2. Sample the texture using (u',v')
u' = TextureCoordinates(stage m)u + D3DTSS_BUMPENVMAT00(stage m)*t(n)R + D3DTSS_BUMPENVMAT10(stage m)*t(n)G v' = TextureCoordinates(stage m)v + D3DTSS_BUMPENVMAT01(stage m)*t(n)R + D3DTSS_BUMPENVMAT11(stage m)*t(n)G t(m)RGBA = TextureSample(stage m)
utilisation de (u',v') comme coordonnées
Enregistrer les données qui ont été lues par une instruction texbem - ps ou texbeml - ps ne peut pas être lue ultérieurement, sauf par une autre instruction texbem - ps ou texbeml - ps.
// This example demonstrates the validation error caused by t0 being reread:
ps_1_1
tex t0
texbem t1, t0
add r0, t1, t0
(Instruction Error) (Statement 4) Register data that has been read by
texbem or texbeml instruction cannot be read by other instructions
Exemples
Voici un exemple de nuanceur avec les mappages de textures identifiés et les étapes de texture identifiées.
ps_1_1
tex t0 ; Define t0 to get a 2-tuple DuDv
texbem t1, t0 ; Compute (u',v')
; Sample t1 using (u',v')
mov r0, t1 ; Output result
texbem nécessite les textures suivantes dans les étapes de texture suivantes.
- L’étape 0 se voit attribuer une carte de bosses avec des données de perturbation (du, dv).
- La phase 1 utilise une carte de textures avec des données de couleur.
- Cette instruction définit les données de matrice sur la phase de texture échantillonnées.
- Cela diffère de la fonctionnalité du pipeline de fonctions fixes où les données de perturbation et les matrices occupent la même étape de texture.
Rubriques connexes