次の方法で共有


dcl_semantics (sm3 - ps asm)

頂点シェーダー出力とピクセル シェーダー入力との間の関連付けを宣言します。

構文

dcl_semantics [_centroid] dst[.write_mask]

 

ここで:

  • _semantics: 目的のデータ使用法を識別し、D3DDECLUSAGE の値のいずれか (D3DDECLUSAGE_ プレフィックスを除く) を指定できます。 さらに、整数インデックスをセマンティックに追加して、同様のセマンティクスを使用するパラメーターを区別できます。
  • [_Centroid] は、省略可能な命令修飾子です。 これは、入力レジスタを宣言する dcl_usage 命令とテクスチャ参照命令でサポートされています。 重心はスペースなしで追加されます。
  • dst: 宛先レジスタ。 「ps_3_0 レジスタ」を参照してください。
  • write_mask: 同じ出力レジスタを複数回宣言でき、毎回一意の書き込みマスクを使用できます (そのため、個々のコンポーネントに異なるセマンティクスを適用できます)。 ただし、宣言で同じセマンティックを複数回使用することはできません。 つまり、ベクトルは 4 コンポーネント以下である必要があり、4 コンポーネントのレジスタ境界 (個々の出力レジスタ) を越えることはできません。 _psize セマンティックを使用する場合は、スカラーと見なされるため、完全な書き込みマスクが必要です。 _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)

ピクセル シェーダー命令

アンチエイリアスのサンプル