命令 - vs_2_x
命令 - vs_2_x
ここでは、頂点シェーダ バージョン 2_x の命令に関するリファレンス情報を記載する。
次の表に示すように、頂点シェーダ命令にはいくつかの種類がある。右側の列の意味は次のとおりである。
- 命令スロット - 各命令で使う命令スロットの数。
- セットアップ - 算術命令以外の命令。すべてのシェーダにバージョン命令を持たせ、その命令は最初の命令でなければならない。
- 算術 - これらの命令は、シェーダ内での算術演算を行う。
- マクロ演算子 - これらの命令は、算術命令を結合して上位レベルの機能を実現する。マクロ演算子の使用はオプションである。基になる実装を最適化できるように、マクロ演算子、特に行列乗算命令 (m3x2、m3x3、m3x4、m4x3、m4x4) の使用を推奨する。
- フロー制御 - この命令は、loop...endloop、if...else...endif のようなフロー制御能力と、サブルーチン呼び出しを追加する。
- 新規 - この命令は、このバージョンの新機能である。
セットアップ命令
名前 | 説明 | 命令スロット | セットアップ | 算術 | マクロ演算子 | フロー制御 | 新規 |
---|---|---|---|---|---|---|---|
abs | 絶対値 | 1 | x | ||||
add | 2 つのベクトルの加算 | 1 | x | ||||
break | loop...endloop または rep...endrep ブロックを終了する | 1 | x | x | |||
break_comp | 比較に基づいて、loop...endloop または rep...endrep ブロックを条件付きで終了する | 3 | x | x | |||
break pred | プレディケーションに基づいて、loop...endloop または rep...endrep ブロックを終了する | 3 | x | x | |||
call | サブルーチンを呼び出す | 2 | x | ||||
callnz | ブール型のレジスタがゼロでない場合に、サブルーチンを呼び出す | 3 | x | x | |||
callnz pred | プレディケーションのレジスタがゼロでない場合に、サブルーチンを呼び出す | 3 | x | x | |||
crs | 外積 | 2 | x | ||||
dcl_usage | 入力頂点レジスタを宣言する (「レジスタ - vs_2_x」を参照すること) | 0 | x | ||||
def | 定数の定義 | 0 | x | ||||
defb | ブール型定数を定義する | 0 | x | ||||
defi | 整数型定数を定義する | 0 | x | ||||
dp3 | 3 成分の内積 | 1 | x | ||||
dp4 | 4 成分の内積 | 1 | x | ||||
dst | 距離関連のデータを計算する | 1 | x | ||||
else | else ブロックの開始 | 1 | x | ||||
endif | if...else ブロックの終了 | 1 | x | ||||
endloop | loop ブロックを終了する | 2 | x | ||||
endrep | repeat ブロックの終了 | 2 | x | ||||
exp | 完全精度の 2x | 1 | x | ||||
expp | 部分精度の 2x | 1 | x | ||||
frc | 小数部 | 1 | x | ||||
if | ブール値の条件を使って、if ブロックを開始する | 3 | x | ||||
if comp | 比較に基づいて、if ブロックを開始する | 3 | x | x | |||
if pred | プレディケーションの条件に基づいて、if ブロックを開始する | 3 | x | x | |||
label | ラベルを付ける | 0 | x | ||||
lit | 部分的なライティング計算 | 3 | x | ||||
log | 完全精度の log2(x) | 1 | x | ||||
logp | 部分精度の log2(x) | 1 | x | ||||
loop | ループ | 3 | x | ||||
lrp | 線形補間 | 2 | x | ||||
m3x2 | 3x2 乗算 | 2 | x | ||||
m3x3 | 3x3 乗算 | 3 | x | ||||
m3x4 | 3x4 乗算 | 4 | x | ||||
m4x3 | 4x3 乗算 | 3 | x | ||||
m4x4 | 4x4 乗算 | 4 | x | ||||
mad | 積和 | 1 | x | ||||
max | 最大 | 1 | x | ||||
min | 最小 | 1 | x | ||||
mov | 移動 | 1 | x | ||||
mova | 浮動小数点レジスタからアドレス レジスタ (a0) にデータを移動する | 1 | x | ||||
mul | 乗算 | 1 | x | ||||
nop | 空命令 (何の演算も実行しない) | 1 | x | ||||
nrm | 4D ベクトルを正規化する | 3 | x | ||||
pow | xy | 3 | x | ||||
rcp | 逆数 | 1 | x | ||||
rep | 繰り返す | 3 | x | ||||
ret | サブルーチンまたはメインの終了 | 1 | x | ||||
rsq | 逆数平方根 | 1 | x | ||||
setp | プレディケーション レジスタを設定する | 1 | x | x | |||
sge | 以上 | 1 | x | ||||
sgn | 正負の符号 | 3 | x | ||||
sincos | 正弦と余弦 | 8 | x | ||||
slt | より小さい | 1 | x | ||||
vs | バージョン | 0 | x |