ソース レジスタのスィズル
命令の実行前に、ソース レジスタ内のデータがテンポラリ レジスタにコピーされます。スィズルとは、ソース レジスタの任意の要素をテンポラリ レジスタの任意の要素にコピーする機能をいいます。スィズルによってソース レジスタのデータが変更されることはありません。
要素のスィズル
次の表に示すように、スィズルはソース レジスタ データの個々の要素に適用することができます (r は有効な頂点シェーダー入力「レジスタ - vs_1_1」の 1 つです)。
要素修飾子 | 説明 |
---|---|
r.[xyzw][xyzw][xyzw][xyzw] | ソースのスィズル |
- 常に 4 つのすべての要素がコピーされます。指定した要素が 4 つより少ない場合は、最後の要素が繰り返されます (xy は .xyyy の意味になります)。成分が指定されない場合、x が繰り返されます (.xxxx)。
- 要素は任意の順序で指定できます。v0.ywx は v0.ywxx になります。
- rgba 要素を、それぞれ xyzw の代わりに使用できます (r は x、g は y に対応します。それ以降も同様です)。
- exp、expp、log、logp、pow、rcp、rsq の各命令は、ソース レジスタの 1 つの要素のスィズルを実装します。これらの命令の結果は、4 つのすべてのデスティネーション レジスターの要素にコピーされます。
m3x2 - vs、m3x3 - vs、m4x3 - vs、m4x4 - vs の各命令では、スィズルを使用できません。