D3DSHADER_INSTRUCTION_OPCODE_TYPE列挙 (d3d9types.h)

このセクションでは、 命令トークンの最初の 16 ビット (0 ~ 15) に含めることができるシェーダー操作コードの一覧を示します。 以降のセクションでは、操作コードに対応する命令のトークン形式について説明します。

構文

typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE {
  D3DSIO_NOP,
  D3DSIO_MOV,
  D3DSIO_ADD,
  D3DSIO_SUB,
  D3DSIO_MAD,
  D3DSIO_MUL,
  D3DSIO_RCP,
  D3DSIO_RSQ,
  D3DSIO_DP3,
  D3DSIO_DP4,
  D3DSIO_MIN,
  D3DSIO_MAX,
  D3DSIO_SLT,
  D3DSIO_SGE,
  D3DSIO_EXP,
  D3DSIO_LOG,
  D3DSIO_LIT,
  D3DSIO_DST,
  D3DSIO_LRP,
  D3DSIO_FRC,
  D3DSIO_M4x4,
  D3DSIO_M4x3,
  D3DSIO_M3x4,
  D3DSIO_M3x3,
  D3DSIO_M3x2,
  D3DSIO_CALL,
  D3DSIO_CALLNZ,
  D3DSIO_LOOP,
  D3DSIO_RET,
  D3DSIO_ENDLOOP,
  D3DSIO_LABEL,
  D3DSIO_DCL,
  D3DSIO_POW,
  D3DSIO_CRS,
  D3DSIO_SGN,
  D3DSIO_ABS,
  D3DSIO_NRM,
  D3DSIO_SINCOS,
  D3DSIO_REP,
  D3DSIO_ENDREP,
  D3DSIO_IF,
  D3DSIO_IFC,
  D3DSIO_ELSE,
  D3DSIO_ENDIF,
  D3DSIO_BREAK,
  D3DSIO_BREAKC,
  D3DSIO_MOVA,
  D3DSIO_DEFB,
  D3DSIO_DEFI,
  D3DSIO_TEXCOORD,
  D3DSIO_TEXKILL,
  D3DSIO_TEX,
  D3DSIO_TEXBEM,
  D3DSIO_TEXBEML,
  D3DSIO_TEXREG2AR,
  D3DSIO_TEXREG2GB,
  D3DSIO_TEXM3x2PAD,
  D3DSIO_TEXM3x2TEX,
  D3DSIO_TEXM3x3PAD,
  D3DSIO_TEXM3x3TEX,
  D3DSIO_RESERVED0,
  D3DSIO_TEXM3x3SPEC,
  D3DSIO_TEXM3x3VSPEC,
  D3DSIO_EXPP,
  D3DSIO_LOGP,
  D3DSIO_CND,
  D3DSIO_DEF,
  D3DSIO_TEXREG2RGB,
  D3DSIO_TEXDP3TEX,
  D3DSIO_TEXM3x2DEPTH,
  D3DSIO_TEXDP3,
  D3DSIO_TEXM3x3,
  D3DSIO_TEXDEPTH,
  D3DSIO_CMP,
  D3DSIO_BEM,
  D3DSIO_DP2ADD,
  D3DSIO_DSX,
  D3DSIO_DSY,
  D3DSIO_TEXLDD,
  D3DSIO_SETP,
  D3DSIO_TEXLDL,
  D3DSIO_BREAKP,
  D3DSIO_PHASE,
  D3DSIO_COMMENT,
  D3DSIO_END,
  D3DSIO_FORCE_DWORD
} D3DSHADER_INSTRUCTION_OPCODE_TYPE;

定数

 
D3DSIO_NOP
NOP 命令は、操作なし、または操作なしを実行します。


Format

D3DSIO_NOPを含む命令トークン
D3DSIO_MOV
MOV命令はレジスタ間でデータを移動します。


Format

D3DSIO_MOVを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン


コメント

浮動小数点データやアドレス レジスタの更新に使用できます。 アドレス レジスタの更新に使用すると、値は丸めを使用して浮動小数点から最も近い値に変換されます。
D3DSIO_ADD
ADD 命令は、2 つのソース ベクトルを追加し、結果を変換先に格納します。


Format

D3DSIO_ADDを含む命令トークン

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_SUB
SUB 命令は、2 つのソース ベクトルを減算し、結果を変換先に格納します。


Format

D3DSIO_SUBを含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_MAD
MAD 命令は、1 番目と 2 番目のソースを乗算し、3 番目のソースを追加します。


Format

D3DSIO_MADを含む命令トークン。 命令の長さは 4 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。

3 番目のソース パラメーター トークン。
D3DSIO_MUL
MUL 命令は、2 つのソース ベクトルを乗算し、結果を変換先に格納します。


Format

D3DSIO_MULを含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_RCP
RCP 命令は、ソースの逆数を計算し、結果を変換先に格納します。


Format

D3DSIO_RCPを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン。 レプリケート スワイズルを明示的に使用する必要があります。つまり、X、Y、Z、または W スワイズル コンポーネント (または R、G、B、または A に相当) を指定する必要があります。
D3DSIO_RSQ
RSQ 命令は、ソースの逆平方根を計算し、結果を変換先に格納します。


Format

