Временный регистр (справочник по HLSL VS)
Временный регистр вершинного шейдера используется для хранения промежуточных результатов.
Перед использованием временного регистра необходимо инициализировать. Каждый временный регистр имеет доступ с одной записью и тройным доступом на чтение. Это означает, что одна инструкция шейдера может использовать до трех временных регистров в качестве входных данных.
Значения во временном регистре, оставшиеся от предыдущих вызовов вершинного шейдера, использовать нельзя.
Регистр состоит из свойств, определяющих поведение каждого регистра.
Свойство | Описание |
---|---|
Имя | r[n]. n — необязательный регистрационный номер. Значение по умолчанию равно 0, а — значение, используемое, если значение не указано. |
Count | Не более 12 регистров. |
Разрешения ввода-вывода | Read/write. Этот регистр можно считать или записать с помощью API или шейдера. |
Порты чтения | Число операций чтения регистра в одной инструкции равно 3. Временный регистр — это единственный регистр, который можно прочитать и записать несколько раз в одной инструкции. |
Каждый временный регистр имеет доступ с одной записью и тройным доступом на чтение. Таким образом, инструкция может содержать до трех временных регистров в наборе операндов источника входных данных.
Во временном регистре не могут использоваться значения, оставшиеся от предыдущих вызовов вершинного шейдера. Вершинные шейдеры, которые считывают значение из временного регистра перед записью в него, не смогут вызвать API Direct3D для создания вершинного шейдера.
Пример
Ниже приведен пример использования временного регистра:
def c4, 0,0,0,1
...
// Decompress position
mov r0.x, v0.x
mov r0.y, c4.w // 1
mov r0.z, v0.y
mov r0.w, c4.w // 1
// Compute theta from distance and time
mov r4.xz, r0 // xz
Версии вершинного шейдера | 1_1 | 2_0 | 2_sw | 2_x | 3_0 | 3_sw |
---|---|---|---|---|---|---|
Временная регистрация | x | x | x | x | x | x |
Связанные темы