перечисление D3DSHADER_INSTRUCTION_OPCODE_TYPE (d3d9types.h)

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

Синтаксис

typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
  D3DSIO_NOP,
  D3DSIO_MOV,
  D3DSIO_ADD,
  D3DSIO_SUB,
  D3DSIO_MAD,
  D3DSIO_MUL,
  D3DSIO_RCP,
  D3DSIO_RSQ,
  D3DSIO_DP3,
  D3DSIO_DP4,
  D3DSIO_MIN,
  D3DSIO_MAX,
  D3DSIO_SLT,
  D3DSIO_SGE,
  D3DSIO_EXP,
  D3DSIO_LOG,
  D3DSIO_LIT,
  D3DSIO_DST,
  D3DSIO_LRP,
  D3DSIO_FRC,
  D3DSIO_M4x4,
  D3DSIO_M4x3,
  D3DSIO_M3x4,
  D3DSIO_M3x3,
  D3DSIO_M3x2,
  D3DSIO_CALL,
  D3DSIO_CALLNZ,
  D3DSIO_LOOP,
  D3DSIO_RET,
  D3DSIO_ENDLOOP,
  D3DSIO_LABEL,
  D3DSIO_DCL,
  D3DSIO_POW,
  D3DSIO_CRS,
  D3DSIO_SGN,
  D3DSIO_ABS,
  D3DSIO_NRM,
  D3DSIO_SINCOS,
  D3DSIO_REP,
  D3DSIO_ENDREP,
  D3DSIO_IF,
  D3DSIO_IFC,
  D3DSIO_ELSE,
  D3DSIO_ENDIF,
  D3DSIO_BREAK,
  D3DSIO_BREAKC,
  D3DSIO_MOVA,
  D3DSIO_DEFB,
  D3DSIO_DEFI,
  D3DSIO_TEXCOORD,
  D3DSIO_TEXKILL,
  D3DSIO_TEX,
  D3DSIO_TEXBEM,
  D3DSIO_TEXBEML,
  D3DSIO_TEXREG2AR,
  D3DSIO_TEXREG2GB,
  D3DSIO_TEXM3x2PAD,
  D3DSIO_TEXM3x2TEX,
  D3DSIO_TEXM3x3PAD,
  D3DSIO_TEXM3x3TEX,
  D3DSIO_RESERVED0,
  D3DSIO_TEXM3x3SPEC,
  D3DSIO_TEXM3x3VSPEC,
  D3DSIO_EXPP,
  D3DSIO_LOGP,
  D3DSIO_CND,
  D3DSIO_DEF,
  D3DSIO_TEXREG2RGB,
  D3DSIO_TEXDP3TEX,
  D3DSIO_TEXM3x2DEPTH,
  D3DSIO_TEXDP3,
  D3DSIO_TEXM3x3,
  D3DSIO_TEXDEPTH,
  D3DSIO_CMP,
  D3DSIO_BEM,
  D3DSIO_DP2ADD,
  D3DSIO_DSX,
  D3DSIO_DSY,
  D3DSIO_TEXLDD,
  D3DSIO_SETP,
  D3DSIO_TEXLDL,
  D3DSIO_BREAKP,
  D3DSIO_PHASE,
  D3DSIO_COMMENT,
  D3DSIO_END,
  D3DSIO_FORCE_DWORD
} D3DSHADER_INSTRUCTION_OPCODE_TYPE;

Константы

 
D3DSIO_NOP
Инструкция NOP выполняет операцию без операции или без операции.


Формат

маркер инструкции , содержащий D3DSIO_NOP.
D3DSIO_MOV
Инструкция MOV перемещает данные между регистрами.


Формат

маркер инструкции , содержащий D3DSIO_MOV. Длина инструкции составляет 2.

токен конечного параметра.

маркер параметра источника.


Комментарии

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


Формат

маркер инструкции , содержащий D3DSIO_ADD.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_SUB
Инструкция SUB вычитает два исходных вектора и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_SUB. Длина инструкции — 3.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_MAD
Инструкция MAD умножает первый и второй источники и добавляет третий источник.


Формат

маркер инструкции , содержащий D3DSIO_MAD. Длина инструкции — 4.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.

третий маркер исходного параметра.
D3DSIO_MUL
Инструкция MUL умножает два исходных вектора и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_MUL. Длина инструкции — 3.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_RCP
Инструкция RCP вычисляет ответ источника и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_RCP. Длина инструкции — 2.

токен конечного параметра.

маркер параметра источника. Требует явного использования репликации swizzle, то есть необходимо указать компонент Swizzle X, Y, Z или W (или эквивалент R, G, B или A).
D3DSIO_RSQ
Инструкция RSQ вычисляет обратный квадратный корень источника и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_RSQ. Длина инструкции — 2.

токен конечного параметра.

маркер параметра источника. Требует явного использования репликации swizzle, то есть необходимо указать компонент Swizzle X, Y, Z или W (или эквивалент R, G, B или A).
D3DSIO_DP3
Инструкция DP3 вычисляет точечное произведение из трех компонентов (RGB) исходных регистров и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_DP3. Длина инструкции — 3.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_DP4
Инструкция DP4 вычисляет точечное произведение из четырех компонентов (RGBA) исходных регистров и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_DP4. Длина инструкции — 3.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_MIN
Инструкция MIN определяет минимальное количество источников и сохраняет минимальный источник в назначении.


