语法
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 | 对缩小、放大和多级渐远采样使用点采样。 |
| D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR | 对缩小和放大使用点采样;对多级渐远采样使用线性插值。 |
| D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT | 对缩小使用点采样;对放大使用线性插值;对多级渐远采样使用点采样。 |
| D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR | 对缩小使用点采样;对放大和多级渐远采样使用线性插值。 |
| D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT | 对缩小使用线性插值;对放大和多级渐远采样使用点采样。 |
| D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR | 对缩小使用线性插值;对放大使用点采样;对多级渐远采样使用线性插值。 |
| D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT | 对缩小和放大使用线性插值;对多级渐远采样使用点采样。 |
| D3D12_FILTER_MIN_MAG_MIP_LINEAR | 对缩小、放大和多级渐远采样使用线性插值。 |
| D3D12_FILTER_ANISOTROPIC | 对缩小、放大和多级渐远采样使用各向异性插值。 |
| D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT | 对缩小、放大和多级渐远采样使用点采样。将结果与比较值进行比较。 |
| D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR | 对缩小和放大使用点采样;对多级渐远采样使用线性插值。将结果与比较值进行比较。 |
| D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT | 对缩小使用点采样;对放大使用线性插值;对多级渐远采样使用点采样。将结果与比较值进行比较。 |
| D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR | 对缩小使用点采样;对放大和多级渐远采样使用线性插值。将结果与比较值进行比较。 |
| D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT | 对缩小使用线性插值;对放大和多级渐远采样使用点采样。将结果与比较值进行比较。 |
| D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR | 对缩小使用线性插值;对放大使用点采样;对多级渐远采样使用线性插值。将结果与比较值进行比较。 |
| D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT | 对缩小和放大使用线性插值;对多级渐远采样使用点采样。将结果与比较值进行比较。 |
| D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR | 对缩小、放大和多级渐远采样使用线性插值。将结果与比较值进行比较。 |
| D3D12_FILTER_COMPARISON_ANISOTROPIC | 对缩小、放大和多级渐远采样使用各向异性插值。将结果与比较值进行比较。 |
| 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 系列