D3DSIO_RSQを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン。 レプリケート スワイズルを明示的に使用する必要があります。つまり、X、Y、Z、または W スワイズル コンポーネント (または R、G、B、または A に相当) を指定する必要があります。
D3DSIO_DP3
DP3 命令は、ソース レジスタの 3 成分 (RGB) ドット積を計算し、結果を変換先に格納します。


Format

D3DSIO_DP3を含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_DP4
DP4 命令は、ソース レジスタの 4 成分 (RGBA) ドット積を計算し、結果を変換先に格納します。


Format

D3DSIO_DP4を含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_MIN
MIN 命令は、ソースの最小値を決定し、宛先に最小ソースを格納します。


Format

D3DSIO_MINを含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_MAX
MAX 命令は、ソースの最大数を決定し、宛先に最大ソースを格納します。


Format

D3DSIO_MAXを含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_SLT
SLT 命令は、最初のソースが 2 番目のソースより小さいかどうかを判断し、宛先に符号 (TRUE の場合は 1.0f、FALSE の場合は 0.0f) を格納します。


Format

D3DSIO_SLTを含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_SGE
SGE 命令は、最初のソースが 2 番目のソース以上であるかどうかを判断し、変換先に符号 (TRUE の場合は 1.0f、FALSE の場合は 0.0f) を格納します。


Format

D3DSIO_SGEを含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_EXP
EXP 命令は、完全な精度指数 2x を提供します


Format

D3DSIO_EXPを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン。 レプリケート スワイズルを明示的に使用する必要があります。つまり、X、Y、Z、または W スワイズル コンポーネント (または R、G、B、または A に相当) を指定する必要があります。


コメント

EXP 命令は、少なくとも 21 ビットの精度を提供します。
D3DSIO_LOG
LOG 命令は、完全な有効桁数 log₂(x) を計算します。


Format

D3DSIO_LOGを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン。 ソース パラメーター トークンでは、レプリケート スワイズルを明示的に使用する必要があります。つまり、X、Y、Z、または W スワイズル コンポーネント (または R、G、B、または A に相当) を指定する必要があります。


コメント

LOG 命令は、少なくとも 21 ビットの精度を提供します。
D3DSIO_LIT
LIT 命令では、2 つのドット積と指数から照明係数を計算することで、照明の部分的なサポートが提供されます。


Format

D3DSIO_LITを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン


コメント

変換先の Y コンポーネント (書き込みマスク内) を評価する場合は、精度の低下した算術演算を使用できます。 実装では、power 引数で少なくとも 8 つの分数ビットをサポートする必要があります。 ドット積は正規化されたベクトルで計算され、クランプ制限は -128 から 128 です。 エラーは 、LOGPEXPP の組み合わせに対応する必要があります。8 ビットカラー コンポーネントの場合は、約 1 つの最下位ビット (LSB) 以下にする必要があります。
D3DSIO_DST
DST 命令は距離ベクトルを計算し、結果を宛先に格納します。


Format

D3DSIO_DSTを含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_LRP
LRP 命令は、最初のソースで指定された比率で 2 番目と 3 番目のソースの間を直線的に補間し、結果を宛先に格納します。


Format

D3DSIO_LRPを含む命令トークン。 命令の長さは 4 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。

3 番目のソース パラメーター トークン


コメント

LRP 命令は、浮動小数点データまたは整数データと共に使用できます。

LRP 命令を使用して整数レジスタを更新すると、値は、最も近い整数への丸めを使用して浮動小数点から変換されます。

アドレス レジスタを更新するには、LRP 命令を使用する必要があります。
D3DSIO_FRC
FRC 命令は、各入力コンポーネントの小数部を返します。


Format

D3DSIO_FRCを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン


コメント

結果の各コンポーネントは、0.0 から 1.0 の範囲です。

バージョン頂点またはピクセル バージョン 1_1 の場合、許容される書き込みマスクは Y と XY です (X は許可されません)。
D3DSIO_M4x4
M4x4 命令は、4 成分ベクトルと 4x4 行列の積を計算し、結果を変換先に格納します。


Format

D3DSIO_M4x4を含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン。 XYZW マスクが必要です。

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。 スウィズル コンポーネントと否定修飾子が無効です。
D3DSIO_M4x3
M4x3 命令は、4 成分ベクトルと 4x3 行列の積を計算し、結果を変換先に格納します。


Format

D3DSIO_M4x3を含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン。 XYZ マスクが必要です。

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。 スウィズル コンポーネントと否定修飾子が無効です。
D3DSIO_M3x4
M3x4 命令は、3 成分ベクトルと 3x4 行列の積を計算し、結果を変換先に格納します。


Format

D3DSIO_M3x4を含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン。 XYZW マスクが必要です。

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。 スウィズル コンポーネントと否定修飾子が無効です。
D3DSIO_M3x3
M3x3 命令は、3 成分ベクトルと 3x3 行列の積を計算し、結果を変換先に格納します。


Format

D3DSIO_M3x3を含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン。 XYZ マスクが必要です。

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。 スウィズル コンポーネントと否定修飾子が無効です。
D3DSIO_M3x2
M3x2 命令は、3 成分ベクトルと 3x2 行列の積を計算し、結果を変換先に格納します。


