Поделиться через


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)

Инструкции по шейдеру пикселей

Пример антиалиас