dcl_semantics (sm3 – ps asm)

Declara a associação entre a saída do sombreador de vértice e a entrada do sombreador de pixel.

Sintaxe

dcl_semantics [_centroid] dst[.write_mask]

 

Em que:

  • _semantics: identifica o uso de dados pretendido e pode ser qualquer um dos valores contidos em D3DDECLUSAGE (sem o prefixo D3DDECLUSAGE_). Além disso, um índice inteiro pode ser acrescentado à semântica para distinguir os parâmetros que usam uma semântica semelhante.
  • [_Centroid] é um modificador de instrução opcional. Há suporte para ele em instruções dcl_usage que declaram os registros de entrada e em instruções de pesquisa de textura. O centroide é acrescentado sem espaço.
  • dst: registro de destino. Confira Registros de ps_3_0.
  • write_mask: o mesmo registro de saída pode ser declarado várias vezes, cada vez com uma máscara de gravação exclusiva (para que semânticas diferentes possam ser aplicadas a componentes individuais). No entanto, a mesma semântica não pode ser usada várias vezes em uma declaração. Isso significa que os vetores precisam ter quatro componentes ou menos e não podem ultrapassar os limites de registro de quatro componentes (registros de saída individuais). Quando a semântica _psize é usada, ela deve ter uma máscara de escrita completa, pois é considerada escalar. Quando a semântica _position é usada, ela deve ter uma máscara de gravação completa porque todos os quatro componentes precisam ser escritos.

Comentários

Versões de sombreador de pixel 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
dcl_usage x x

 

Todas as instruções dcl_usage precisam aparecer antes da primeira instrução executável.

Exemplos de declarações

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)

Instruções do sombreador de pixel

Amostra de suavização