Format

D3DSIO_M3x2を含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン。 XY マスクが必要です。

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。 スウィズル コンポーネントと否定修飾子が無効です。
D3DSIO_CALL
CALL 命令は、指定されたラベル インデックスでマークされた命令に対して関数呼び出しを実行します。


Format

D3DSIO_CALLを含む命令トークン

ラベル トークン (D3DSPR_LABEL レジスタ型を使用したソース パラメーター トークン)。
D3DSIO_CALLNZ
CALLNZ 命令は、ラベル インデックスでマークされた命令に対して条件付き (ゼロでない場合) 呼び出しを実行します。


Format

D3DSIO_CALLNZを含む命令トークン

ラベル トークン (D3DSPR_LABEL レジスタ型を使用したソース パラメーター トークン)。

D3DSPR_CONSTBOOLレジスタ型を使用するソース パラメーター トークン
D3DSIO_LOOP
LOOP 命令は LOOP... を開始します。ENDLOOP ブロック。


Format

D3DSIO_LOOPを含む命令トークン

D3DSPR_LOOP レジスタ型を使用する最初のソース パラメーター トークン。 X コンポーネントは反復回数を指定します。Y コンポーネントは、現在のループ カウンター レジスタの初期値を指定します。Z コンポーネントは、現在のループ カウンター レジスタの増分を指定します。 このレジスタでは、レプリケート スワイズル (つまり) を明示的に使用する必要があります。XYZW (RGBA) コンポーネント マスクを指定する必要があります。


コメント

LOOP 命令では整数レジスタのみを使用できます。 LOOP 命令はイテレーション用に提供され、定数配列のインデックス作成に使用できる自動インクリメントループ カウンター レジスタをサポートします。 入れ子になった場合、ループ カウンター レジスタが使用されるたびに、現在のループを参照します。
D3DSIO_RET
RET 命令はサブルーチンから戻るか、メイン関数の終わりを示します。


Format

D3DSIO_RETを含む命令トークン


コメント

シェーダーにサブルーチンが含まれない場合は、メイン プログラムの最後で RET を使用することは省略可能です。
D3DSIO_ENDLOOP
ENDLOOP 命令は、LOOP ブロックの末尾をマークします。


Format

D3DSIO_ENDLOOPを含む命令トークン
D3DSIO_LABEL
LABEL 命令は、次の命令にラベル インデックスを付けます。


Format

D3DSIO_LABELを含む命令トークン

D3DSPR_LABELレジスタ型とレジスタ番号を使用するソース パラメータ トークン
D3DSIO_DCL
DCL 命令トークンを指定します。
D3DSIO_POW
POW 命令は、完全な精度 (最初のソース) の 2 番目のソースを計算し、結果を変換先に格納します。


Format

D3DSIO_POWを含む命令トークン。 命令の長さは 3 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。


コメント

両方のソースでレプリケート スワイズルを明示的に使用する必要があります。つまり、X、Y、Z、または W スワイズル コンポーネント (または R、G、B、または A と同等) を指定する必要があります。

POW 命令は、少なくとも 15 ビットの精度を提供します。
D3DSIO_CRS
CRS 命令は、右側の規則を使用してクロス積を計算します。


Format

D3DSIO_CRSを含む命令トークン

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_SGN
SGN 命令はソースの符号を決定し、変換先に符号 (負の場合は -1、0 の場合は 0、正の場合は 1) を格納します。


Format

D3DSIO_SGNを含む命令トークン。 命令の長さは 4 です。

destination パラメーター トークン

最初 のソース パラメーター トークン

D3DSPR_TEMP レジスタ型を使用する 2 番目のソース パラメーター トークン。

D3DSPR_TEMPレジスタ型を使用する 3 番目のソース パラメーター トークン。


コメント

2 番目と 3 番目のソースは、一時レジスタとして使用できます。
D3DSIO_ABS
ABS 命令は、ソースの絶対値を計算し、結果を変換先に格納します。


Format

D3DSIO_ABSを含む命令トークン

destination パラメーター トークン

source パラメーター トークン
D3DSIO_NRM
NRM 命令は、4-D ベクトルを正規化します。


Format

D3DSIO_NRMを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン
D3DSIO_SINCOS
SINCOS 命令は、ソースのサインとコサインを計算します。
D3DSIO_REP
REP 命令によって REPEAT... が開始されます。ENDREP ブロック。


Format

D3DSIO_REPを含む命令トークン

D3DSPR_CONSTINTレジスタ型を使用するソース パラメーター トークン。 X コンポーネントは、反復回数を指定します。


コメント

REP 命令では整数レジスタのみを使用できます。
D3DSIO_ENDREP
ENDREP 命令は 、REP ブロックの末尾をマークします。


Format

D3DSIO_ENDREPを含む命令トークン
D3DSIO_IF
IF 命令は IF ブロックを開始します。


Format

D3DSIO_IFを含む命令トークン

D3DSPR_CONSTBOOL レジスタ型を使用するソース パラメーター トークン


コメント

ソースのブール型レジスタが TRUE の場合は、IF ステートメントで囲まれたコードと、一致する ELSE (ELSE が使用されていない場合は ENDIF) が実行されます。それ以外の場合、実行は ELSE-ENDIF ステートメントで囲まれたコード (ELSE が存在する) または IF ブロック (ELSE が存在しません) から渡されます。
D3DSIO_IFC
IFC 命令は、比較を使用して IF ブロックを開始します。