Формат

маркер инструкции , содержащий D3DSIO_MIN. Длина инструкции — 3.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_MAX
Инструкция MAX определяет максимальное число источников и сохраняет максимальный источник в назначении.


Формат

маркер инструкции , содержащий D3DSIO_MAX. Длина инструкции — 3.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_SLT
Инструкция SLT определяет, меньше ли первый источник второго источника, и сохраняет знак (1.0f для TRUE и 0.0f для FALSE) в назначении.


Формат

маркер инструкции , содержащий D3DSIO_SLT. Длина инструкции — 3.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_SGE
Инструкция SGE определяет, больше или равен ли первый источник второму источнику, и сохраняет знак (1,0f для TRUE и 0,0f для FALSE) в назначении.


Формат

маркер инструкции , содержащий D3DSIO_SGE. Длина инструкции — 3.

маркер параметра назначения.

первый токен исходного параметра.

второй токен исходного параметра.
D3DSIO_EXP
Инструкция EXP обеспечивает экспоненциальную полную точность 2x.


Формат

маркер инструкции , содержащий D3DSIO_EXP. Длина инструкции — 2.

маркер параметра назначения.

токен исходного параметра. Требует явного использования репликации swizzle, то есть необходимо указать компонент Swizzle X, Y, Z или W (либо эквивалент R, G, B или A).


Комментарии

Инструкция EXP предоставляет по крайней мере 21 бит точности.
D3DSIO_LOG
Инструкция LOG вычисляет log полной точности (x).


Формат

маркер инструкции , содержащий D3DSIO_LOG. Длина инструкции — 2.

маркер параметра назначения.

токен исходного параметра. Маркер исходного параметра требует явного использования репликации swizzle, то есть необходимо указать компонент X, Y, Z или W swizzle (либо эквивалент R, G, B или A).


Комментарии

Инструкция LOG обеспечивает точность не менее 21 бита.
D3DSIO_LIT
Инструкция LIT обеспечивает частичную поддержку освещения, вычисляя коэффициенты освещения из двух точечной продукции и экспоненты.


Формат

маркер инструкции , содержащий D3DSIO_LIT. Длина инструкции — 2.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Арифметика с пониженной точностью допустима при оценке целевого компонента Y (в маске записи). Реализация должна поддерживать по крайней мере восемь дробных битов в аргументе power. Точечная продукция вычисляется с нормализованными векторами, а пределы зажима — от -128 до 128. Ошибка должна соответствовать сочетанию LOGP и EXPP или не более одного наименее значимого бита (LSB) для 8-разрядного компонента цвета.
D3DSIO_DST
Инструкция DST вычисляет вектор расстояния и сохраняет результат в месте назначения.


Формат

маркер инструкций , содержащий D3DSIO_DST. Длина инструкции — 3.

маркер параметра назначения.

первый токен исходного параметра.

второй токен исходного параметра.
D3DSIO_LRP
Инструкция LRP линейно интерполирует между вторым и третьим источниками по пропорции, указанной в первом источнике, и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_LRP. Длина инструкции — 4.

маркер параметра назначения.

первый токен исходного параметра.

второй токен исходного параметра.

маркер третьего исходного параметра


Комментарии

Инструкцию LRP можно использовать с данными с плавающей запятой или целочисленными данными.

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

Для обновления регистров адресов необходимо использовать инструкцию LRP.
D3DSIO_FRC
Инструкция FRC возвращает дробную часть каждого входного компонента.


Формат

маркер инструкции , содержащий D3DSIO_FRC. Длина инструкции — 2.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Каждый компонент результата находится в диапазоне от 0,0 до 1,0.

Для версии вершины или пикселя версии 1_1 допустимыми масками записи являются Y и XY (X не допускается).
D3DSIO_M4x4
Инструкция M4x4 вычисляет произведение 4-компонентного вектора и матрицы 4x4 и сохраняет результат в месте назначения.


Формат

маркер инструкции , содержащий D3DSIO_M4x4. Длина инструкции — 3.

маркер параметра назначения. Маска XYZW является обязательной.

первый токен исходного параметра.

второй токен исходного параметра. Компоненты Swizzle и модификаторы отмены являются недопустимыми.
D3DSIO_M4x3
Инструкция M4x3 вычисляет произведение 4-компонентного вектора и матрицы 4x3 и сохраняет результат в месте назначения.


Формат

маркер инструкции , содержащий D3DSIO_M4x3. Длина инструкции — 3.

маркер параметра назначения. Маска XYZ является обязательной.

первый токен исходного параметра.

второй токен исходного параметра. Компоненты Swizzle и модификаторы отмены являются недопустимыми.
D3DSIO_M3x4
Инструкция M3x4 вычисляет произведение 3-компонентного вектора и матрицы 3x4 и сохраняет результат в месте назначения.


Формат

маркер инструкции , содержащий D3DSIO_M3x4. Длина инструкции — 3.

маркер параметра назначения. Маска XYZW является обязательной.

