SampleGrad (объект текстуры DirectX HLSL)
Выборка текстуры с помощью градиента, чтобы повлиять на способ вычисления расположения образца.
<Тип> шаблона Object.SampleGrad( sampler_state S, float Location, float DDX, float DDY [, int Offset] );
Параметры
Элемент | Описание | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Объекта |
Любой тип объекта текстуры (кроме Texture2DMS и Texture2DMSArray). |
||||||||||||
S |
[in] Состояние выборки. Это объект, объявленный в файле эффекта, который содержит назначения состояний. |
||||||||||||
Расположение |
[in] Координаты текстуры. Тип аргумента зависит от типа объекта текстуры.
|
||||||||||||
DDX |
[in] Скорость изменения геометрии поверхности в направлении x. Тип аргумента зависит от типа объекта текстуры.
|
||||||||||||
DDY |
[in] Скорость изменения геометрии поверхности в направлении y. Тип аргумента зависит от типа объекта текстуры.
|
||||||||||||
Смещение |
[in] Необязательное смещение координат текстуры, которое можно использовать для любых типов объектов текстуры. Смещение применяется к расположению перед выборкой. Использовать смещение только при целочисленном miplevel; В противном случае вы можете получить результаты, которые не будут хорошо преобразованы в оборудование. Тип аргумента зависит от типа объекта текстуры. Дополнительные сведения см.в разделе Применение целочисленных смещения.
|
Возвращаемое значение
Тип шаблона текстуры, который может быть однокомпонентным или многокомпонентным вектором. Формат основан на DXGI_FORMAT текстуры.
Минимальная модель шейдера
Эта функция поддерживается в следующих моделях шейдеров.
vs_4_0 | vs_4_1 | ps_4_0 | ps_4_1 | gs_4_0 | gs_4_1 |
---|---|---|---|---|---|
x | x | x | x | x | x |
- TextureCubeArray доступен в модели шейдера 4.1 или более поздней версии.
- Модель шейдера 4.1 доступна в Direct3D 10.1 или более поздней версии.
Пример
Этот пример частичного кода получен из файла MotionBlur.fx в примере MotionBlur10.
// Object Declarations
Texture2D g_txDiffuse;
SamplerState g_samLinear
{
Filter = ANISOTROPIC;
MaxAnisotropy = 8;
AddressU = Wrap;
AddressV = Wrap;
};
struct VSSceneOut
{
float4 Pos : SV_POSITION;
float4 Color : COLOR0;
float2 Tex : TEXCOORD;
float2 Aniso : ANISOTROPY;
};
float4 PSSceneMain( VSSceneOut Input ) : SV_TARGET
{
float2 ddx = Input.Aniso;
float2 ddy = Input.Aniso;
// Shader body calling the intrinsic function
float4 diff = g_txDiffuse.SampleGrad( g_samLinear, Input.Tex, ddx, ddy);
...
}