Format

D3DSIO_IFCを含む命令トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。


コメント

IFC 命令は、ソース間の比較に基づいて、コードブロックをスキップします。

両方のソースでレプリケート スワイズルを明示的に使用する必要があります。つまり、X、Y、Z、または W スワイズル コンポーネント (または R、G、B、または A と同等) を指定する必要があります。

すべてのソース コンポーネント間の比較が TRUE の場合、IF ステートメントで囲まれたコードと、一致する ELSE 命令 (ELSE が使用されていない場合は ENDIF 命令) が実行されます。それ以外の場合、実行は ELSE-ENDIF ステートメントで囲まれたコード (ELSE が存在する) または IF ブロック (ELSE が存在しません) から渡されます。
D3DSIO_ELSE
ELSE 命令は ELSE ブロックを開始します。


Format

D3DSIO_ELSEを含む命令トークン


コメント

対応する IF 命令のソースブール型レジスタが true の場合、 IF で囲まれたコードと一致する ELSE が実行され、それ以外の場合は ELSE 命令とENDIF 命令で囲まれたコードに実行が渡されます。
D3DSIO_ENDIF
ENDIF 命令は IF... を終了します。ELSE ブロック。


Format

D3DSIO_ENDIFを含む命令トークン
D3DSIO_BREAK
BREAK 命令は、最も近い endloop または endrep の現在のループから抜け出します。


Format

D3DSIO_BREAKを含む命令トークン
D3DSIO_BREAKC
BREAKC 命令は、2 つのソース間の比較基準に基づいて、最も近い endloop または endrep の現在のループから抜け出します。


Format

D3DSIO_BREAKCを含む命令トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_MOVA
MOVA 命令は、浮動小数点レジスタから整数レジスタにデータを移動します。


Format

D3DSIO_MOVAを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン


コメント

値は、丸めを使用して浮動小数点から最も近いものに変換されます。

アドレス レジスタは、許可される唯一の宛先レジスタです。
D3DSIO_DEFB
DEFB 命令はブール型定数値を定義します。これは、シェーダーがデバイスに設定されるたびに読み込まれる必要があります。 この命令は、頂点シェーダー 2_0 以降のバージョンで使用できます。 現在の頂点シェーダーによって設定されるブール型定数は、D3DDP2OP_SETVERTEXSHADERCONSTB操作によって設定される定数よりも優先されます。


Format

D3DSIO_DEFBを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークンレジスタの種類はD3DSPR_CONSTBOOLする必要があります。

DWORD トークンにはブール値が含まれます。0 以外は TRUE を示します。0 は FALSE を示します
D3DSIO_DEFI
DEFI 命令は整数定数値を定義します。これは、シェーダーがデバイスに設定されるたびに読み込まれる必要があります。 現在の頂点シェーダーによって設定された定数は、D3DDP2OP_SETVERTEXSHADERCONSTI操作によって設定された定数よりも優先されます。


Format

D3DSIO_DEFIを含む命令トークン。 命令の長さは 5 です。

destination パラメーター トークンレジスタの種類はD3DSPR_CONSTINTする必要があります。

4 DWORD トークンには、4 つの 32 ビット符号付き整数が含まれます。
D3DSIO_TEXCOORD
TEXCOORD 命令は、テクスチャ座標データ (UVW1) をカラー データ (RGBA) としてコピーします。


Format

D3DSIO_TEXCOORDを含む命令トークン

destination パラメーター トークン

source パラメーター トークン。 ソース パラメーター トークンは、ピクセル シェーダー バージョン 1_4 のみを対象としています。


コメント

texcoord 命令と texcrd アセンブラー命令はどちらも、D3DSIO_TEXCOORD操作コードを使用します。

texcoord 命令は、ピクセル シェーダー バージョン 1_0 から 1_3 に適用されます。宛先パラメーター トークンが 1 つあり、ソース パラメーター トークンは関連付けされません。

texcrd 命令は、ピクセル シェーダー バージョン 1_4 に適用されます。1 つの宛先パラメーター トークンと 1 つのソース パラメーター トークンが関連付けられています。
D3DSIO_TEXKILL
テクスチャ座標の最初の 3 つのコンポーネント (UVW) のいずれかが 0 未満の場合、TEXKILL 命令は現在のピクセルのレンダリングを取り消します。


Format

D3DSIO_TEXKILLを含む命令トークン

destination パラメーター トークン (ソース トークンと同様に動作します)。


コメント

ターゲット トークンのいずれかのコンポーネントが 0 未満の場合は、ピクセル シェーダーを終了し、出力を破棄します。


宛先トークンには、次の機能が適用されます。

  • 一時的な (D3DSPR_TEMP) またはテクスチャ (D3DSPR_TEXTURE) レジスタの種類 を使用する必要があります。

  • 一時レジスタを使用する場合は、すべてのコンポーネントが以前に書き込まれた必要があります。

  • テクスチャ レジスタを使用する場合は、読み取られたすべてのコンポーネントが宣言されている必要があります。

  • 完全な書き込みマスクを指定する必要があります。

