語法
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
常數
| 常數 | 描述 |
|---|---|
| D3D12_FILTER_MIN_MAG_MIP_POINT | 縮小、放大和 Mip 層級取樣皆使用點取樣。 |
| D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR | 縮小和放大使用點取樣;Mip 層級取樣使用線性內插。 |
| D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT | 縮小使用點取樣;放大使用線性內插;Mip 層級取樣使用點取樣。 |
| D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR | 縮小使用點取樣;放大和 Mip 層級取樣使用線性內插。 |
| D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT | 縮小使用線性內插;放大和 Mip 層級取樣使用點取樣。 |
| D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR | 縮小使用線性內插;放大使用點取樣;Mip 層級取樣使用線性內插。 |
| D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT | 縮小和放大使用線性內插;Mip 層級取樣使用點取樣。 |
| D3D12_FILTER_MIN_MAG_MIP_LINEAR | 縮小、放大和 Mip 層級取樣皆使用線性內插。 |
| D3D12_FILTER_ANISOTROPIC | 縮小、放大和 Mip 層級取樣皆使用非等向性內插。 |
| D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT | 縮小、放大和 Mip 層級取樣皆使用點取樣。將結果與比較值進行比較。 |
| D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR | 縮小和放大使用點取樣;Mip 層級取樣使用線性內插。將結果與比較值進行比較。 |
| D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT | 縮小使用點取樣;放大使用線性內插;Mip 層級取樣使用點取樣。將結果與比較值進行比較。 |
| D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR | 縮小使用點取樣;放大和 Mip 層級取樣使用線性內插。將結果與比較值進行比較。 |
| D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT | 縮小使用線性內插;放大和 Mip 層級取樣使用點取樣。將結果與比較值進行比較。 |
| D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR | 縮小使用線性內插;放大使用點取樣;Mip 層級取樣使用線性內插。將結果與比較值進行比較。 |
| D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT | 縮小和放大使用線性內插;Mip 層級取樣使用點取樣。將結果與比較值進行比較。 |
| D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR | 縮小、放大和 Mip 層級取樣皆使用線性內插。將結果與比較值進行比較。 |
| D3D12_FILTER_COMPARISON_ANISOTROPIC | 縮小、放大和 Mip 層級取樣皆使用非等向性內插。將結果與比較值進行比較。 |
| D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT | 擷取與 D3D12_FILTER_MIN_MAG_MIP_POINT 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR | 擷取與 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT | 擷取與 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR | 擷取與 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT | 擷取與 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR | 擷取與 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT | 擷取與 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR | 擷取與 D3D12_FILTER_MIN_MAG_MIP_LINEAR 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MINIMUM_ANISOTROPIC | 擷取與 D3D12_FILTER_ANISOTROPIC 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最小值。在篩選期間權重為 0 的紋素不會計入最小值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT | 擷取與 D3D12_FILTER_MIN_MAG_MIP_POINT 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR | 擷取與 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT | 擷取與 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR | 擷取與 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT | 擷取與 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR | 擷取與 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT | 擷取與 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR | 擷取與 D3D12_FILTER_MIN_MAG_MIP_LINEAR 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
| D3D12_FILTER_MAXIMUM_ANISOTROPIC | 擷取與 D3D12_FILTER_ANISOTROPIC 相同的紋素集合,但不進行篩選,而是傳回這些紋素的最大值。在篩選期間權重為 0 的紋素不會計入最大值。您可以從 D3D11_FEATURE_DATA_D3D11_OPTIONS1 結構的 MinMaxFiltering 成員查詢此篩選類型的支援。 |
備註
此列舉由 D3D12_SAMPLER_DESC 結構使用。注意 如果您對縮小和放大篩選使用不同的篩選類型,在某些無法明確判斷應進行放大或縮小的情況下,會發生未定義的行為。若要避免此未定義的行為,請使用在縮小和放大時都採用類似篩選作業的篩選模式 (或使用非等向性篩選,同樣可避免此問題)。
在紋理取樣期間,會讀取並組合一或多個紋素 (這稱為篩選) 以產生單一值。點取樣會讀取單一紋素,而線性取樣會讀取兩個紋素 (端點),並在端點之間以線性內插產生第三個值。
Microsoft 高階著色器語言 (HLSL) 紋理取樣函式也支援在紋理取樣期間進行比較篩選。比較篩選會將每個取樣的紋素與比較值進行比較。布林結果的混合方式與一般紋理篩選的混合方式相同。
您可以使用僅實作紋理篩選的 HLSL 內建紋理取樣函式,或使用結合紋理篩選與比較篩選的配套函式。
另請注意下列定義:
#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 ) ) )
| 紋理取樣函式 | 具比較篩選的紋理取樣函式 |
|---|---|
| Sample | SampleCmp 或 SampleCmpLevelZero |
需求
標頭: d3d12_xs.h 或 d3d12_x.h程式庫: d3d12_xs.lib 或 d3d12_x.lib
支援的平台: XBOX Series 主機與 XBOX One 系列
