ld2dms (sm4.1 — asm)
Считывает отдельные образцы из двухмерных многомерных текстур.
ld2dms[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex |
---|
Элемент | Описание |
---|---|
Dest |
[in] Адрес результата операции. |
srcAddress |
[in] Координаты текстуры, необходимые для выполнения выборки. |
srcResource |
[in] Регистр текстуры (t#), который должен быть объявлен, идентифицирующий, из какой текстуры или буфера следует получить |
sampleIndex |
[in] Указывает примеры для чтения из srcResource (скалярный операнд). |
Комментарии
Эта инструкция является упрощенной альтернативой примеру инструкции. Он извлекает данные из указанной текстуры без фильтрации (например, выборки точек) с помощью предоставленных целочисленных srcAddress и sampleIndex.
srcAddress предоставляет набор координат текстуры, необходимых для выполнения выборки в виде целых чисел без знака. Если srcAddress выходит за пределы диапазона[0...( #texels в измерении -1)], ld2dms всегда возвращает 0 во всех компонентах, присутствующих в формате ресурса, и значения по умолчанию (0,0,0,1.0f/0x00000001) для отсутствующих компонентов.
SampleIndex не обязательно должен быть литералом. Число нескольких выборок не требуется указывать в ресурсе текстуры, и оно работает с представлениями глубины или трафарета.
Приложение, которому требуется более гибкий контроль над поведением адресов за пределы диапазона, должно использовать пример инструкции, так как оно учитывает поведение обтекания, зеркального отображения, закрепления и границы, определенного как состояние выборки.
srcAddress.b (post-swizzle) игнорируется для Texture2Ds. Если значение выходит за пределы диапазона доступных индексов массива [0...( размер массива 1)], то ld2dms всегда возвращает 0 во всех компонентах, присутствующих в формате ресурса, и значения по умолчанию (0,0,0,1,0f/0x00000001) для отсутствующих компонентов.
Для массивов Texture2D srcAddress.b (post-swizzle) предоставляет индекс массива. Oherwise он имеет то же поведение, что и Texture2D.
srcAddress.a (post-swizzle) всегда игнорируется. Компилятор HLSL никогда не выводит в нее ничего.
srcResource — это регистр текстуры (t#), который должен быть объявлен (22.3.11), определяющий, из какой текстуры следует получить.
При выборе из t#, с которым ничего не связано, возвращается значение 0 для всех компонентов.
Смещение адреса
Необязательный суффикс [_aoffimmi(u,v,w)] (смещение адреса на непосредственное целое число) указывает, что координаты текстуры для ld2dms должны быть смещены набором предоставленных непосредственных целочисленных значений пространства текселя. Литеральные значения представляют собой набор из 4-разрядных чисел дополнения 2 с целым диапазоном [-8,7].
Смещения добавляются к координатам текстуры в пространстве текселя.
Смещения адресов не применяются по оси массива текстур1D/2D Массивов.
Компоненты _aoffimmi v,w игнорируются для Texture1D.
Компонент _aoffimmi w игнорируется для Texture2Ds.
Так как координаты текстуры для ld2dms являются целыми числами без знака, если смещение приводит к тому, что адрес становится ниже нуля, он преобразуется в большой адрес и приведет к выходу за пределы доступа, который, например ld , возвращает 0 во всех компонентах, присутствующих в формате ресурса, и значения по умолчанию (0,0,0,1.0f/0x00000001) для отсутствующих компонентов.
Пример номера
ld2dms доступен для использования на любом ресурсе. Ld2dms работает одинаково с ld , за исключением двухмерных ресурсов multsample, используя дополнительный (основанный на 0) операнд sampleIndex , чтобы определить, какой образец следует считать из ресурса.
Результат указания sampleIndex , который превышает количество выборок в ресурсе, не определен, но не может возвращать данные за пределами адресного пространства контекста устройства.
Элемент управления "Тип возвращаемого значения"
Формат данных, возвращаемый ld2dms в целевой регистр, определяется так же, как описано в примере инструкции. Он основан на формате, привязанном к параметру srcResource (t#).
Как и в примере инструкции, возвращаемые значения для ld2dms являются 4-векторными значениями по умолчанию для компонентов, не присутствующих в формате. Swizzle в srcResource определяет, как свертываться 4-компонентный результат, возвращающийся из нагрузки текстуры, после чего .mask on dest определяет, какие компоненты в dest обновляются.
Когда 32-разрядное значение float считывается ld2dms в 32-разрядный регистр, биты не затрагиваются; то есть денормальные значения остаются денормальными. Это отличается от примера инструкции.
Прочие сведения
Так как с этой инструкцией не связана фильтрация, такие понятия, как смещение LOD, не применяются. Соответственно, параметр s# для выборки отсутствует.
Ограничения
- srcResource должен быть регистром t#, а не TextureCube, Texture1D или Texture1DArray. srcResource не может быть ConstantBuffer, который не может быть привязан к регистрам t#.
- Относительная адресация в srcResource не разрешена.
- srcAddress и sampleIndex должны быть временным (r#/x#), константным (cb#) или входным (v#) регистром.
- dest должен быть временным (r#/x#) или выходным регистром (o*#).
Эта инструкция применяется к следующим этапам шейдера:
Вершинный построитель текстуры | Шейдер геометрии | Построитель текстуры |
---|---|---|
x | x | x |
Минимальная модель шейдера
Эта функция поддерживается в следующих моделях шейдеров.
Модель шейдера | Поддерживается |
---|---|
Модель шейдера 5 | да |
Модель шейдера 4.1 | да |
Модель шейдера 4 | нет |
Модель шейдера 3 (DirectX HLSL) | нет |
Модель шейдера 2 (DirectX HLSL) | нет |
Модель шейдера 1 (DirectX HLSL) | нет |