D3DSIO_TEX
TEX 命令は、ソース テクスチャからサンプリングされたカラー データ (RGBA) を含む宛先を読み込みます。


Format

D3DSIO_TEXを含む命令トークン

D3DSPR_PREDICATEレジスタ型を使用する宛先パラメーター トークン

次のソース トークンは、ピクセル シェーダー バージョン 1_4 以降専用です。

- 最初 のソース パラメーター トークン は、テクスチャ サンプルのテクスチャ座標を提供します。

- D3DSPR_SAMPLER レジスタ型を使用する 2 番目のソース パラメーター トークン。 2 番目のソース パラメーター トークンは、サンプリングするテクスチャ サンプラー番号を識別します。


コメント

tex および texld アセンブラー命令はどちらも、D3DSIO_TEX操作コードを使用します。

tex 命令は、ピクセル シェーダー バージョン 1_0 から 1_3 に適用されます。宛先パラメーター トークンが 1 つあり、ソース パラメーター トークンは関連付けされません。

texld 命令は、ピクセル シェーダー バージョン 1_4 以降に適用されます。1 つの宛先パラメーター トークンと 2 つのソース パラメーター トークンが関連付けられています。
D3DSIO_TEXBEM
TEXBEM 命令では、宛先レジスタのテクスチャ アドレス データを変更し、アドレス摂動データ (U,V)、および 2-D バンプ環境マトリックスを使用して、バンプ環境マップ変換を適用します。


Format

D3DSIO_TEXBEMを含む命令トークン

destination パラメーター トークン

source パラメーター トークン
D3DSIO_TEXBEML
TEXBEML 命令は、輝度補正を使用してバンプ環境マップ変換を適用します。


Format

D3DSIO_TEXBEMLを含む命令トークン

destination パラメーター トークン

source パラメーター トークン


コメント

輝度補正を使用したバンプ環境マップ変換は、宛先レジスタのテクスチャ アドレス データを変更し、アドレス摂動データ (U.V)、2-D バンプ環境マトリックス、および輝度を使用して行います。
D3DSIO_TEXREG2AR
TEXREG2AR命令では、ソースのアルファおよび赤の色コンポーネントをテクスチャ アドレス データ (U,V) として解釈し、宛先レジスタ番号に対応するステージでテクスチャをサンプリングします。 結果は変換先に格納されます。


Format

D3DSIO_TEXREG2ARを含む命令トークン

destination パラメーター トークン

source パラメーター トークン


コメント

TEXREG2AR命令は、色空間の再マップ操作に役立ちます。 2 次元 (2-D) 座標をサポートします。

ソース レジスタでは、符号なしデータを使用する必要があります。ソース レジスタで符号付きデータまたは混合データが使用されている場合、操作によって無効な結果が生成されます。
D3DSIO_TEXREG2GB
TEXREG2GB命令は、ソースの緑と青の色のコンポーネントをテクスチャ アドレス データ (U,V) として解釈し、宛先レジスタ番号に対応するステージでテクスチャをサンプリングします。 結果は変換先に格納されます。


Format

D3DSIO_TEXREG2GBを含む命令トークン

destination パラメーター トークン

source パラメーター トークン


コメント

TEXREG2GB命令は、色空間の再マップ操作に役立ちます。 2 次元 (2-D) 座標をサポートします。

ソース レジスタでは、符号なしデータを使用する必要があります。ソース レジスタで符号付きデータまたは混合データが使用されている場合、操作によって無効な結果が生成されます。
D3DSIO_TEXM3x2PAD
TEXM3x2PAD 命令は、2 行行列乗算の最初の行乗算を実行します。


Format

D3DSIO_TEXM3x2PADを含む命令トークン

destination パラメーター トークン

source パラメーター トークン


コメント

TEXM3x2PAD 命令は単独では使用できません。 TEXM3x2TEX または TEXM3x2DEPTH 命令と組み合わせる必要があります。
D3DSIO_TEXM3x2TEX
TEXM3x2TEX 命令は、3x2 行列乗算の最後の行を実行し、テクスチャルックアップで結果を使用します。


Format

D3DSIO_TEXM3x2TEXを含む命令トークン

destination パラメーター トークン

source パラメーター トークン


コメント

TEXM3x2TEX 命令は 、TEXM3x2PAD 命令と共に使用する必要があります。
D3DSIO_TEXM3x3PAD
TEXM3x3PAD 命令は、3 行行列乗算の 1 行目または 2 行目の乗算を実行します。


Format

D3DSIO_TEXM3x3PADを含む命令トークン

destination パラメーター トークン

source パラメーター トークン


コメント

TEXM3x3PAD 命令は単独では使用できません。 TEXM3x3 命令、 TEXM3x3SPEC 命令、 TEXM3x3VSPEC 命令、または TEXM3x3TEX 命令と組み合わせる必要があります。
D3DSIO_TEXM3x3TEX
TEXM3x3TEX 命令は、3x3 行列乗算を実行し、テクスチャルックアップで結果を使用します。


Format

D3DSIO_TEXM3x3TEXを含む命令トークン

destination パラメーター トークン

source パラメーター トークン


コメント

TEXM3x3TEX 命令は、2 つの TEXM3x3PAD 命令と共に使用する必要があります。

