Маскирование целевого регистра
Маскирование указывает, какие компоненты целевого регистра будут обновлены с результатом инструкции. Регистры текстур имеют один набор правил и нетекстовые регистры имеют другой набор правил.
- dx9_graphics_reference_asm_vs_registers_modifiers_masking; в этом разделе содержатся правила применения масок к регистрам назначения.
- Texture_Register_Masks — регистры текстур имеют некоторые уникальные правила.
Маскирование целевого регистра
Как показано в следующей таблице, маскирование (где r является одним из допустимых регистров вершинных шейдеров ) можно применять к отдельным компонентам векторных данных.
Модификатор компонентов | Описание |
---|---|
r.{x}{y}{z}{w} | Маска назначения |
- Как правило, указание маски записи регистра назначения является хорошим стилем написания кода. Это упрощает чтение и обслуживание кода.
- Любое сочетание компонентов может быть указано (включая отсутствие компонентов), до тех пор, пока x предшествует y, y предшествует z, и z предшествует w.
- Регистры выходных данных oPts и oFog должны использовать только одну маску.
- Для некоторых инструкций требуется использование регистров назначения с одной маской записи: exp, expp, log, logp, pow, rcp и rsq.
- В версии 1.0 инструкция frc требовала одного из следующих комбинаций маски: .x или .y или .xy. Версия 2.0 не имеет ограничения маски.
- sincos требует одного из следующих сочетаний маски: .x или .y или Xyz.
- m3x2 требует маски записи .xy.
- m3x3 и m4x3 требуют маски записи .xyz.
- m3x4 и m4x4 требуют маски записи xyz или маски записи по умолчанию (xyzw).
Маски регистра текстур
Правила проверки для использования модификаторов в регистрах координат текстуры являются более жесткими, чем правила проверки для других регистров.
- Если oTn написан, все предыдущие регистры (oTn-1 ~ oT0) также должны быть записаны.
- Маска "объединенной" записи для любого регистра oT# должна быть ровно одной из следующих:
- .x
- .xy
- .xyz
- Xyzw (что эквивалентно отсутствию модификаторов компонентов)
Например, шейдер вершин может записывать данные в регистры текстур с помощью отдельных инструкций.
oT1.y
oT0.y
oT2
oT0.xz
oT1.x
Кроме того, инструкции можно объединить.
oT0.xyz
oT1.xy
oT2.xyzw
Эти ограничения применяются только к регистрам координат текстуры.
Связанные разделы