Объект Texture
В Direct3D 10 вы указываете образцы и текстуры независимо; Выборка текстур реализуется с помощью объекта шаблонной текстуры. Этот объект текстуры шаблона имеет определенный формат, возвращает определенный тип и реализует несколько методов.
Различия между Direct3D9 и Direct3D10:
- В Direct3D 9 выборщики привязаны к определенным текстурам.
- В Direct3D 10 текстуры и образцы являются независимыми объектами. Каждый объект шаблонной текстуры реализует методы выборки текстур, которые принимают текстуру и образец в качестве входных параметров.
Ниже приведен синтаксис для создания всех объектов текстуры (за исключением многосампленных объектов).
Object1 [<Type>] Name; |
---|
Объекты с несколькими выборками (Texture2DMS и Texture2DMSArray) требуют явного указания размера текстуры и их выражений в виде количества выборок.
Object2 [<Type, Samples>] Name; |
---|
Параметры
Элемент | Описание | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Объекта |
Объект текстуры. Должен быть одним из следующих типов.
|
||||||||||||||||||||||||
Тип |
Необязательный элемент. Любой скалярный тип HLSL или тип вектора HLSL, окруженный угловой скобкой. Тип по умолчанию — float4. |
||||||||||||||||||||||||
Имя |
Строка ASCII, указывающая имя объекта текстуры. |
||||||||||||||||||||||||
Образцы |
Количество выборок (диапазонов от 1 до 128). |
Пример 1
Ниже приведен пример объявления объекта текстуры.
Texture2D <float4> MyTex;
Texture2DMS <float4, 128> MyMSTex;
Методы объекта Texture
Каждый объект текстуры реализует определенные методы; Ниже приведена таблица, в которую перечислены все методы. Просмотрите справочную страницу для каждого метода, чтобы узнать, какие объекты могут использовать этот метод.
Метод Texture | Описание | vs_4_0 | vs_4_1 | ps_4_0 | ps_4_1 | gs_4_0 | gs_4_1 |
---|---|---|---|---|---|---|---|
CalculateLevelOfDetail | Вычислите loD, верните зажатый результат. | x | |||||
CalculateLevelOfDetailUnclamped | Вычислите loD, верните неклампированный результат. | x | |||||
Собрать | Возвращает четыре выборки (только красный компонент), которые будут использоваться для двулинейной интерполяции при выборке текстуры. | x | x | x | |||
GetDimensions | Получение измерения текстуры для указанного уровня MIP-карты. | x | x | x | x | x | x |
GetDimensions (MultiSample) | Получение измерения текстуры для указанного уровня MIP-карты. | x | x | x | |||
GetSamplePosition | Получение позиции указанного образца. | x | x | x | |||
Загрузить | Загрузка данных без фильтрации или выборки. | x | x | x | x | x | x |
Загрузка (multisample) | Загрузка данных без фильтрации или выборки. | x | x | x | x | ||
Образец | Пример текстуры. | x | x | ||||
SampleBias | Пример текстуры после применения значения смещения к уровню MIP-карты. | x | x | ||||
SampleCmp | Пример текстуры с использованием значения сравнения для отклонения выборок. | x | x | ||||
SampleCmpLevelZero | Пример текстуры (только mipmap уровня 0) с использованием значения сравнения для отклонения выборок. | x | x | x | x | x | x |
SampleGrad | Выборка текстуры с помощью градиента для влияния на способ вычисления расположения образца. | x | x | x | x | x | x |
SampleLevel | Пример текстуры на указанном уровне MIP-карты. | x | x | x | x | x | x |
Тип возвращаемых данных
Возвращаемый тип метода объекта текстуры имеет значение float4, если не указано иное, за исключением многосампилированных объектов текстуры с псевдонимом, которые всегда нуждаются в указанном типе и количестве выборок. Тип возвращаемого значения совпадает с типом ресурса текстуры (DXGI_FORMAT). Другими словами, это может быть любой из следующих типов.
Тип | Описание |
---|---|
FLOAT | 32-разрядное число с плавающей запятой (см. раздел "Правила с плавающей запятой" для отличий от ieee float) |
INT | 32-битное целое число со знаком |
unsigned int | 32-битное целое число без знака |
храп | 32-разрядное число с плавающей запятой в диапазоне от -1 до 1 включительно (см. раздел "Правила с плавающей запятой с плавающей запятой IEEE") |
unorm | 32-разрядное число с плавающей запятой в диапазоне от 0 до 1 включительно (см. раздел "Правила с плавающей запятой с плавающей запятой IEEE") |
любой тип текстуры или структура | Количество возвращаемых компонентов должно быть от 1 до 3 включительно. |
Кроме того, возвращаемый тип может быть любым типом текстуры, включая структуру, но он должен быть меньше 4 компонентов, таких как тип float1, который возвращает один компонент.
Значения по умолчанию для отсутствующих компонентов в текстуре
Значение по умолчанию для отсутствующих компонентов в типе ресурса текстуры равно нулю для любого компонента, кроме альфа-компонента (A); Значение по умолчанию для отсутствующих A равно одному. Способ отображения этого шейдера зависит от типа ресурса текстуры. Он принимает форму первого типизированного компонента, который фактически присутствует в типе ресурса текстуры (начиная с левого в порядке RGBA). Если эта форма имеет значение UNORM или FLOAT, значение по умолчанию для отсутствующей A равно 1,0f. Если форма имеет значение SINT или UINT, значение по умолчанию для отсутствующих A равно 0x1.
Например, когда шейдер считывает тип ресурса текстуры DXGI_FORMAT_R24_UNORM_X8_TYPELESS , значения по умолчанию для G и B равны нулю, а значение по умолчанию для A — 1,0f; когда шейдер считывает тип ресурса текстуры DXGI_FORMAT_R16G16_UINT , значение по умолчанию для B равно нулю, а значение по умолчанию для A — 0x00000001; Когда шейдер считывает тип ресурса текстуры DXGI_FORMAT_R16_SINT , значения по умолчанию для G и B равны нулю, а значение по умолчанию для A — 0x00000001.
Пример 2
Ниже приведен пример выборки текстур с помощью метода текстуры.
sampler MySamp;
Texture2D <float4> MyTex;
float4 main( float2 TexCoords[2] : TEXCOORD ) : SV_Target
{
return MyTex.Sample( MySamp, TexCoords[0] ));
}
Минимальная модель шейдера
Этот объект поддерживается в следующих моделях шейдеров.
Модель шейдера | Поддерживается |
---|---|
Модели шейдера 4 и более поздних версий шейдеров | да |