Share via


sample_c (sm4 - asm)

Effectue un filtre de comparaison.

sample_c[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource.r, srcSampler, srcReferenceValue
Élément Description
dest
[in] L’adresse des résultats de l’opération.
srcAddress
[in] Un ensemble de coordonnées de texture. Pour plus d’informations, consultez l’exemple d’instruction.
srcResource
[in] Un registre de texture. Pour plus d’informations, consultez l’exemple d’instruction. Doit être .r swizzle.
srcSampler
[in] Un registre de l’échantillonneur. Pour plus d’informations, consultez l’exemple d’instruction.
srcReferenceValue
[in] Un registre avec un seul composant sélectionné, qui est utilisé dans la comparaison.

Notes

L’objectif principal de cette instruction est de fournir un bloc de construction pour le filtrage de la profondeur en fonction du pourcentage et de la proximité. Le « c » dans sample_c signifie Comparaison.

Les opérandes de sample_c sont identiques à l’exemple d’instruction, sauf qu’il existe un opérande source float32 supplémentaire, srcReferenceValue, qui doit être un registre à composante unique sélectionné ou un littéral scalaire.

Le paramètre srcResource doit avoir un swizzle .r (rouge). sample_c opère exclusivement sur le composant rouge et retourne une valeur unique. Le fichier .r swizzle sur srcResource indique que le résultat scalaire est répliqué sur tous les composants.

L’ordre des opérations est srcReferenceValue {ComparisonFunction} texel.R.

Lorsqu’une mémoire tampon de profondeur est définie comme texture d’entrée, la valeur de profondeur s’affiche dans le composant rouge.

Si cette instruction est utilisée avec une ressource qui n’est pas une Texture1D/2D/2DArray/Cube/CubeArray, elle produit des résultats non définis.

Lorsque cette instruction est exécutée, le matériel d’échantillonnage utilise la fonction ComparisonFunction de l’échantillonneur actuel pour comparer srcReferenceValue à la valeur du composant Rouge pour la ressource source à chaque emplacement « tap » (texel) que le filtre de texture actuellement configuré couvre, en fonction des coordonnées fournies dans srcAddress.

La comparaison se produit après que srcReferenceValue a été quantifiée à la précision du format de texture, exactement de la même façon que z est quantifié à la précision de la mémoire tampon de profondeur avant la comparaison de profondeur au test de visibilité de fusion de sortie. Cela inclut la limitation de la plage de format (par exemple [0..1] pour un format UNORM).

Le composant Rouge du texel source est comparé à la valeur quantifiée srcReferenceValue. Pour les texels qui tombent hors de la ressource, la valeur du composant Rouge est déterminée en appliquant les modes d’adresse (et BorderColorR si en mode bordure) à partir de l’échantillonneur. La comparaison respecte toutes les règles de comparaison à virgule flottante D3D11, dans le cas où le format de texture est à virgule flottante.

Chaque comparaison réussie retourne 1,0f comme valeur du composant Rouge pour le texel, et chaque comparaison échouée retourne 0,0f comme valeur Rouge pour la texture. Le filtrage se produit ensuite exactement comme spécifié par les états de l’échantillonneur, fonctionnant uniquement dans le composant Rouge et retournant un seul résultat de filtre scalaire au nuanceur, répliqué à tous les composants dest masqués.

L’utilisation de sample_c est orthogonale à tous les autres contrôles de filtrage à usage général. sample_c fonctionne en toute transparence avec les autres modes de filtre à usage général. sample_c modifie le comportement des filtres à usage général de sorte que les valeurs filtrées deviennent toutes 1.0f ou 0.0f en raison des résultats de comparaison.

Récupération à partir d’un emplacement d’entrée auquel rien n’est lié retourne 0 pour tous les composants.

Pour plus d’informations, consultez l’exemple d’instruction.

Cette instruction s’applique aux étapes de nuanceur suivantes :

Nuanceur de sommets Nuanceur de géométrie Nuanceur de pixels
x

Modèle de nuanceur minimal

Cette fonction est prise en charge dans les modèles de nuanceur suivants.

Modèle de nuanceur Pris en charge
Modèle 5 de nuanceur oui
Modèle 4.1 de nuanceur oui
Modèle 4 de nuanceur oui
Modèle 3 de nuanceur (DirectX HLSL) non
Modèle 2 de nuanceur (DirectX HLSL) non
Modèle 1 de nuanceur (DirectX HLSL) non

Assembly du modèle 4 de nuanceur (DirectX HLSL)