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)
関連トピック