Маскирование регистра назначения
Маскирование указывает, какие компоненты целевого регистра будут обновлены в соответствии с результатом инструкции. Регистры текстур имеют один набор правил, а нетекстовые регистры — другой набор правил.
- dx9_graphics_reference_asm_vs_registers_modifiers_masking — в этом разделе содержатся правила применения масок к регистрам назначения.
- Texture_Register_Masks — регистры текстур имеют некоторые уникальные правила.
Маскирование регистра назначения
Как показано в следующей таблице, маскирование (где — это один из допустимых регистров вершинного шейдера вершин) можно применять к отдельным компонентам векторных данных.
Модификатор компонента | Описание |
---|---|
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
Эти ограничения применяются только к регистрам координат текстуры.
Связанные темы