Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Шейдеры пикселей зависят от регистров для получения данных вершин, вывода данных пикселей, хранения временных результатов во время вычислений и определения этапов выборки текстуры. Существует несколько типов регистров, каждый из которых имеет уникальные функциональные возможности. В этом разделе содержатся справочные сведения о входных и выходных регистрах, реализованных шейдером пикселей версии 3_0.
Новые регистры
Входной регистр
Входные регистры (v#) теперь полностью с плавающей запятой и регистр координат текстуры(t#) были консолидированы в него. dcl_semantics (sm3 - ps asm) в верхней части шейдера используется для описания того, что содержится в определенной Input_Register. Семантика для типов пикселей представлена (аналогично стороне вершины) для этой модели. При определении входных регистров входные регистры не выполняются как цвета (например, координаты текстуры). Оценка регистров, определенных как цвет, отличается от координат текстуры при многосамплинге.
Регистрация лиц
Регистр лиц (vFace) является новым для этой модели. Это скалярный регистр с плавающей запятой, который в конечном итоге будет содержать примитивную область. Однако в ps_3_0 допустимо только знак этого регистра. Таким образом, если значение меньше нуля (бит знака задан отрицательный) примитивом является заднее лицо (область является отрицательной, счетчиком). Поэтому в ps_3_0 имеет смысл сравнить этот регистр только с 0 (> 0 или < 0). Внутри шейдера пикселей приложение может принять решение о том, какой метод освещения следует использовать. Двустороннее освещение можно достичь таким образом. Для этого регистра требуется объявление, поэтому необъявленное использование будет помечено как ошибка. Для строк и примитивов точек этот регистр не определен. Регистр лиц можно использовать только в качестве условия со следующими инструкциями: setp_comp - ps, if_comp - psили break_comp - ps.
Регистрация счетчика циклов
Для этой модели новая регистр счетчика циклов (aL). Он автоматически увеличивается в каждом выполнении цикла — ps/endloop — ps блока. При необходимости его можно использовать в блоке для относительной адресации. Недопустимо использовать регистр счетчика циклов за пределами цикла.
Регистрация позиции
Регистр позиции (vPos) является новым для этой модели. Он содержит текущие пиксели (x, y) в соответствующих каналах. Каналы (z, w) не определены. Для этого регистра требуется объявление, поэтому необъявленное использование будет помечено как ошибка. При объявлении этот регистр должен иметь именно одну из следующих маск: X, Y, XY.
Типы входных регистров
| Регистрировать | Имя | Считать | R/W | # Чтение портов | # Reads/inst | Измерение | RelAddr | По умолчанию | Требуется DCL |
|---|---|---|---|---|---|---|---|---|---|
| v# | входной регистр | 10 | R | 1 | Неограниченный | 4 | Аль | Никакой | Да |
| r# | временный регистр | 32 | R/W | 3 | Неограниченный | 4 | Нет | Никакой | Нет |
| c# | постоянного плавающего регистра | 224 | R | 1 | Неограниченный | 4 | Нет | 0000 | Нет |
| я# | целочисленный регистр констант | 16 | R | 1 | 1 | 4 | Нет | 0000 | Нет |
| b# | логического регистра | 16 | R | 1 | 1 | 1 | Нет | ЛОЖНЫЙ | Нет |
| p0 | регистр предиката | 1 | R | 1 | 1 | 1 | Нет | Никакой | Нет |
| s# | Sampler (Direct3D 9 asm-ps) | 16 | R | 1 | 1 | 4 | Нет | См. примечание 1 | Да |
| vFace | Face_Register | 1 | R | 1 | Неограниченный | 1 | Нет | Никакой | Да |
| vPos | Position_Register | 1 | R | 1 | Неограниченный | 4 | Нет | Никакой | Да |
| Аль | Loop_Counter_Register | 1 | R | 1 | Неограниченный | 1 | n/a | Никакой | Нет |
Примечания:
- Значения по умолчанию для подстановок примеров существуют, но значения зависят от формата текстуры.
Число портов чтения — это количество разных регистров (для каждого типа регистра), которые можно прочитать в одной инструкции.
Типы выходных регистров
| Регистрировать | Имя | Считать | R/W | Измерение | RelAddr | По умолчанию | Требуется DCL |
|---|---|---|---|---|---|---|---|
| oC# | регистр цвета выходных данных | См. текстуры нескольких элементов (Direct3D 9) | W | 4 | Нет | Никакой | Нет |
| oDepth | регистра глубины вывода | 1 | W | 1 | Нет | Никакой | Нет |
Связанные разделы