Syntaxe
typedef enum D3D12_FILTER
{
D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 1,
D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 4,
D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 5,
D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 16,
D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 17,
D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 20,
D3D12_FILTER_MIN_MAG_MIP_LINEAR = 21,
D3D12_FILTER_ANISOTROPIC = 85,
D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 128,
D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 129,
D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 132,
D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 133,
D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 144,
D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 145,
D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 148,
D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 149,
D3D12_FILTER_COMPARISON_ANISOTROPIC = 213,
D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 256,
D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 257,
D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 260,
D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 261,
D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 272,
D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 273,
D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 276,
D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 277,
D3D12_FILTER_MINIMUM_ANISOTROPIC = 341,
D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 384,
D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 385,
D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 388,
D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 389,
D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 400,
D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 401,
D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 404,
D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 405,
D3D12_FILTER_MAXIMUM_ANISOTROPIC = 469
} D3D12_FILTER
Constantes
| Constante | Description |
|---|---|
| D3D12_FILTER_MIN_MAG_MIP_POINT | Utilise l’échantillonnage par point pour la minification, l’agrandissement et l’échantillonnage de niveau mip. |
| D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR | Utilise l’échantillonnage par point pour la minification et l’agrandissement ; utilise l’interpolation linéaire pour l’échantillonnage de niveau mip. |
| D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT | Utilise l’échantillonnage par point pour la minification ; utilise l’interpolation linéaire pour l’agrandissement ; utilise l’échantillonnage par point pour l’échantillonnage de niveau mip. |
| D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR | Utilise l’échantillonnage par point pour la minification ; utilise l’interpolation linéaire pour l’agrandissement et l’échantillonnage de niveau mip. |
| D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT | Utilise l’interpolation linéaire pour la minification ; utilise l’échantillonnage par point pour l’agrandissement et l’échantillonnage de niveau mip. |
| D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR | Utilise l’interpolation linéaire pour la minification ; utilise l’échantillonnage par point pour l’agrandissement ; utilise l’interpolation linéaire pour l’échantillonnage de niveau mip. |
| D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT | Utilise l’interpolation linéaire pour la minification et l’agrandissement ; utilise l’échantillonnage par point pour l’échantillonnage de niveau mip. |
| D3D12_FILTER_MIN_MAG_MIP_LINEAR | Utilise l’interpolation linéaire pour la minification, l’agrandissement et l’échantillonnage de niveau mip. |
| D3D12_FILTER_ANISOTROPIC | Utilise l’interpolation anisotrope pour la minification, l’agrandissement et l’échantillonnage de niveau mip. |
| D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT | Utilise l’échantillonnage par point pour la minification, l’agrandissement et l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR | Utilise l’échantillonnage par point pour la minification et l’agrandissement ; utilise l’interpolation linéaire pour l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT | Utilise l’échantillonnage par point pour la minification ; utilise l’interpolation linéaire pour l’agrandissement ; utilise l’échantillonnage par point pour l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR | Utilise l’échantillonnage par point pour la minification ; utilise l’interpolation linéaire pour l’agrandissement et l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT | Utilise l’interpolation linéaire pour la minification ; utilise l’échantillonnage par point pour l’agrandissement et l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR | Utilise l’interpolation linéaire pour la minification ; utilise l’échantillonnage par point pour l’agrandissement ; utilise l’interpolation linéaire pour l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT | Utilise l’interpolation linéaire pour la minification et l’agrandissement ; utilise l’échantillonnage par point pour l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR | Utilise l’interpolation linéaire pour la minification, l’agrandissement et l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_COMPARISON_ANISOTROPIC | Utilise l’interpolation anisotrope pour la minification, l’agrandissement et l’échantillonnage de niveau mip. Compare le résultat à la valeur de comparaison. |
| D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT | Récupère le même ensemble de texels que D3D12_FILTER_MIN_MAG_MIP_POINT et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR | Récupère le même ensemble de texels que D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT | Récupère le même ensemble de texels que D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR | Récupère le même ensemble de texels que D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT | Récupère le même ensemble de texels que D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR | Récupère le même ensemble de texels que D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT | Récupère le même ensemble de texels que D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR | Récupère le même ensemble de texels que D3D12_FILTER_MIN_MAG_MIP_LINEAR et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MINIMUM_ANISOTROPIC | Récupère le même ensemble de texels que D3D12_FILTER_ANISOTROPIC et, au lieu de les filtrer, retourne le minimum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du minimum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT | Récupère le même ensemble de texels que D3D12_FILTER_MIN_MAG_MIP_POINT et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR | Récupère le même ensemble de texels que D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT | Récupère le même ensemble de texels que D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR | Récupère le même ensemble de texels que D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT | Récupère le même ensemble de texels que D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR | Récupère le même ensemble de texels que D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT | Récupère le même ensemble de texels que D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR | Récupère le même ensemble de texels que D3D12_FILTER_MIN_MAG_MIP_LINEAR et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
| D3D12_FILTER_MAXIMUM_ANISOTROPIC | Récupère le même ensemble de texels que D3D12_FILTER_ANISOTROPIC et, au lieu de les filtrer, retourne le maximum des texels. Les texels pondérés à 0 pendant le filtrage ne sont pas pris en compte dans le calcul du maximum. Vous pouvez interroger la prise en charge de ce type de filtre à partir du membre MinMaxFiltering de la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1. |
Remarques
Cette énumération est utilisée par la structure D3D12_SAMPLER_DESC.Remarque Si vous utilisez des types de filtres différents pour le filtre de minification et le filtre d’agrandissement, un comportement non défini se produit dans certains cas où le choix entre l’agrandissement et la minification est ambigu. Pour éviter ce comportement non défini, utilisez des modes de filtre qui appliquent des opérations de filtrage similaires pour la minification et l’agrandissement (ou utilisez le filtrage anisotrope, qui évite également ce problème).
Lors de l’échantillonnage de texture, un ou plusieurs texels sont lus et combinés (c’est ce qu’on appelle le filtrage) pour produire une valeur unique. L’échantillonnage par point lit un seul texel, tandis que l’échantillonnage linéaire lit deux texels (extrémités) et interpole linéairement une troisième valeur entre ces extrémités.
Les fonctions d’échantillonnage de texture du langage Microsoft High Level Shader Language (HLSL) prennent également en charge le filtrage de comparaison lors de l’échantillonnage de texture. Le filtrage de comparaison compare chaque texel échantillonné à une valeur de comparaison. Le résultat booléen est fusionné de la même manière que pour le filtrage de texture normal.
Vous pouvez utiliser les fonctions intrinsèques HLSL d’échantillonnage de texture qui implémentent uniquement le filtrage de texture, ou les fonctions associées qui utilisent le filtrage de texture avec filtrage de comparaison.
Notez également les définitions suivantes :
#define D3D12_FILTER_REDUCTION_TYPE_MASK ( 0x3 )
#define D3D12_FILTER_REDUCTION_TYPE_SHIFT ( 7 )
#define D3D12_FILTER_TYPE_MASK ( 0x3 )
#define D3D12_MIN_FILTER_SHIFT ( 4 )
#define D3D12_MAG_FILTER_SHIFT ( 2 )
#define D3D12_MIP_FILTER_SHIFT ( 0 )
#define D3D12_ANISOTROPIC_FILTERING_BIT ( 0x40 )
#define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \
( ( D3D12_FILTER ) ( \
( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \
( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \
( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \
( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )
#define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \
( ( D3D12_FILTER ) ( \
D3D12_ANISOTROPIC_FILTERING_BIT | \
D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \
D3D12_FILTER_TYPE_LINEAR, \
D3D12_FILTER_TYPE_LINEAR, \
reduction ) ) )
#define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \
( ( D3D12_FILTER_TYPE ) \
( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
#define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \
( ( D3D12_FILTER_TYPE ) \
( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
#define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \
( ( D3D12_FILTER_TYPE ) \
( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) )
#define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \
( ( D3D12_FILTER_REDUCTION_TYPE ) \
( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) )
#define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \
( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON )
#define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \
( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \
( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \
( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \
( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) )
| Fonction d’échantillonnage de texture | Fonction d’échantillonnage de texture avec filtrage de comparaison |
|---|---|
| Sample | SampleCmp ou SampleCmpLevelZero |
Configuration requise
En-tête : d3d12_xs.h ou d3d12_x.hBibliothèque : d3d12_xs.lib ou d3d12_x.lib
Plateformes prises en charge : consoles XBOX Series et famille XBOX One
