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 ) ) )
纹理采样函数 | 带比较筛选的纹理采样函数 |
---|---|
示例 | SampleCmp 或 SampleCmpLevelZero |
比较筛选器仅适用于具有以下格式的纹理:DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS、DXGI_FORMAT_R32_FLOAT、DXGI_FORMAT_R24_UNORM_X8_TYPELESS、DXGI_FORMAT_R16_UNORM。
要求
标头 | d3d12.h |