dcl_semantics (sm3 – ps asm)

Deklarieren Sie die Zuordnung zwischen der Ausgabe des Vertex-Shaders und der Eingabe des Pixel-Shaders.

Syntax

dcl_semantics [_centroid] dst[.write_mask]

 

Hierbei gilt:

  • _semantics: Identifiziert die beabsichtigte Datennutzung, und kann ein beliebiger Wert in D3DDECLUSAGE (ohne das Präfix „D3DDECLUSAGE_“) sein. Darüber hinaus kann ein ganzzahliger Index an die Semantik angefügt werden, um Parameter zu unterscheiden, die ähnliche Semantik verwenden.
  • [_Centroid] ist ein optionaler Anweisungsmodifizierer. Er wird in dcl_usage-Anweisungen unterstützt, die die Eingaberegister und Anweisungen für die Textursuche deklarieren. Centroid wird ohne Leerzeichen angefügt.
  • dst: Zielregister. Weitere Informationen finden Sie unter ps_3_0-Register.
  • write_mask: Das gleiche Ausgaberegister kann mehrmals deklariert werden, jedes Mal mit einer eindeutigen Schreibmaske (sodass unterschiedliche Semantik auf einzelne Komponenten angewendet werden kann). Dieselbe Semantik kann jedoch nicht mehrmals in einer Deklaration verwendet werden. Dies bedeutet, dass Vektoren vier Komponenten oder weniger sein müssen und nicht über die Registergrenzen der vier Komponenten (einzelne Ausgaberegister) hinausgehen können. Wenn die _psize-Semantik verwendet wird, sollte sie über eine vollständige Schreibmaske verfügen, da sie als Skalar betrachtet wird. Wenn die _position-Semantik verwendet wird, sollte sie über eine vollständige Schreibmaske verfügen, da alle vier Komponenten geschrieben werden müssen.

Hinweise

Versionen des Pixel-Shaders 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
dcl_usage x x

 

Alle dcl_usage-Anweisungen müssen vor der ersten ausführbaren Anweisung angezeigt werden.

Deklarationsbeispiele

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)

Anweisungen des Pixel-Shaders

Antialias-Beispiel