Поделиться через


ld_raw (sm5 - asm)

Произвольное чтение 1–4 32-разрядных компонентов из необработанного буфера.

ld_raw dest[.mask], srcByteOffset[.select_component], src0[.swizzle]
Элемент Описание
Dest
[in] Адрес результата операции.
srcByteOffset
[in] Указывает смещение для считывания.
src0
[in] Компонент для чтения.

Комментарии

Значение src0 должно быть следующим:

  • Любой этап шейдера: SRV (t#)ld st
  • Вычисление шейдера или пиксельного шейдера: UAV (u#)
  • Шейдер вычислений: общая память группы потоков (g#)

srcByteOffset задает базовое 32-разрядное значение в памяти для окна из 4 последовательных 32-разрядных значений, в котором могут считываться данные в зависимости от свертки и маски для других параметров.

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

                    BYTE *BufferContents;         // from src0
                    UINT srcByteOffset;           // from srcByteOffset
                    BYTE *ReadLocation;           // value to calculate
                    ReadLocation = BufferContents 
                                + srcByteOffset;

                    UINT32 Temp[4];  // used to make code shorter

                    // apply the source resource swizzle on source data
                    Temp = read_and_swizzle(ReadLocation, srcSwizzle);

                    // write the components to the output based on mask
                    ApplyWriteMask(dstRegister, dstWriteMask, Temp);

Адресация вне границ в u#/t# любого заданного 32-разрядного компонента возвращает 0 для этого компонента.

Адресация за пределы g# (границы конкретного g# в отличие от всей общей памяти) для любого 32-разрядного компонента возвращает неопределенный результат.

cs_4_0 и cs_4_1 поддерживают эту инструкцию для БПЛА и SRV.

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

Вершина Корпуса Домен Geometry Пиксель Вычисления
X X X X X X

Так как БПЛА доступны на всех этапах шейдера для Direct3D 11.1, эта инструкция применяется ко всем этапам шейдера для БПЛА для среды выполнения Direct3D 11.1, которая доступна начиная с Windows 8.

Вершина Корпуса Домен Geometry Пиксель Вычисления
X X X X X X

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

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

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

cs_4_0 и cs_4_1 поддерживают эту инструкцию для БПЛА и SRV.

Сборка модели шейдера 5 (DirectX HLSL)