Поделиться через


перечисление 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 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR
Значение: 0x101
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR , и вместо их фильтрации возвращается минимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT
Значение: 0x104
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT , и вместо их фильтрации возвращается минимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR
Значение: 0x105
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR , и вместо их фильтрации возвращается минимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT
Значение: 0x110
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT , и вместо их фильтрации возвращается минимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR
Значение: 0x111
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR , и вместо их фильтрации возвращается минимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT
Значение: 0x114
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT , и вместо их фильтрации возвращается минимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR
Значение: 0x115
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_MAG_MIP_LINEAR , и вместо их фильтрации возвращается минимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MINIMUM_ANISOTROPIC
Значение: 0x155
Извлеките тот же набор текселей, что и D3D12_FILTER_ANISOTROPIC , и вместо их фильтрации возвращается минимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в минимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT
Значение: 0x180
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_MAG_MIP_POINT , и вместо фильтрации возвращает максимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR
Значение: 0x181
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR , и вместо их фильтрации возвращается максимальное число текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT
Значение: 0x184
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT , и вместо фильтрации возвращает максимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR
Значение: 0x185
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR и вместо фильтрации возвращает максимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT
Значение: 0x190
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT и вместо фильтрации возвращает максимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR
Значение: 0x191
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR , и вместо фильтрации возвращает максимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT
Значение: 0x194
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT , и вместо их фильтрации возвращается максимальное число текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR
Значение: 0x195
Извлеките тот же набор текселей, что и D3D12_FILTER_MIN_MAG_MIP_LINEAR , и вместо их фильтрации возвращается максимальное количество текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .
D3D12_FILTER_MAXIMUM_ANISOTROPIC
Значение: 0x1d5
Извлеките тот же набор текселей, что и D3D12_FILTER_ANISOTROPIC и вместо фильтрации возвращает максимум текселей. Тексели, взвешанные 0 во время фильтрации, не учитываются в максимальном значении. Вы можете запросить поддержку этого типа фильтра из элемента MinMaxFiltering в структуре D3D11_FEATURE_DATA_D3D11_OPTIONS1 .

Комментарии

Это перечисление используется структурой D3D12_SAMPLER_DESC .

Примечание Если вы используете разные типы фильтров для фильтра min и mag, неопределенное поведение возникает в некоторых случаях, когда выбор между увеличением или минификацией является неоднозначным. Чтобы избежать этого неопределенного поведения, используйте режимы фильтрации, использующие аналогичные операции фильтрации для min и mag (или анизотропную фильтрацию, которая также позволяет избежать проблемы).
 
Во время выборки текстуры один или несколько текселей считываются и объединяются (это вызывает фильтрацию), чтобы получить одно значение. Выборка точек считывает один тексель, а линейная выборка считывает два текселя (конечные точки) и линейно интерполирует третье значение между конечными точками.

Функции выборки текстур microsoft High Level Shader Language (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_TYPELESSDXGI_FORMAT_R16_UNORM.

Требования

   
Верхняя часть d3d12.h

См. также раздел

Перечисления core

Дескрипторы