первый токен исходного параметра.

второй токен исходного параметра. Компоненты Swizzle и модификаторы отмены являются недопустимыми.
D3DSIO_M3x3
Инструкция M3x3 вычисляет произведение 3-компонентного вектора и матрицы 3x3 и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_M3x3. Длина инструкции — 3.

маркер параметра назначения. Маска XYZ является обязательной.

первый токен исходного параметра.

второй токен исходного параметра. Компоненты Swizzle и модификаторы отмены являются недопустимыми.
D3DSIO_M3x2
Инструкция M3x2 вычисляет произведение 3-компонентного вектора и матрицы 3x2 и сохраняет результат в месте назначения.


Формат

маркер инструкции , содержащий D3DSIO_M3x2. Длина инструкции — 3.

токен конечного параметра. Маска XY является обязательной.

первый маркер исходного параметра.

второй маркер исходного параметра. Компоненты swizzle и неотвратные модификаторы недопустимы.
D3DSIO_CALL
Инструкция CALL выполняет вызов функции инструкции, помеченной указанным индексом метки.


Формат

маркер инструкции , содержащий D3DSIO_CALL.

маркер метки (маркер исходного параметра , использующий тип регистрации D3DSPR_LABEL).
D3DSIO_CALLNZ
Инструкция CALLNZ выполняет условный (если не нулевой) вызов инструкции, помеченной индексом метки.


Формат

маркер инструкции , содержащий D3DSIO_CALLNZ.

маркер метки (маркер исходного параметра , использующий тип регистрации D3DSPR_LABEL).

маркер параметра источника , использующий тип регистра D3DSPR_CONSTBOOL.
D3DSIO_LOOP
Инструкция LOOP начинает ЦИКЛ... Блок ENDLOOP .


Формат

маркер инструкции , содержащий D3DSIO_LOOP.

первый маркер исходного параметра , использующий тип регистра D3DSPR_LOOP. Компонент X задает число итераций; компонент Y задает начальное значение регистра счетчика текущего цикла; и компонент Z указывает приращение для текущего регистра счетчика цикла. Для этого регистра требуется явное использование репликации swizzle, то есть . Необходимо указать маски компонентов XYZW (RGBA).


Комментарии

В инструкции LOOP можно использовать только целые регистры. Инструкция LOOP предоставляется для итерации и поддерживает регистр счетчиков циклов с автоматическим приращением, который можно использовать для индексирования массива констант. При вложении каждый раз, когда используется регистр счетчика цикла, он ссылается на текущий цикл.
D3DSIO_RET
Инструкция RET возвращается из подпрограммы или помечает конец функции main.


Формат

маркер инструкции , содержащий D3DSIO_RET.


Комментарии

Если шейдер не содержит подпрограмм, использование RET в конце программы main является необязательным.
D3DSIO_ENDLOOP
Инструкция ENDLOOP помечает конец блока LOOP.


Формат

маркер инструкции , содержащий D3DSIO_ENDLOOP.
D3DSIO_LABEL
Инструкция LABEL помечает следующую инструкцию индексом метки.


Формат

маркер инструкции , содержащий D3DSIO_LABEL.

исходный маркер параметра , использующий тип регистра D3DSPR_LABEL и номер регистра.
D3DSIO_DCL
Указывает маркер инструкции DCL.
D3DSIO_POW
Инструкция POW вычисляет полную точность (первый источник)второй источник и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_POW. Длина инструкции — 3.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.


Комментарии

В обоих источниках требуется явное использование репликации swizzle, то есть необходимо указать компонент Swizzle X, Y, Z или W (или эквивалент R, G, B или A).

Инструкция POW обеспечивает точность не менее 15 бит.
D3DSIO_CRS
Инструкция CRS вычисляет перекрестное произведение с помощью правого правила.


Формат

маркер инструкции , содержащий D3DSIO_CRS.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_SGN
Инструкция SGN определяет знак источника и сохраняет знак (-1 для отрицательного, 0 для 0 и 1 для положительного) в месте назначения.


Формат

маркер инструкции , содержащий D3DSIO_SGN. Длина инструкции — 4.

токен конечного параметра.

первый маркер исходного параметра.

второй маркер исходного параметра, использующий тип регистра D3DSPR_TEMP.

третий маркер исходного параметра, использующий тип регистра D3DSPR_TEMP.


Комментарии

Второй и третий источники могут использоваться в качестве временных регистров.
D3DSIO_ABS
Инструкция ABS вычисляет абсолютное значение источника и сохраняет результат в назначении.


Формат

маркер инструкции , содержащий D3DSIO_ABS.

токен конечного параметра.

маркер параметра источника.
D3DSIO_NRM
Инструкция NRM нормализует 4-D вектор.


Формат

маркер инструкции , содержащий D3DSIO_NRM. Длина инструкции — 2.

токен конечного параметра.

маркер параметра источника.
D3DSIO_SINCOS
Инструкция SINCOS вычисляет синус и косинус источника.
D3DSIO_REP
Инструкция REP запускает repeat... Блок ENDREP .


Формат

маркер инструкции , содержащий D3DSIO_REP.