これは、3x3 行列乗算演算を表す 3 つの命令の最後として使用され、その後にテクスチャ参照が続きます。 3x3 マトリックスは、3 番目のテクスチャ ステージと前の 2 つのテクスチャ ステージのテクスチャ座標で構成されます。 得られた 3 成分ベクトル (U,V,W) を使用して、ステージ 3 でテクスチャをサンプリングします。 前の 2 つのテクスチャ ステージに割り当てられたテクスチャは無視されます。 通常、3x3 行列乗算は、レンダリングされるサーフェスの正しい接線空間に法線ベクトルを向ける場合に便利です。
D3DSIO_RESERVED0
この命令は内部使用のために予約されています。
D3DSIO_TEXM3x3SPEC
TEXM3x3SPEC 命令は、3x3 行列乗算を実行し、テクスチャルックアップで結果を使用します。 反射と環境マッピングに使用されます。


Format

D3DSIO_TEXM3x3SPECを含む命令トークン

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。


コメント

TEXM3x3SPEC 命令は、2 つの TEXM3x3PAD 命令と共に使用する必要があります。 この命令セットは、反射反射と環境マッピングに使用できます。

TEXM3x3SPEC 命令は、3x3 行列乗算の最後の行を実行し、結果のベクトルを法線ベクトルとして使用して視線線ベクトルを反射し、反射ベクトルを使用してテクスチャルックアップを実行します。 シェーダーは、定数レジスタから視線ベクトルを読み取ります。 通常、3x3 行列乗算は、レンダリングされるサーフェスの正しい接線空間に法線ベクトルを向ける場合に便利です。

3x3 マトリックスは、3 番目のテクスチャ ステージと前の 2 つのテクスチャ ステージのテクスチャ座標で構成されます。 結果として得られる反射後ベクトル (U,V,W) を使用して、最終的なテクスチャ ステージでテクスチャをサンプリングします。 前の 2 つのテクスチャ ステージに割り当てられたテクスチャは無視されます。
D3DSIO_TEXM3x3VSPEC
TEXM3x3VSPEC 命令は、3x3 行列乗算を実行し、テクスチャルックアップで結果を使用します。


Format

D3DSIO_TEXM3x3VSPECを含む命令トークン

destination パラメーター トークン

source パラメーター トークン


コメント

TEXM3x3VSPEC 命令は、2 つの TEXM3x3PAD 命令と共に使用する必要があります。 この命令セットは、目線ベクトルが一定ではない反射反射と環境マッピングに使用できます。 視線ベクトルが一定の場合、 TEXM3x3SPEC 命令は同じ行列乗算とテクスチャルックアップを実行します。

TEXM3x3VSPEC 命令は、3x3 行列乗算演算の最後の行を実行し、結果のベクトルを通常のベクトルとして解釈して目線ベクトルを反射し、反射ベクトルをテクスチャ ルックアップのテクスチャ アドレスとして使用します。 これは TEXM3X3SPECと同様に機能しますが、目線ベクトルはテクスチャ座標の 4 番目のコンポーネントから取得されます。 通常、3x3 行列乗算は、レンダリングされるサーフェスの正しい接線空間に法線ベクトルを向ける場合に便利です。

3x3 マトリックスは、3 番目のテクスチャ ステージと前の 2 つのテクスチャ ステージのテクスチャ座標で構成されます。 結果として得られる後反射ベクトル (UVW) を使用して、ステージ 3 でテクスチャをサンプリングします。 前の 2 つのテクスチャ ステージに割り当てられたテクスチャは無視されます。
D3DSIO_EXPP
EXPP 命令は、部分精度指数 2x を提供します


Format

D3DSIO_EXPPを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン。 レプリケート スワイズルを明示的に使用する必要があります。つまり、X、Y、Z、または W スワイズル コンポーネント (または R、G、B、または A に相当) を指定する必要があります。


コメント

EXPP 命令は、少なくとも 10 ビットの精度を提供します。
D3DSIO_LOGP
LOGP 命令は、部分的な有効桁数 log₂(x) を計算します。


Format

D3DSIO_LOGPを含む命令トークン。 命令の長さは 2 です。

destination パラメーター トークン

source パラメーター トークン。 レプリケート スワイズルを明示的に使用する必要があります。つまり、X、Y、Z、または W スワイズル コンポーネント (または R、G、B、または A に相当) を指定する必要があります。


コメント

LOGP 命令は、少なくとも 10 ビットの精度を提供します。
D3DSIO_CND
CND 命令は、最初のソースが 0.5 より大きいかどうかに基づいて 2 番目と 3 番目のソースを選択し、結果を宛先に格納します。


Format

D3DSIO_CNDを含む命令トークン

destination パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。

3 番目のソース パラメーター トークン。
D3DSIO_DEF
DEF 命令は定数値を定義します。定数値は、シェーダーがデバイスに設定されるたびに読み込まれる必要があります。 この命令は、すべての頂点シェーダー バージョンで使用できます。 現在の頂点シェーダーによって設定された定数は、D3DDP2OP_SETVERTEXSHADERCONST操作によって設定される定数よりも優先されます。


Format

D3DSIO_DEFを含む命令トークン。 命令の長さは 5 です。

