Различия в пиксельных шейдерах
Слоты инструкций
Каждая версия поддерживает разное количество максимальных слотов инструкций.
Версия | Максимальное число слотов инструкций |
---|---|
ps_1_1 | 4 текстуры + 8 арифметических |
ps_1_2 | 4 текстуры + 8 арифметических |
ps_1_3 | 4 текстуры + 8 арифметических |
ps_1_4 | 6 текстур + 8 арифметических на фазу |
ps_2_0 | 32 текстура + 64 арифметические |
ps_2_x | Не менее 96 слотов и до количества слотов в D3DCAPS9. D3DPSHADERCAPS2_0.NumInstructionSlots. См. D3DPSHADERCAPS2_0. |
ps_3_0 | Минимум 512 и до количества слотов в D3DCAPS9. MaxPixelShader30InstructionSlots. См. D3DPSHADERCAPS2_0. |
Сведения об ограничениях программных шейдеров см. в разделе Программные шейдеры.
Ограничения вложенного элемента управления потоком
Функции ps_1_x
Новые инструкции:
См . инструкции по ps_1_1, ps_1_2, ps_1_3 и ps_1_4.
Новые регистры:
См . ps_1_1__ps_1_2__ps_1_3__ps_1_4 Registers.
Функции ps_2_0
Новые функции
- Три новых поворота — .yzxw, .zxyw, .wzyx
- Число временных регистров (r#) увеличено до 12
- Число постоянных регистров с плавающей запятой (c#) увеличено до 32
- Число регистров координат текстуры(t#) увеличено до 8
Новые инструкции:
- Инструкции по настройке - dcl - (sm2, sm3 - ps asm), dcl_samplerType (sm2, sm3 - ps asm)
- Арифметические инструкции - abs - ps, crs - ps, dp2add - ps, exp - ps, frc - ps, log - ps, m3x2 - ps, m3x3 - ps, m3x4 - ps, m4x3 - ps, m4x4 - ps, max - ps, min - ps, nrm - ps, pow - ps, rcp - ps, rsq - ps, sincos - ps
- Инструкции по текстуре — texld — ps_2_0 и выше (другой синтаксис), texldb — ps, texldp — ps
Новые регистры:
Функции ps_2_x
Новые функции (см . D3DPSHADERCAPS2_0.):
- Управление динамическим потоком
- Управление статическим потоком
- Вложение для инструкций по управлению динамическим и статическим потоком
- Увеличено количество временных регистров(r#)
- Произвольный поворот источника
- Инструкции по градиенту
- Предикация
- Нет ограничения на чтение зависимой текстуры
- Ограничение инструкций текстуры отсутствует
Новые инструкции:
- Инструкции по управлению статическим потоком - if bool - ps, call - ps, callnz bool - ps, else - ps, endif - ps, rep - ps, endrep - ps, label - ps, ret - ps
- Инструкции по управлению динамическим потоком - break - ps, break_comp - ps, breakp - ps, callnz pred - ps, if_comp - ps, if pred - ps, setp_comp - ps
- Арифметические инструкции - dsx - ps, dsy - ps
- Инструкция текстуры — texldd — ps
Новые регистры:
- Регистр предиката (p0)
Функции ps_3_0
Новые функции
- Консолидированные 10 входных регистров(v#)
- Индексируемый входной цветной регистр (v#) с регистром счетчика цикла (aL)
- Число временных регистров(r#) увеличено до 32
- Число постоянных с плавающей запятой(c#) увеличено до 224
Новые инструкции:
- Инструкция по настройке — dcl_semantics (sm3 — ps asm)
- Инструкции по статическому потоку — цикл — ps, endloop — ps
- Арифметическая инструкция — sincos — ps (новый синтаксис)
- Инструкция текстуры — texldl — ps
Новые регистры:
- Входной регистр (v#)
- Регистр позиции (vPos)
- Face Register (vFace)
Связанные темы