исходный токен параметра , использующий тип регистра D3DSPR_CONSTINT. Компонент X задает число итераций.


Комментарии

В инструкции REP можно использовать только целые регистры.
D3DSIO_ENDREP
Инструкция ENDREP помечает конец блока REP .


Формат

маркер инструкции , содержащий D3DSIO_ENDREP.
D3DSIO_IF
Инструкция IF начинает блок IF.


Формат

маркер инструкции , содержащий D3DSIO_IF.

source parameter token using the D3DSPR_CONSTBOOL register type.


Комментарии

Если исходный логический регистр имеет значение TRUE, выполняется код, заключенный в инструкцию IF и соответствующий ПАРАМЕТР ELSE (или ENDIF , если ELSE не используется); В противном случае выполнение передается в код, заключенный в инструкции ELSE-ENDIF (ELSE существует) или из блока IF (ELSE не существует).
D3DSIO_IFC
Инструкция IFC начинает блок IF с сравнения.


Формат

маркер инструкции , содержащий D3DSIO_IFC.

первый маркер исходного параметра.

второй маркер исходного параметра.


Комментарии

Инструкция IFC пропускает блок кода на основе сравнения источников.

В обоих источниках требуется явное использование репликации swizzle, то есть необходимо указать компонент Swizzle X, Y, Z или W (или эквивалент R, G, B или A).

Если для сравнения всех исходных компонентов задано значение TRUE, выполняется код, заключенный в инструкцию IF и соответствующую инструкцию ELSE (или инструкцию ENDIF , если ELSE не используется); В противном случае выполнение передается в код, заключенный в инструкции ELSE-ENDIF (ELSE существует) или из блока IF (ELSE не существует).
D3DSIO_ELSE
Инструкция ELSE запускает блок ELSE.


Формат

маркер инструкции , содержащий D3DSIO_ELSE.


Комментарии

Если исходный логический регистр в соответствующей инструкции IF имеет значение true, выполняется код, заключенный в IF и соответствующий ELSE , в противном случае выполнение передается в код, заключенный в инструкции ELSE и ENDIF .
D3DSIO_ENDIF
Инструкция ENDIF завершает if... Блок ELSE .


Формат

маркер инструкции , содержащий D3DSIO_ENDIF.
D3DSIO_BREAK
Инструкция BREAK вырывается из текущего цикла в ближайшем конце или концевом конце.


Формат

маркер инструкции , содержащий D3DSIO_BREAK.
D3DSIO_BREAKC
Инструкция BREAKC выходит из текущего цикла в ближайшем конце или концевом потоке на основе критериев сравнения между двумя источниками.


Формат

маркер инструкции , содержащий D3DSIO_BREAKC.

первый маркер исходного параметра.

второй маркер исходного параметра.
D3DSIO_MOVA
Инструкция MOVA перемещает данные из регистра с плавающей запятой в целочисленный регистр.


Формат

маркер инструкции , содержащий D3DSIO_MOVA. Длина инструкции — 2.

токен конечного параметра.

маркер параметра источника.


Комментарии

Значения преобразуются из числа с плавающей запятой с помощью округления в ближайшие.

Регистр адресов является единственным разрешенным регистром назначения.
D3DSIO_DEFB
Инструкция DEFB определяет логическое значение константы, которое должно загружаться при каждом задании шейдера на устройство. Эту инструкцию можно использовать в вершинном шейдере 2_0 и более поздних версиях. Логические константы, заданные текущим шейдером вершин, имеют приоритет над константами, заданными операцией D3DDP2OP_SETVERTEXSHADERCONSTB.


Формат

маркер инструкции , содержащий D3DSIO_DEFB. Длина инструкции — 2.

токен конечного параметра. Тип регистра должен быть D3DSPR_CONSTBOOL.

Токен DWORD содержит логическое значение, где ненулевое значение означает TRUE; ноль означает FALSE.
D3DSIO_DEFI
Инструкция DEFI определяет целочисленное значение константы, которое должно загружаться при каждом задании шейдера на устройство. Константы, заданные текущим шейдером вершин, имеют приоритет над константами, заданными операцией D3DDP2OP_SETVERTEXSHADERCONSTI.


Формат

маркер инструкции , содержащий D3DSIO_DEFI. Длина инструкции — 5.

токен конечного параметра. Тип регистра должен быть D3DSPR_CONSTINT.

4 Токен DWORD содержит четыре 32-разрядных целых числа со знаком.
D3DSIO_TEXCOORD
Инструкция TEXCOORD копирует данные координат текстуры (UVW1) в виде цветовых данных (RGBA).


Формат

маркер инструкции , содержащий D3DSIO_TEXCOORD.

токен конечного параметра.

маркер параметра источника. Маркер исходного параметра предназначен только для пиксельного шейдера версии 1_4.


Комментарии

Инструкции ассемблеров texcoord и texcrd используют код операции D3DSIO_TEXCOORD.

Инструкция texcoord применяется к пиксельным шейдерам версий от 1_0 до 1_3; у него есть один маркер конечного параметра и с ним не связан маркер исходного параметра.

