ソース レジスタのスウィズリング (HLSL PS リファレンス)

Swizzling は、ソース レジスタ コンポーネントを一時レジスタ コンポーネントにコピーする機能を指します。 Swizzling はソース レジスタ データには影響しません。 命令が実行される前に、ソース レジスタ内のデータが一時レジスタにコピーされます。

ソース スウィズリング

ソース スウィズルを使用すると、計算のためにレジスタを読み取る前に、ソース レジスタの個々のコンポーネントが同じソース レジスタの 4 つのコンポーネントの値を受け取ることができます。

たとえば、.zxxy swizzle は次のことを意味します。

  • .x コンポーネントは.z コンポーネントの値を受け取ります
  • .y コンポーネントは.x コンポーネントの値を受け取ります
  • .z コンポーネントは .x コンポーネントの値を受け取ります
  • .w コンポーネントは.y コンポーネントの値を受け取ります

コンポーネントは任意の順序で表示できます。 4 つ未満のコンポーネントを指定すると、最後のコンポーネントが繰り返されます。 次に例を示します。

.xy  = .xyyy
.wzx = .wzxx
.z   = .zzzz

コンポーネントが指定されていない場合、スウィズリングは適用されません。

一部の手順では、ソース スウィズルに制限があります。 これらは、優先される命令参照ページに一覧表示されます。

ピクセル シェーダーのバージョン 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
.x x x x x x x
。Y x x x x x x
。Z ○* ○* ○* x x x x x x
。W x x x x x x x x x
.xyzw (既定値) x x x x x x x x x
.yzxw x x x x x
.zxyw x x x x x
.wzyx x x x x x
任意のスウィズル x x x x

 

* 宛先書き込みマスクが .w (.a) の場合にのみ使用できます。

任意のスウィズル

スウィズルは任意の順序でソースレジスタに適用できます。つまり、任意のソース レジスタは、任意の順序で任意のコンポーネント マスクを受け取ることができます。

Swizzle をレプリケートする

スウィズルをレプリケートすると、あるコンポーネントが別のコンポーネントにコピーされます。 これは、.x、.y、.z、.w swizzle コンポーネント (または .r、.g、.b、.a 相当) のいずれかを指定する必要があります。

ピクセル シェーダー ソース レジスタ修飾子

ps_1_1__ps_1_2__ps_1_3__ps_1_4 レジスタ

ps_2_0 レジスタ

ps_2_x レジスタ

ps_3_0 レジスタ