Временный регистр (справочник по 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 |
Связанные разделы