Инструкция texcrd применяется к пиксельным шейдерам версии 1_4; у него есть один маркер конечного параметра и один маркер исходного параметра, связанный с ним.
D3DSIO_TEXKILL
Инструкция TEXKILL отменяет отрисовку текущего пикселя, если какой-либо из первых трех компонентов (UVW) координат текстуры меньше нуля.


Формат

маркер инструкции , содержащий D3DSIO_TEXKILL.

токен конечного параметра (ведет себя аналогично исходному маркеру).


Комментарии

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


К маркеру назначения применяются следующие функции:

  • Необходимо использовать временный (D3DSPR_TEMP) или тип регистра текстуры (D3DSPR_TEXTURE).

  • Если используется временный регистр, все компоненты должны быть ранее записаны.

  • Если используется регистр текстуры, все считываемые компоненты должны быть объявлены.

  • Необходимо указать полную маску записи.

D3DSIO_TEX
Инструкция TEX загружает назначение с цветными данными (RGBA), которые извлекается из исходной текстуры.


Формат

маркер инструкции , содержащий D3DSIO_TEX.

маркер конечного параметра , использующий тип регистра D3DSPR_PREDICATE.

Следующие исходные токены предназначены только для пиксельного шейдера версии 1_4 и более поздних версий:

— первый маркер исходного параметра предоставляет координаты текстуры для образца текстуры.

— второй маркер исходного параметра, использующий тип регистра D3DSPR_SAMPLER. Второй маркер исходного параметра определяет номер выборки текстуры для выборки.


Комментарии

Инструкции ассемблеров tex и texld используют код операции D3DSIO_TEX.

Инструкция tex применяется к пиксельным шейдерам версий от 1_0 до 1_3; у него есть один маркер конечного параметра и с ним не связаны маркеры исходных параметров.

Инструкция texld применяется к пиксельным шейдерам версии 1_4 и более поздних версий; он имеет один маркер конечного параметра и два маркера исходного параметра, связанные с ним.
D3DSIO_TEXBEM
Инструкция TEXBEM применяет преобразование карты среды удара путем изменения данных адреса текстуры целевого регистра с использованием данных об возмущении адресов (U,V) и двухадресной матрицы среды удара.


Формат

маркер инструкции , содержащий D3DSIO_TEXBEM.

токен конечного параметра.

маркер параметра источника.
D3DSIO_TEXBEML
Инструкция TEXBEML применяет преобразование карты среды с коррекцией яркости.


Формат

маркер инструкции , содержащий D3DSIO_TEXBEML.

токен конечного параметра.

маркер параметра источника.


Комментарии

Преобразование карты среды удара с коррекцией яркости выполняется путем изменения данных адреса текстуры целевого регистра с использованием данных возмущения адресов (U.V), двухмерной матрицы среды удара и яркости.
D3DSIO_TEXREG2AR
Инструкция TEXREG2AR интерпретирует компоненты альфа-и красного цвета источника как данные адреса текстуры (U,V), чтобы получить выборку текстуры на этапе, соответствующем номеру регистра назначения. Результат хранится в назначении.


Формат

маркер инструкции , содержащий D3DSIO_TEXREG2AR.

токен конечного параметра.

маркер параметра источника.


Комментарии

Инструкция TEXREG2AR полезна для операций переназначивания цветового пространства. Он поддерживает двумерные (2-D) координаты.

В исходном регистре должны использоваться неподписанные данные; Если в исходном регистре используются подписанные или смешанные данные, операция выдает недопустимые результаты.
D3DSIO_TEXREG2GB
Инструкция TEXREG2GB интерпретирует компоненты зеленого и синего цветов источника как данные адреса текстуры (U,V), чтобы получить выборку текстуры на этапе, соответствующем номеру регистра назначения. Результат хранится в месте назначения.


Формат

маркер инструкций , содержащий D3DSIO_TEXREG2GB.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкция TEXREG2GB полезна для операций переназначивания цветового пространства. Он поддерживает двумерные (двухмерные) координаты.

В исходном регистре должны использоваться неподписанные данные; Если в регистре источника используются подписанные или смешанные данные, операция выдает недопустимые результаты.
D3DSIO_TEXM3x2PAD
Инструкция TEXM3x2PAD выполняет первую строку умножения матрицы из двух строк.


Формат

маркер инструкций , содержащий D3DSIO_TEXM3x2PAD.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкция TEXM3x2PAD не может использоваться сама по себе; Его необходимо объединить с инструкциями TEXM3x2TEX или TEXM3x2DEPTH .
D3DSIO_TEXM3x2TEX
Инструкция TEXM3x2TEX выполняет последнюю строку умножения матрицы 3x2 и использует результат в поиске текстуры.


Формат

маркер инструкций , содержащий D3DSIO_TEXM3x2TEX.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкцию TEXM3x2TEX необходимо использовать с инструкцией TEXM3x2PAD .
D3DSIO_TEXM3x3PAD
Инструкция TEXM3x3PAD выполняет первую или вторую строку умножения матрицы из трех строк.


Формат

маркер инструкций , содержащий D3DSIO_TEXM3x3PAD.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкция TEXM3x3PAD не может использоваться сама по себе; Его необходимо объединить с инструкцией TEXM3x3 , инструкцией TEXM3x3SPEC , инструкцией TEXM3x3VSPEC или инструкцией TEXM3x3TEX .
D3DSIO_TEXM3x3TEX
Инструкция TEXM3x3TEX выполняет умножение матрицы 3x3 и использует результат в поиске текстуры.


