dcl _ semantics (sm3 - ps asm)

Deklarieren Sie die Zuordnung zwischen Vertex-Shaderausgabe und Pixel-Shadereingabe.

Syntax

dcl _ semantics [ _ schwerpunkt ] dst [ .write _ mask]

Hierbei gilt:

  • _semantics: Identifiziert die beabsichtigte Datenverwendung und kann einer der Werte 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 eine ähnliche Semantik verwenden.
  • [_Schwerpunkt ] ist ein optionaler Anweisungsmodifizierer. Es wird für dcl-Verwendungsanweisungen unterstützt, die die Eingaberegister deklarieren, und _ für Anweisungen zur Textursuche. Der Schwerpunkt wird ohne Leerzeichen angefügt.
  • dst: Zielregister. Siehe ps _ 3 _ 0 Registers.
  • Schreibmaske: Dasselbe Ausgaberegister kann mehrmals deklariert werden, jedes Mal mit einer eindeutigen Schreibmaske (sodass unterschiedliche Semantik auf _ einzelne Komponenten angewendet werden kann). Die gleiche Semantik kann jedoch nicht mehrmals in einer Deklaration verwendet werden. Dies bedeutet, dass Vektoren vier Komponenten oder weniger sein müssen und nicht über Registergrenzen mit vier Komponenten (einzelne Ausgaberegister) hinweg gehen 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 _ Positionssemantik verwendet wird, sollte sie über eine vollständige Schreibmaske verfügen, da alle vier Komponenten geschrieben werden müssen.

Hinweise

Pixel-Shaderversionen 1_1 1_2 1 _ 3 1_4 2 _ 0 2 _ x 2 _ sw 3 _ 0 3 _ sw
dcl _ usage x x

Alle _ dcl-Verwendungsanweisungen 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 für Pixel-Shader

Antialias-Beispiel