宛先パラメーター トークンレジスタの種類は、D3DSPR_CONST、D3DSPR_CONST2、D3DSPR_CONST3、またはD3DSPR_CONST4である必要があります。

4 つの DWORD トークン。 4-D 浮動小数点数または 4-D 整数値。
D3DSIO_TEXREG2RGB
TEXREG2RGB命令は、ソースの赤、緑、青 (RGB) の色成分をテクスチャ アドレス データ (U,V,W) として解釈し、宛先レジスタ番号に対応するステージでテクスチャをサンプリングします。 結果は変換先に格納されます。


Format

D3DSIO_TEXREG2RGBを含む命令トークン

宛先パラメーター トークン

source パラメーター トークン


コメント

TEXREG2RGB命令は、色空間の再マップ操作に役立ちます。 2 次元 (2-D) 座標と 3 次元 (3-D) 座標をサポートします。 TEXREG2AR命令やTEXREG2GB命令と同様に使用して、2-D データを再マップできます。 ただし、TEXREG2RGB命令では 3-D データもサポートされているため、キューブ マップと 3-D ボリューム テクスチャで使用できます。
D3DSIO_TEXDP3TEX
TEXDP3TEX命令は、3 成分ドット積を実行し、結果を使用して 1-D テクスチャ参照を実行します。


Format

D3DSIO_TEXDP3TEXを含む命令トークン

宛先パラメーター トークン

source パラメーター トークン
D3DSIO_TEXM3x2DEPTH
TEXM3x2DEPTH 命令は、ピクセルの深度テストで使用される深度値を計算します。


Format

D3DSIO_TEXM3x2DEPTHを含む命令トークン

宛先パラメーター トークン

source パラメーター トークン


コメント

TEXM3x2DEPTH 命令は 、TEXM3x2PAD 命令と共に使用する必要があります。
D3DSIO_TEXDP3
TEXDP3 命令は、テクスチャ レジスタ番号内のデータと、宛先レジスタ番号に対応するテクスチャ座標セットとの間で、3 成分のドット積を実行します。


Format

D3DSIO_TEXDP3を含む命令トークン

宛先パラメーター トークン

source パラメーター トークン
D3DSIO_TEXM3x3
TEXM3x3 命令は、2 つの TEXM3x3PAD 命令と組み合わせて使用すると、3x3 行列乗算を実行します。


Format

D3DSIO_TEXM3x3を含む命令トークン

宛先パラメーター トークン

source パラメーター トークン


コメント

TEXM3x3 命令は、2 つの TEXM3X3PAD 命令と共に使用する必要があります。 これは、3x3 行列乗算演算を表す 3 つの命令の最後として使用されます。 3x3 マトリックスは、3 番目のテクスチャ ステージのテクスチャ座標と、先行する 2 つのテクスチャ ステージで構成されます。 3 つのテクスチャ ステージのいずれかに割り当てられたテクスチャは無視されます。

TEXM3x3 命令は、テクスチャ参照なしで TEXM3x3TEX 命令と同じです。
D3DSIO_TEXDEPTH
TEXDEPTH 命令は、ピクセル深度バッファー比較テストで使用される深度値を計算します。


Format

D3DSIO_TEXDEPTHを含む命令トークン

宛先パラメーター トークン
D3DSIO_CMP
CMP 命令は、1 つ目のソースが 0 以上であることに基づいて 2 番目と 3 番目のソースを選択し、その結果を宛先に格納します。 比較はチャネルごとに行われます。


Format

D3DSIO_CMPを含む命令トークン

宛先パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。

3 番目のソース パラメーター トークン。
D3DSIO_BEM
BEM 命令は、バンプ環境マップ変換を適用します。


Format

D3DSIO_BEMを含む命令トークン

宛先パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。
D3DSIO_DP2ADD
DP2ADD 命令は、2-D ドット積とスカラー加算を実行し、結果を宛先に格納します。


Format

D3DSIO_DP2ADDを含む命令トークン。 命令の長さは 4 です。

宛先パラメーター トークン

最初 のソース パラメーター トークン

2 番目のソース パラメーター トークン。

3 番目のソース パラメーター トークン。
D3DSIO_DSX
DSX 命令は、ソースの変更率を x 方向に計算し、結果を宛先に格納します。


Format

D3DSIO_DSXを含む命令トークン。 命令の長さは 2 です。

宛先パラメーター トークン。 すべての書き込みマスクを受け入れます。

source パラメーター トークン。 すべてのスウィズルを受け入れます。


コメント

DSX 命令では、フロー制御によってピクセルがアクティブであるか、プリミティブのエッジから外れているかに関係なく、レジスタの現在の内容のグラデーションがピクセル単位で常に計算されます。 これらのピクセルは lockstep で実行されます。
D3DSIO_DSY
DSY 命令は、ソースの変化率を y 方向に計算し、その結果を宛先に格納します。


Format

D3DSIO_DSYを含む命令トークン。 命令の長さは 2 です。

宛先パラメーター トークン。 すべての書き込みマスクを受け入れます。

source パラメーター トークン。 すべてのスウィズルを受け入れます。


コメント

