ld (sm4 - asm)

Извлекает данные из указанного буфера или текстуры без фильтрации (например, выборки точек) с помощью указанного целочисленного адреса. Исходные данные могут поступать из любого типа ресурса, отличного от TextureCube.

ld[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle]
Элемент Description
dest
[in] Адрес результата операции.
srcAddress
[in] Координаты текстуры, необходимые для выполнения примера.
srcResource
[in] Регистр текстуры (t#), который должен быть объявлен, определяющий, из какой текстуры или буфера требуется получить.

Замечания

Эта инструкция является упрощенной альтернативой образцу инструкции. В отличие от примера, ld также может получить данные из буферов. ld также может получить из нескольких примеров ресурсов (только для шейдера пикселей).

srcAddress предоставляет набор координат текстур, необходимых для выполнения примера в виде целых чисел без знака. Если srcAddress выходит из диапазона[0...( #texels в измерении -1)], а затем вызывается внеграничное поведение, где ld возвращает значение 0 во всех отсутствующих компонентах формата srcResource и по умолчанию для отсутствующих компонентов. Приложение, желающее более гибкого контроля над поведением адресов вне диапазона, должно использовать пример инструкции вместо этого, так как она учитывает поведение оболочки адресов/зеркало/clamp/border, определенное как состояние выборки.

srcAddress.a (POS-swizzle) всегда предоставляет уровень mipmap без знака без знака. Если значение выходит из диапазона [0...( числовые миплеи в ресурсе-1)]), а затем вызывается внеграничное поведение. Если ресурс является буфером, который не может иметь какие-либо mip-карты, то srcAddress.a игнорируется

srcAddress.gb (POS-swizzle) игнорируется для буферов и текстур1D (не массив). srcAddress.b (POS-swizzle) игнорируется для массивов текстур1D и текстур2D.

Для массивов текстур1D srcAddress.g (POS-swizzle) предоставляет индекс массива как целое число без знака. Если значение выходит за пределы диапазона доступных индексов массива [0...( Размер массива-1)], а затем вызывается внеграничное поведение.

Для массивов текстур2D srcAddress.b (POS-swizzle) предоставляет индекс массива в противном случае с той же семантикой, что и для текстур1D.

Получение из t# , не привязанное к нему, возвращает значение 0 для всех компонентов.

Смещение адреса

Необязательный суффикс [_aoffimmi(u,v,w)] (смещение адреса по немедленному целочислению) указывает, что координаты текстуры для ld должны быть смещения набором предоставленных непосредственных значений целочисленной константы пространства текселя. Литеральные значения — это набор из 4-разрядных чисел 2, имеющих целый диапазон [-8,7]. Этот модификатор определен только для текстур1D/2D/3D, включая массивы, а не для буферов.

Смещения добавляются в координаты текстуры в пространстве текселя относительно миплея, к которым обращается ld.

Смещения адресов не применяются вдоль оси массива массивов массивов текстур1D/2D.

Компоненты _aoffimmi v,w игнорируются для текстур1D.

Компонент _aoffimmi w игнорируется для текстур2D.

Поскольку координаты текстуры для ld являются целыми числами без знака, если смещение приводит к тому, что адрес переходит ниже нуля, он будет упаковывать в большой адрес и привести к выходу из границ.

Элемент управления возвращаемым типом

Формат данных, возвращаемый ld в целевой регистр, определяется так же, как описано для примера инструкции; он основан на формате, привязанном к параметру srcResource (t#).

Как и в примере инструкции, возвращаемые значения для ld являются 4-векторами с значениями по умолчанию для компонентов, не присутствующих в формате. Swizzle в srcResource определяет, как изменить 4-компонентный результат, возвращающийся из нагрузки текстуры, после чего маска в dest определяет, какие компоненты в деста будут обновлены.

Если 32-разрядное значение float считывается ld в 32-разрядном регистре, биты не тронуты; то есть денормальные значения остаются денормальными. Это в отличие от примера инструкции.

Прочие сведения

Так как фильтрация не связана с инструкцией ld , такие понятия, как предвзятость LOD, не применяются к ld. Соответственно, нет параметра s# sampler.

Ограничения

  • srcResource должен быть регистром t#, а не текстуройCube. srcResource не может быть константой, которая не может быть привязана к регистрам t#.
  • Относительная адресация в srcResource не разрешена.
  • srcAddress должен быть temp (r#/x#), константой (cb#) или регистром входных данных (v#).
  • dest должен быть временным (r#/x#) или регистром выходных данных (o*#).

Эта инструкция применяется к следующим этапам шейдера:

Шейдер вершин Шейдер геометрии Построитель текстуры
x х x

Минимальная модель шейдера

Эта функция поддерживается в следующих моделях шейдеров.

Модель шейдера Поддерживается
Модель шейдера 5 yes
Модель шейдера 4.1 yes
Модель шейдера 4 yes
Модель шейдера 3 (DirectX HLSL) no
Модель шейдера 2 (DirectX HLSL) no
Модель шейдера 1 (DirectX HLSL) no

Модель 4 шейдера (DirectX HLSL)