D3D12_FILTER 枚举 (d3d12.h)

指定纹理采样期间的筛选选项。

语法

typedef enum D3D12_FILTER {
  D3D12_FILTER_MIN_MAG_MIP_POINT = 0,
  D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1,
  D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
  D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5,
  D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10,
  D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11,
  D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14,
  D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15,
  D3D12_FILTER_MIN_MAG_ANISOTROPIC_MIP_POINT,
  D3D12_FILTER_ANISOTROPIC = 0x55,
  D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80,
  D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81,
  D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84,
  D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85,
  D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90,
  D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91,
  D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94,
  D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95,
  D3D12_FILTER_COMPARISON_MIN_MAG_ANISOTROPIC_MIP_POINT,
  D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
  D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100,
  D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101,
  D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
  D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105,
  D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110,
  D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111,
  D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114,
  D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115,
  D3D12_FILTER_MINIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT,
  D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155,
  D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180,
  D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181,
  D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
  D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185,
  D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190,
  D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191,
  D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194,
  D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195,
  D3D12_FILTER_MAXIMUM_MIN_MAG_ANISOTROPIC_MIP_POINT,
  D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5
} ;

常量

 
D3D12_FILTER_MIN_MAG_MIP_POINT
值: 0
使用点采样进行缩小、放大和 mip 级采样。
D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR
值: 0x1
使用点采样进行缩小和放大;使用线性内插进行 mip 级采样。
D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT
值: 0x4
使用点采样进行缩小;使用线性内插进行放大;使用点采样进行 mip 级采样。
D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR
值: 0x5
使用点采样进行缩小;使用线性内插进行放大和 mip 级采样。
D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT
值: 0x10
使用线性内插缩小;使用点采样进行放大和 mip 级采样。
D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR
值: 0x11
使用线性内插缩小;使用点采样进行放大;使用线性内插进行 mip 级采样。
D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT
值: 0x14
使用线性内插缩小和放大;使用点采样进行 mip 级采样。
D3D12_FILTER_MIN_MAG_MIP_LINEAR
值: 0x15
使用线性内插缩小、放大和 mip 级采样。
D3D12_FILTER_ANISOTROPIC
值: 0x55
使用各向异性内插缩小、放大和 mip 级采样。
D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT
值: 0x80
使用点采样进行缩小、放大和 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR
值: 0x81
使用点采样进行缩小和放大;使用线性内插进行 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT
值: 0x84
使用点采样进行缩小;使用线性内插进行放大;使用点采样进行 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR
值: 0x85
使用点采样进行缩小;使用线性内插进行放大和 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT
值: 0x90
使用线性内插缩小;使用点采样进行放大和 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR
值: 0x91
使用线性内插缩小;使用点采样进行放大;使用线性内插进行 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT
值: 0x94
使用线性内插缩小和放大;使用点采样进行 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR
值: 0x95
使用线性内插缩小、放大和 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_COMPARISON_ANISOTROPIC
值: 0xd5
使用各向异性内插缩小、放大和 mip 级采样。 将结果与比较值进行比较。
D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT
值: 0x100
提取 与D3D12_FILTER_MIN_MAG_MIP_POINT 相同的纹素集,而不是筛选它们返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR
值: 0x101
提取与 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR 相同的纹素集,而不是筛选它们,而是返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT
值: 0x104
提取与 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT 相同的纹素集,而不是筛选它们,返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR
值: 0x105
提取 与 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR 相同的纹素集,而不是筛选它们,而是返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT
值: 0x110
提取与 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT 相同的一组纹素,而不是筛选它们,而是返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR
值: 0x111
提取 与D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR 相同的纹素集,而不是筛选它们返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT
值: 0x114
提取 与 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT 相同的纹素集,而不是筛选它们,而是返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR
值: 0x115
提取 与 D3D12_FILTER_MIN_MAG_MIP_LINEAR 相同的纹素集,而不是筛选它们,而是返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MINIMUM_ANISOTROPIC
值: 0x155
提取与 D3D12_FILTER_ANISOTROPIC 相同的纹素集,而不是筛选它们,而是返回纹素的最小值。 筛选期间加权为 0 的纹素不计入最小值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT
值: 0x180
提取与 D3D12_FILTER_MIN_MAG_MIP_POINT 相同的一组纹素,而不是筛选它们,返回纹素的最大值。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR
值: 0x181
提取与 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR 相同的纹素集,而不是筛选它们,返回纹素的最大数目。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT
值: 0x184
提取与 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT 相同的纹素集,而不是筛选它们,返回纹素的最大数目。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR
值: 0x185
提取 与D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR 相同的纹素集,而不是筛选它们,而是返回纹素的最大数目。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT
值: 0x190
提取与 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT 相同的纹素集,而不是筛选它们,返回纹素的最大数目。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR
值: 0x191
提取与 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR 相同的纹素集,而不是筛选它们返回纹素的最大数目。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT
值: 0x194
提取与 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT 相同的纹素集,而不是筛选它们,而是返回纹素的最大数目。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR
值: 0x195
提取与 D3D12_FILTER_MIN_MAG_MIP_LINEAR 相同的纹素集,而不是筛选它们返回纹素的最大值。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。
D3D12_FILTER_MAXIMUM_ANISOTROPIC
值: 0x1d5
提取与 D3D12_FILTER_ANISOTROPIC 相同的纹素集,而不是筛选它们返回纹素的最大值。 筛选期间加权为 0 的纹素不计入最大值。 可以从 D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中的 MinMaxFiltering 成员查询此筛选器类型的支持。

备注

此枚举由 D3D12_SAMPLER_DESC 结构使用。

注意 如果对 min 和 mag 筛选器使用不同的筛选器类型,则在某些情况下,在选择放大还是缩小之间选择不明确的情况下,会出现未定义的行为。 若要防止这种未定义的行为,请使用筛选模式,这些模式对 min 和 mag (使用类似的筛选器操作,或者使用各向异性筛选,从而避免此问题以及) 。
 
在纹理采样期间,将读取一个或多个纹素并组合 (这调用筛选) 以生成单个值。 点采样读取单个纹素,而线性采样读取两个纹素 (终结点) ,并在终结点之间线性内插第三个值。

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 ) ) )    


纹理采样函数 带比较筛选的纹理采样函数
示例 SampleCmpSampleCmpLevelZero
 

比较筛选器仅适用于具有以下格式的纹理:DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESSDXGI_FORMAT_R32_FLOATDXGI_FORMAT_R24_UNORM_X8_TYPELESS、DXGI_FORMAT_R16_UNORM

要求

   
标头 d3d12.h

另请参阅

核心枚举

描述符