dcl_semantics (sm3 - ps asm)
頂点シェーダーの出力とピクセル シェーダーの入力の関係を宣言します。
構文
dcl_semantics [_centroid] dst[.write_mask] |
この場合
- _semantics:想定されたデータの使用方法を識別します。これは、D3DDECLUSAGE の任意の値を指定できます (D3DDECLUSAGE_ プレフィックスは取り除きます)。また、整数インデックスをセマンティクスに付加すると、同様のセマンティクスを使用するパラメーターを区別できます。
- [_Centroid] はオプションの命令修飾子です。この修飾子は、入力レジスタを宣言する dcl_usage 命令およびテクスチャー参照命令でサポートされます。centroid は空白を入れずに追加します。
- dst:デスティネーション レジスタです。「レジスタ - ps_3_0」を参照してください。
- write_mask:同じデスティネーション レジスタを複数回宣言でき (したがって、個々の成分に対して複数のセマンティクスを適用でき)、宣言するたびに一意の書き込みマスクを指定することができます。ただし、宣言内では、同じセマンティクスを複数回使用することはできません。これは、ベクトルの成分は 4 つ以下でなければならず、4 成分のレジスタ境界 (個々の出力レジスタ) を越えてはならないことを意味します。_pointsize のセマンティクスを使用すると、スカラーと見なされるので、書き込みマスクを持たせる必要があります。_position のセマンティクスを使うと、4 成分すべてを書き込まなければならないので、完全書き込みマスクを持たせる必要があります。
解説
ピクセル シェーダーのバージョン | 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)