Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Регистры выходных данных цвета шейдера пикселей (oC#) — это регистры, доступные только для записи, которые выводят результаты для нескольких целевых объектов отрисовки.
Синтаксис
| oC# |
|---|
Где:
| Имя | Описание |
|---|---|
| oC0 | Целевой объект отрисовки #0 |
| oC1 | Целевой объект отрисовки #1 |
| oC2 | Целевой объект отрисовки #2 |
| oC3 | Целевой объект отрисовки #3 |
Замечания
- Если oCn записывается, но отсутствует соответствующий целевой объект отрисовки, то эта запись в oCn игнорируется.
- Состояния отрисовки D3DRS_COLORWRITEENABLE, D3DRS_COLORWRITEENABLE1, D3DRS_COLORWRITEENABLE2 и D3DRS_COLORWRITEENABLE3 определяют, какие компоненты oCn в конечном итоге записываются в целевой объект отрисовки (после смешивания, если применимо). Если шейдер записывает некоторые, но не все компоненты, определенные состояниями отрисовки D3DRS_COLORWRITEENABLE*, для заданного регистра oCn, то незаписанные каналы создают неопределенные значения в соответствующем целевом объекте отрисовки. Если ни один из компонентов oCn не записывается, соответствующий целевой объект отрисовки не должен быть обновлен вообще (как указано выше), поэтому состояния отрисовки D3DRS_COLORWRITEENABLE* не применяются.
Ограничения модели шейдера 2
- oCn можно записать только с помощью инструкции mov - ps.
- oC0 должен быть всегда записан в шейдере.
- Исходный swizzle (кроме Xyzw = swizzle по умолчанию) или модификатор источника не допускается при записи в любой oCn.
- При записи в любой объект oCn не допускается маска записи назначения (кроме Xyzw = маска по умолчанию) или модификатор инструкций.
- Если oCn записывается, то oC0 - oCn-1 также должен быть записан. Например, для записи в oC2 необходимо также записать в oC0 и oC1.
- По крайней мере одна запись в любой oC# для каждого шейдера разрешена.
- Для ps_2_x и ps_3_0 нельзя записывать в регистры oC# и oD# в динамическом элементе управления потоками или предикатации (запись в oC# внутри статического элемента управления потоком хорошо).
Ограничения модели шейдера 3
- Для ps_3_0 выходные регистры oC# и oD# можно записывать любое количество раз. Выходные данные шейдера пикселей поступают из содержимого выходных регистров в конце выполнения шейдера. Если запись в выходной регистр не происходит, возможно, из-за управления потоком или если шейдер просто не написал его, соответствующий отрисовщик также не обновляется. Если подмножество каналов в выходном регистре записывается, то неопределенные значения записываются в оставшиеся каналы.
- Для ps_3_0 регистры oC# можно записывать с помощью любых записных масок.
- Для ps_2_x и ps_3_0 нельзя записывать в регистры oC# и oD# в динамическом элементе управления потоками или предикатации (запись в oC# внутри статического элемента управления потоком хорошо).
- Вы не можете выполнять никаких вычислений градиента (или операций, которые неявно вызывают вычисления градиента, такие как texld - ps_2_0 и вверх, texldb - ps, texldp - ps) внутри операторов управления потоками, условия ветвления которых зависят от каждой примитивной основы (т. е. инструкции динамического управления потоком). Предикация инструкций не считается динамическим элементом управления потоком.
Связанные разделы