DSY 命令は、フロー制御によってピクセルがアクティブであるか、プリミティブのエッジから外れているかに関係なく、レジスタの現在のコンテンツのグラデーションをピクセル単位で常に計算します。 これらのピクセルは lockstep で実行されます。
D3DSIO_TEXLDD
TEXLDD 命令は、最初のソース トークンのテクスチャ座標、2 番目のソース トークンで指定されたサンプラー、および 3 番目と 4 番目のソース トークンからのグラデーション (DSX と DSY) を使用してテクスチャをサンプリングします。


Format

D3DSIO_TEXLDDを含む命令トークン。 命令の長さは 5 です。

destination パラメーター トークン。 すべての書き込みマスクを受け入れます。

最初 のソース パラメーター トークン

D3DSPR_SAMPLER レジスタ型を使用する必要がある 2 番目のソース パラメーター トークン。 サポートされているサンプラーの状態は、D3DSAMP_MAXMIPLEVELとD3DSAMP_MIPMAPLODBIASです。


コメント

すべてのソースは、任意のスワイズルをサポートしています。

すべての書き込みマスクは、コピー先で有効です。
D3DSIO_SETP
SETP 命令は、述語レジスタを設定します。


Format

D3DSIO_SETPを含む命令トークン。 命令の長さは 3 です。

D3DSPR_PREDICATEレジスタ型を使用する宛先パラメーター トークン。 書き込みマスクが必要です。

最初 のソース パラメーター トークン。 スウィズル コンポーネントを指定する必要があります。

2 番目のソース パラメーター トークン。 スウィズル コンポーネントを指定する必要があります。


コメント

変換先の書き込みマスクに従って書き込むことができるチャネルごとに、ソースの対応するチャネル間の比較操作のブール値の結果を保存します (ソース修飾子のスワイズルが解決された後)。
D3DSIO_TEXLDL
TEXLDL 命令では、指定されたテクスチャ座標を使用して、特定のサンプラーでテクスチャをサンプリングします。 サンプリングされる特定の詳細レベル (LOD) は、テクスチャ座標の 4 番目の (W) コンポーネントとして指定する必要があります。


Format

D3DSIO_TEXLDLを含む命令トークン。 命令の長さは 3 です。

D3DSPR_PREDICATEレジスタ型を使用する宛先パラメーター トークン

最初 のソース パラメーター トークン は、テクスチャ サンプルのテクスチャ座標を提供します。

D3DSPR_SAMPLER レジスタ型を使用する 2 番目のソース パラメーター トークン。 サンプリングするテクスチャ サンプラー番号を識別します。 Negate ソース修飾子を指定できません。 スウィズルを指定できます。 サンプラー番号は、シェーダーの先頭で宣言する必要があります。


コメント

宛先トークンの書き込みマスクの欠落コンポーネントの既定値は 0 または 1 であり、テクスチャの形式によって異なります。

テクスチャ サンプルの実行に必要な座標の数は、サンプラー番号の宣言方法によって異なります。 キューブとして宣言された場合は、3 コンポーネント テクスチャ座標 (RGB) が必要です。 検証では、 texld に提供される座標が、サンプラー用に宣言されたテクスチャ ディメンションに対して十分であることを強制します。 テクスチャ座標に存在するよりも小さいサイズのテクスチャのサンプリングは有効です。 逆に、テクスチャ座標に存在するよりも大きい次元のテクスチャのサンプリングは無効です。

符号なしの RGB テクスチャをサンプリングすると、0.0 から 1.0 の浮動小数点値が得られます。

符号付きテクスチャをサンプリングすると、-1.0 から 1.0 の float 値が得られます。

浮動小数点テクスチャをサンプリングすると、Float16 からMAX_FLOAT16範囲が保持されるか、Float32 から最大のパイプライン範囲が保持されます。
D3DSIO_BREAKP
BREAK PRED 命令は、述語レジスタのコンポーネントの 1 つを条件として使用して命令を実行するかどうかを判断することで、最も近い endloop または endrep の現在のループから抜け出します。


Format

D3DSIO_BREAKPを含む命令トークン

レプリケートスワイズルでD3DSPR_PREDICATEレジスタ型を使用するソース パラメーター トークン (各チャネルは同じソース コンポーネントを使用します)。 ビット 27:24 の NOT (0xd) ソース修飾子を使用できます。
D3DSIO_PHASE
ピクセル シェーダー バージョン 1_4 にのみ適用されます。

PHASE 命令は、ピクセル シェーダー バージョン 1 と 2 の間の遷移をマークします。 フェーズ命令が存在しない場合、シェーダー全体がフェーズ 2 シェーダーであるかのように実行されます。


Format

D3DSIO_PHASEを含む命令トークン


コメント

PHASE 命令の前に発生するシェーダー命令は、フェーズ 1 の命令です。 その他の手順はすべてフェーズ 2 の手順です。 命令のフェーズが 2 つあると、シェーダーあたりの命令の最大数が増えます。

一時レジスタのアルファ コンポーネントは、フェーズ遷移全体で保持されません。 つまり、アルファ コンポーネントはフェーズ命令の後に再初期化する必要があります。
D3DSIO_COMMENT
コメント トークンを指定します。
D3DSIO_END
終了トークンを指定します。
D3DSIO_FORCE_DWORD
強制的に 32 ビット サイズにします。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
Header d3d9types.h