dcl_semantics (sm3 - ps asm)
Объявите связь между выходными данными шейдера вершин и входным шейдером пикселей.
Синтаксис
dcl_semantics [_centroid] dst[.write_mask]
Где:
- _semantics: определяет предполагаемое использование данных и может быть любым из значений в D3DDECLUSAGE (без префикса D3DDECLUSAGE_). Кроме того, целочисленный индекс можно добавить к семантике, чтобы различать параметры, использующие аналогичную семантику.
- [_Centroid] — это необязательный модификатор инструкций. Он поддерживается в dcl_usage инструкции, которые объявляют входные регистры и инструкции поиска текстур. Центроид добавляется без пробела.
- dst: конечная регистрация. См . ps_3_0 регистры.
- write_mask: один и тот же выходной регистр может объявляться несколько раз, каждый раз с уникальной маской записи (поэтому различные семантики можно применять к отдельным компонентам). Однако одну и ту же семантику нельзя использовать несколько раз в объявлении. Это означает, что векторы должны быть четырьмя компонентами или меньше, и не могут проходить через границы регистра четырех компонентов (отдельные регистры выходных данных). Если используется семантика _psize, она должна иметь полную маску записи, так как считается скалярной. Если используется семантика _position, она должна иметь полную маску записи, так как все четыре компонента должны быть записаны.
Замечания
Версии шейдера пикселей | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
dcl_usage | x | x |
Все dcl_usage инструкции должны отображаться перед первой исполняемой инструкцией.
Примеры объявлений
ps_3_0
; Declaring inputs
dcl_normal v0.xyz
dcl_blendweight v0.w ; Must be same reg# as normal, matching vshader packing
dcl_texcoord1 v1.y ; Mask can be any subset of mask from vshader semantic
dcl_texcoord0 v1.zw; Has to be same reg# as texcoord1, to match vshader
; Declaring samplers
dcl_2d s0
dcl_2d s1
def c0, 0, 0, 0, 0
mov r0.x, v1.y ; texcoord1
mov r0.y, c0
texld r0, r0, s0
texld r1, v1.zw, s1
...
(output regs in ps_3_0 are same as ps_2_0: oC0-oC3, oDepth)
См. также