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)
Zugehörige Themen