Формат

маркер инструкций , содержащий D3DSIO_TEXM3x3TEX.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкцию TEXM3x3TEX необходимо использовать с двумя инструкциями TEXM3x3PAD .

Он используется в качестве заключительного из трех инструкций, представляющих операцию умножения матрицы 3x3, за которой следует поиск текстуры. Матрица 3x3 состоит из координат текстуры третьего этапа текстуры и двух предыдущих этапов текстуры. Полученный трехкомпонентный вектор (U,V,W) используется для выборки текстуры на этапе 3. Любая текстура, назначенная двум предыдущим этапам текстуры, игнорируется. Матричное умножение 3x3 обычно полезно для ориентирования нормального вектора на правильное тангенсное пространство для отрисовываемой поверхности.
D3DSIO_RESERVED0
Эта инструкция зарезервирована для внутреннего использования.
D3DSIO_TEXM3x3SPEC
Инструкция TEXM3x3SPEC выполняет умножение матрицы 3x3 и использует результат в поиске текстуры. Используется для отражения отражения и сопоставления среды.


Формат

маркер инструкций , содержащий D3DSIO_TEXM3x3SPEC.

маркер параметра назначения.

первый токен исходного параметра.

второй токен исходного параметра.


Комментарии

Инструкцию TEXM3x3SPEC необходимо использовать с двумя инструкциями TEXM3x3PAD . Этот набор инструкций можно использовать для отражения отражения и сопоставления среды.

Инструкция TEXM3x3SPEC выполняет окончательную строку умножения матрицы 3x3, использует результирующий вектор в качестве нормального вектора для отражения вектора луча глаза, а затем использует отраженный вектор для поиска текстуры. Шейдер считывает вектор луча глаза из постоянного регистра. Матричное умножение 3x3 обычно полезно для ориентирования нормального вектора на правильное тангенсное пространство для отрисовываемой поверхности.

Матрица 3x3 состоит из координат текстуры третьего этапа текстуры и двух предыдущих этапов текстуры. Полученный вектор после отражения (U,V,W) используется для выборки текстуры на заключительном этапе текстуры. Любая текстура, назначенная двум предыдущим этапам текстуры, игнорируется.
D3DSIO_TEXM3x3VSPEC
Инструкция TEXM3x3VSPEC выполняет умножение матрицы 3x3 и использует результат в поиске текстуры.


Формат

маркер инструкций , содержащий D3DSIO_TEXM3x3VSPEC.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкцию TEXM3x3VSPEC необходимо использовать с двумя инструкциями TEXM3x3PAD . Этот набор инструкций можно использовать для отражения отражения и сопоставления среды, где вектор луча глаза не является постоянным. Если вектор луча глаза является постоянным, инструкция TEXM3x3SPEC выполняет те же матричное умножение и поиск текстуры.

Инструкция TEXM3x3VSPEC выполняет окончательную строку операции умножения матрицы 3x3, интерпретирует результирующий вектор как нормальный вектор для отражения вектора луча глаза, а затем использует отраженный вектор в качестве адреса текстуры для поиска текстуры. Он работает так же, как TEXM3X3SPEC, за исключением того, что вектор луча глаза берется из четвертого компонента координат текстуры. Матричное умножение 3x3 обычно полезно для ориентирования нормального вектора на правильное тангенсное пространство для отрисовываемой поверхности.

Матрица 3x3 состоит из координат текстуры третьего этапа текстуры и двух предыдущих этапов текстуры. Полученный вектор послерефлексии (UVW) используется для выборки текстуры на этапе 3. Любая текстура, назначенная двум предыдущим этапам текстуры, игнорируется.
D3DSIO_EXPP
Инструкция EXPP обеспечивает экспоненциальную степень частичной точности 2x.


Формат

маркер инструкций , содержащий D3DSIO_EXPP. Длина инструкции — 2.

маркер параметра назначения.

токен исходного параметра. Требует явного использования репликации swizzle, то есть необходимо указать компонент Swizzle X, Y, Z или W (либо эквивалент R, G, B или A).


Комментарии

Инструкция EXPP обеспечивает по крайней мере 10 битов точности.
D3DSIO_LOGP
Инструкция LOGP вычисляет log decimal (x) с частичной точностью.


Формат

маркер инструкции , содержащий D3DSIO_LOGP. Длина инструкции — 2.

маркер параметра назначения.

токен исходного параметра. Требует явного использования репликации swizzle, то есть необходимо указать компонент Swizzle X, Y, Z или W (либо эквивалент R, G, B или A).


Комментарии

Инструкция LOGP обеспечивает по крайней мере 10 битов точности.
D3DSIO_CND
Инструкция CND выбирает между вторым и третьим источниками, основываясь на том, что первый источник больше 0,5, и сохраняет результат в месте назначения.


Формат

маркер инструкции , содержащий D3DSIO_CND.

маркер параметра назначения.

первый токен исходного параметра.

второй токен исходного параметра.

