Пример (объект текстуры HLSL DirectX)
Примеры текстуры.
< > Тип шаблона Object.Sample( sampler_state S, float Location [, int Offset] );
Параметры
Элемент | Описание | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Объекта |
Любой тип объекта текстуры (кроме Texture2DMS и Texture2DMSArray). |
||||||||||
S |
[in] Состояние выборки. Это объект, объявленный в файле эффекта, который содержит назначения состояний. |
||||||||||
Расположение |
[in] Координаты текстуры. Тип аргумента зависит от типа объекта текстуры.
|
||||||||||
Смещение |
[in] Необязательное смещение координат текстуры, которое можно использовать для любого типа объекта текстуры; смещение применяется к расположению перед выборкой. Смещения текстуры должны быть статическими. Тип аргумента зависит от типа объекта текстуры. Дополнительные сведения см. в разделе Применение смещения координат текстуры.
|
Возвращаемое значение
Тип шаблона текстуры, который может быть однокомпонентным или многокомпонентным вектором. Формат основан на DXGI_FORMAT текстуры.
Минимальная модель шейдера
Эта функция поддерживается в следующих моделях шейдеров.
vs_4_0 | vs_4_1 | ps_4_0 | ps_4_1 | gs_4_0 | gs_4_1 |
---|---|---|---|---|---|
x | x |
- TextureCubeArray доступен в модели шейдера 4.1 или более поздней версии.
- Модель шейдера 4.1 доступна в Direct3D 10.1 или более поздней версии.
Пример
Этот пример частичного кода основан на файле BasicHLSL11.fx в примере BasicHLSL11.
// Object Declarations
Texture2D g_MeshTexture; // Color texture for mesh
SamplerState MeshTextureSampler
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION; // vertex position
float4 Diffuse : COLOR0; // vertex diffuse color (note that COLOR0 is clamped from 0..1)
float2 TextureUV : TEXCOORD0; // vertex texture coords
};
VS_OUTPUT In;
// Shader body calling the intrinsic function
...
Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) * In.Diffuse;
Комментарии
Выборка текстуры использует положение текселя для поиска значения текселя. Смещение можно применить к позиции перед поиском. Состояние выборки содержит параметры выборки и фильтрации. Этот метод можно вызвать в пиксельном шейдере, но он не поддерживается в вершинном шейдере или геометрическом шейдере.
Использовать смещение только при целочисленном miplevel; В противном случае результаты могут отличаться в зависимости от реализации оборудования или параметров драйвера.
Вычисление позиций текселя
Координаты текстуры — это значения с плавающей запятой, которые ссылаются на данные текстуры, что также называется нормализованным пространством текстуры. Режимы упаковки адресов применяются в этом порядке (координаты текстуры + смещение + режим переноса) для изменения координат текстуры за пределами диапазона [0...1].
Для массивов текстур дополнительное значение в параметре location указывает индекс в массиве текстур. Этот индекс рассматривается как масштабируемое значение с плавающей точкой (вместо нормализованного пространства для стандартных координат текстуры). Преобразование в целочисленный индекс выполняется в следующем порядке (float + округление до ближайшего целого числа + закрепление диапазона массива).
Применение смещения координат текстуры
Параметр offset изменяет координаты текстуры в пространстве текселя. Несмотря на то, что координаты текстуры являются нормализованными числами с плавающей запятой, смещение применяет целочисленное смещение. Также обратите внимание, что смещения текстуры должны быть статическими.
Возвращаемый формат данных определяется форматом текстуры. Например, если ресурс текстуры был определен с помощью формата DXGI_FORMAT_A8B8G8R8_UNORM_SRGB, операция выборки преобразует выборки тексели из гамма-2.0 в 1.0, фильтрует и записывает результат в виде значения с плавающей запятой в диапазоне [0..1].