Поделиться через


Временный регистр (справочник по HLSL VS)

Временный регистр шейдера вершин используется для хранения промежуточных результатов.

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

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

Регистр состоит из свойств, определяющих поведение каждого регистра.

Свойство Описание
Имя r[n]. n — необязательный номер регистра. Значение по умолчанию равно 0 и используется, если значение не указано.
Считать Не более 12 регистров.
Разрешения ввода-вывода Чтение и запись. Этот регистр можно читать или записывать с помощью 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

 

регистры шейдера вершин