маркер третьего исходного параметра.
D3DSIO_DEF
Инструкция DEF определяет значение константы, которое должно загружаться при каждом задании шейдера на устройство. Эту инструкцию можно использовать во всех версиях вершинных шейдеров. Константы, заданные текущим шейдером вершин, имеют приоритет над константами, заданными операцией D3DDP2OP_SETVERTEXSHADERCONST.


Формат

маркер инструкции , содержащий D3DSIO_DEF. Длина инструкции — 5.

маркер параметра назначения. Тип регистра должен быть D3DSPR_CONST, D3DSPR_CONST2, D3DSPR_CONST3 или D3DSPR_CONST4.

4 маркера DWORD. 4-D число с плавающей запятой или 4-D целочисленное число.
D3DSIO_TEXREG2RGB
Инструкция TEXREG2RGB интерпретирует компоненты красного, зеленого и синего цветов (RGB) источника как данные адреса текстуры (U, V, W) для выборки текстуры на этапах, соответствующих номеру регистра назначения. Результат хранится в месте назначения.


Формат

маркер инструкций , содержащий D3DSIO_TEXREG2RGB.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкция TEXREG2RGB полезна для операций переназначивания цветового пространства. Он поддерживает двумерные (2-D) и трехмерные (3-D) координаты. Его можно использовать так же, как инструкцию TEXREG2AR или TEXREG2GB инструкцию для переназначение двухсерийных данных. Однако инструкция TEXREG2RGB также поддерживает объемные данные, поэтому их можно использовать с картами кубов и текстурами объемных томов.
D3DSIO_TEXDP3TEX
Инструкция TEXDP3TEX выполняет трехкомпонентное точечное произведение и использует результат для поиска объемной текстуры.


Формат

маркер инструкции , содержащий D3DSIO_TEXDP3TEX.

маркер параметра назначения.

токен исходного параметра.
D3DSIO_TEXM3x2DEPTH
Инструкция TEXM3x2DEPTH вычисляет значение глубины, которое будет использоваться при тестировании глубины для пикселя.


Формат

маркер инструкции , содержащий D3DSIO_TEXM3x2DEPTH.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкцию TEXM3x2DEPTH необходимо использовать с инструкцией TEXM3x2PAD .
D3DSIO_TEXDP3
Инструкция TEXDP3 выполняет трехкомпонентное точечное произведение между данными в номере регистра текстуры и набором координат текстуры, соответствующим номеру регистра назначения.


Формат

маркер инструкции , содержащий D3DSIO_TEXDP3.

маркер параметра назначения.

токен исходного параметра.
D3DSIO_TEXM3x3
Инструкция TEXM3x3 выполняет умножение матрицы 3x3 при использовании в сочетании с двумя инструкциями TEXM3x3PAD .


Формат

маркер инструкций , содержащий D3DSIO_TEXM3x3.

маркер параметра назначения.

токен исходного параметра.


Комментарии

Инструкцию TEXM3x3 необходимо использовать с двумя TEXM3X3PAD инструкциями. Он используется в качестве заключительного из трех инструкций, представляющих операцию умножения матрицы 3x3. Матрица 3x3 состоит из координат текстуры третьего этапа текстуры и двух предыдущих этапов текстуры. Любая текстура, назначенная любому из трех этапов текстуры, игнорируется.

Инструкция TEXM3x3 аналогична инструкции TEXM3x3TEX без поиска текстуры.
D3DSIO_TEXDEPTH
Инструкция TEXDEPTH вычисляет значение глубины, которое будет использоваться в проверке сравнения буфера глубины пикселей.


Формат

маркер инструкций , содержащий D3DSIO_TEXDEPTH.

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


Формат

маркер инструкции , содержащий D3DSIO_CMP.

маркер параметра назначения.

первый токен исходного параметра.

второй токен исходного параметра.

маркер третьего исходного параметра.
D3DSIO_BEM
В инструкции BEM применяется преобразование схемы среды с повышением.


Формат

маркер инструкций , содержащий D3DSIO_BEM.

маркер параметра назначения.

первый токен исходного параметра.

второй токен исходного параметра.
D3DSIO_DP2ADD
Инструкция DP2ADD выполняет двухточечное точечный продукт и скалярное сложение и сохраняет результат в месте назначения.


Формат

маркер инструкции , содержащий D3DSIO_DP2ADD. Длина инструкции — 4.

маркер параметра назначения.

первый токен исходного параметра.

второй токен исходного параметра.

маркер третьего исходного параметра.
D3DSIO_DSX
Инструкция DSX вычисляет скорость изменения источника в направлении x и сохраняет результат в месте назначения.


Формат

маркер инструкции , содержащий D3DSIO_DSX. Длина инструкции — 2.

маркер параметра назначения. Принимает все маски записи.

токен исходного параметра. Принимает все повороты.


Комментарии

Инструкция DSX всегда вычисляет градиенты текущего содержимого регистров в пикселях, независимо от того, активны ли пиксели из-за управления потоком или из-за того, что они находятся вне границы примитива. Эти пиксели выполняются в режиме lockstep.
D3DSIO_DSY
Инструкция DSY вычисляет скорость изменения источника в направлении y и сохраняет результат в месте назначения.


