texcrd — ps

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

Синтаксис

texcrd dst, src

 

where

  • dst — регистр назначения.
  • src — это регистр источника.

Комментарии

Версии шейдера пикселей 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texcrd x

 

Эта инструкция интерпретирует данные координат как цветовые данные (RGBA).

В этой инструкции не выполняется выборка текстуры. Актуальны только координаты текстуры, заданные на этом этапе текстуры.

При использовании texcrd следует учитывать следующие сведения о том, как данные копируются из исходного регистра в целевой регистр. Регистр координат исходной текстуры (t#) содержит данные в диапазоне [-D3DCAPS9. MaxTextureRepeat, D3DCAPS9. MaxTextureRepeat], в то время как целевой регистр (r#) может содержать данные только в диапазоне (вероятно, меньше) [-D3DCAPS9. PixelShader1xMaxValue, D3DCAPS9. PixelShader1xMaxValue]. Обратите внимание, что для пиксельного шейдера версии 1_4 — D3DCAPS9. Значение PixelShader1xMaxValue должно быть не менее восьми. Инструкция texcrd в процессе закрепления исходных данных, которые выходят за пределы целевого регистра, скорее всего, будет вести себя по-разному на другом оборудовании. Первый пиксельный шейдер версии 1_4 на рынке будет выполнять специальные зажимы для значений вне диапазона. Этот зажим предназначен для создания числа, которое может поместиться в целевой регистр, а также для сохранения поведения адресации текстуры для данных вне диапазона (см. раздел D3DTEXTUREADDRESS), если данные впоследствии будут использоваться для выборки текстуры. Однако новое оборудование от разных производителей может не проявлять такого поведения и просто отрезать данные в соответствии с диапазоном регистра назначения. Таким образом, самый безопасный способ действий при использовании texcrd пиксельного шейдера версии 1_4 заключается в предоставлении данных координат текстуры только в пиксельный шейдер, который уже находится в диапазоне [-8,8], чтобы не полагаться на способ аппаратных зажимов.

В отличие от texcoord_, texcrd не зажимает значения от 0 до 1.

Правила использования texcrd :

  1. Один и тот же модификатор .xyz или .xyw должен применяться к каждому чтению отдельного регистра t(n) в инструкции texcrd или texld.
  2. Результат четвертого канала texcrd не задан или не определен во всех случаях.
  3. Третий канал не задан или не определен для xyw_dw случае.

Примеры

Ниже приведен полный набор разрешенного синтаксиса для texcrd с учетом всех допустимых сочетаний модификатора источника и селектора и маски записи назначения. Обратите внимание, что нотацию RGBA и XYZW можно использовать взаимозаменяемо.

Копирует первые три канала регистра итератора координат текстуры t(n) в r(m). Четвертый канал r(m) не инициализирован.

texcrd  r(m).rgb, t(n).xyz  

// Produces the same result as the previous instruction
texcrd  r(m).rgb, t(n)

Помещает первый, второй и четвертый компоненты t(n) в первые три канала r(m). Четвертый канал r(m) не инициализирован.

texcrd  r(m).rgb, t(n).xyw

Ниже приведен пример проективного деления с использованием модификатора _dw.

В этом примере x/w и y/w копируются из t(n) в первые два канала r(m). Третий и четвертый каналы r(m) не инициализированы. Все данные, ранее записанные в третий канал r(m), будут потеряны. Данные в четвертом канале r(m) теряются из-за маркера фазы. Для версии 1_4 флаг D3DTTFF_PROJECTED игнорируется.

texcrd  r(m).rg,  t(n)_dw.xyw

Инструкции по шейдеру пикселей