Формат

маркер инструкций , содержащий D3DSIO_DSY. Длина инструкции — 2.

маркер параметра назначения. Принимает все маски записи.

токен исходного параметра. Принимает все повороты.


Комментарии

Инструкция DSY всегда вычисляет градиенты для текущего содержимого регистров в пикселях, независимо от того, активны ли пиксели из-за управления потоком или из-за того, что они находятся вне границы примитива. Эти пиксели выполняются в режиме lockstep.
D3DSIO_TEXLDD
Инструкция TEXLDD выполняет выборку текстуры, используя координаты текстуры в первом исходном токене, выборке, заданной вторым исходным токеном, и градиентах (DSX и DSY) из третьего и четвертого исходных маркеров.


Формат

маркер инструкции , содержащий D3DSIO_TEXLDD. Длина инструкции — 5.

маркер параметра назначения. Принимает все маски записи.

первый токен исходного параметра.

второй маркер параметра источника, который должен использовать тип регистра D3DSPR_SAMPLER. Поддерживаемые состояния выборки — D3DSAMP_MAXMIPLEVEL и D3DSAMP_MIPMAPLODBIAS.


Комментарии

Все источники поддерживают произвольные повороты.

Все маски записи действительны в назначении.
D3DSIO_SETP
Инструкция SETP задает регистр предиката.


Формат

маркер инструкции , содержащий D3DSIO_SETP. Длина инструкции — 3.

токен конечного параметра , использующий тип регистра D3DSPR_PREDICATE. Требуются маски записи.

первый токен исходного параметра. Необходимо указать компоненты Swizzle.

второй токен исходного параметра. Необходимо указать компоненты Swizzle.


Комментарии

Для каждого канала, который можно записать в соответствии с маской записи назначения, сохраните логический результат операции сравнения между соответствующими каналами источников (после разрешения сверток модификатора источника).
D3DSIO_TEXLDL
Инструкция TEXLDL выполняет выборку текстуры в определенном образце, используя предоставленные координаты текстуры. Определенный уровень детализации (LOD), который является выборкой, должен быть указан в качестве четвертого компонента (W) координаты текстуры.


Формат

маркер инструкции , содержащий D3DSIO_TEXLDL. Длина инструкции — 3.

токен конечного параметра , использующий тип регистра D3DSPR_PREDICATE.

Первый маркер параметра источника предоставляет координаты текстуры для примера текстуры.

второй токен параметра источника, использующий тип регистра D3DSPR_SAMPLER. Определяет номер образца текстуры для выборки. Невозможно указать модификатор источника Negate. Можно указать Swizzle. Номер выборки должен быть объявлен в начале шейдера.


Комментарии

Значения по умолчанию для отсутствующих компонентов маски записи конечного маркера — 0 или 1 и зависят от формата текстуры.

Количество координат, необходимых для выполнения выборки текстуры, зависит от того, как был объявлен номер выборки. Если он был объявлен как куб, требуется 3-компонентная координата текстуры (RGB). При проверке необходимо, чтобы координаты, предоставленные texld , были достаточными для измерения текстуры, объявленного для выборки. Допустима выборка текстуры с меньшими размерами, чем в координате текстуры. И наоборот, выборка текстуры с более высокими размерами, чем в координате текстуры, недопустима.

Выборка неподписанных текстур RGB приводит к значению с плавающей точкой от 0,0 до 1,0.

Выборка текстур со знаком приводит к значению float от -1,0 до 1,0.

Выборка текстур с плавающей запятой приводит к сохранению диапазона Float16 до MAX_FLOAT16 или к диапазону float32–Max конвейера.
D3DSIO_BREAKP
Инструкция BREAK PRED выходит из текущего цикла в ближайшем конце или конце, используя один из компонентов регистра предиката в качестве условия, чтобы определить, следует ли выполнять инструкцию.


Формат

маркер инструкции , содержащий D3DSIO_BREAKP.

маркер параметра источника , использующий тип регистра D3DSPR_PREDICATE с репликацией swizzle (каждый канал использует один и тот же исходный компонент). Допускается модификатор источника NOT (0xd) в битах 27:24.
D3DSIO_PHASE
Применяется только к шейдеру пикселей версии 1_4.

Инструкция PHASE отмечает переход между пиксельным шейдером версии 1 и 2. Если инструкция этапа отсутствует, весь шейдер выполняется так, как будто это шейдер этапа 2.


Формат

маркер инструкции , содержащий D3DSIO_PHASE.


Комментарии

Инструкции шейдера, которые выполняются до инструкции PHASE, являются инструкциями этапа 1. Все остальные инструкции являются инструкциями этапа 2. Благодаря двум этапам инструкций максимальное количество инструкций на шейдер увеличивается.

Альфа-компонент временных регистров не сохраняется в течение фазового перехода. Другими словами, альфа-компонент должен быть повторно инициализирован после инструкции этапа.
D3DSIO_COMMENT
Указывает маркер комментария.
D3DSIO_END
Указывает конечный маркер.
D3DSIO_FORCE_DWORD
Принудительно применяет 32-разрядный размер.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Верхняя часть d3d9types.h