組み込み関数
次の表は、HLSL で使用できる組み込み関数の一覧を示しています。 各関数には簡単な説明と、入力引数と戻り値の型に関する詳細を含む参照ページへのリンクがあります。
名前 | 説明 | 最小シェーダー モデル |
---|---|---|
abort | 実行中の現在の描画またはディスパッチ呼び出しを終了します。 | 4 |
abs | 絶対値 (コンポーネントごと)。 | 1¹ |
acos | x の各コンポーネントのアークコサインを返します。 | 1¹ |
すべて | x のすべてのコンポーネントが 0 以外であるかどうかをテストします。 | 1¹ |
AllMemoryBarrier | すべてのメモリ アクセスが完了するまでグループのすべてのスレッドの実行をブロックします。 | 5 |
AllMemoryBarrierWithGroupSync | すべてのメモリ アクセスが完了し、グループのすべてのスレッドがこの呼び出しに到達するまで、グループのすべてのスレッドの実行をブロックします。 | 5 |
任意 | x のいずれかのコンポーネントが 0 以外であるかどうかをテストします。 | 1¹ |
asdouble | キャスト値を double として再解釈します。 | 5 |
asfloat | 入力型を float に変換します。 | 4 |
asin | x の各コンポーネントのアークサインを返します。 | 1¹ |
asint | 入力型を整数に変換します。 | 4 |
asuint | 64 ビット型のビット パターンを uint として再解釈します。 | 5 |
asuint | 入力型を符号なし整数に変換します。 | 4 |
atan | x のアークタンジェントを返します。 | 1¹ |
atan2 | 2 つの値 (x,y) のアークタンジェントを返します。 | 1¹ |
ceil | x 以上の最小の整数を返します。 | 1¹ |
CheckAccessFullyMapped | サンプルまたは読み込み操作のすべての値が、タイル リソース内のマップされたタイルにアクセスしたかどうかを判断します。 | 5 |
clamp | x を範囲 [min, max] にクランプします。 | 1¹ |
clip | x のいずれかのコンポーネントが 0 未満の場合、現在のピクセルを破棄します。 | 1¹ |
cos | x のコサインを返します。 | 1¹ |
cosh | x の双曲線コサインを返します。 | 1¹ |
countbits | 入力整数のビット数 (コンポーネントあたり) をカウントします。 | 5 |
cross | 2 つの 3D ベクトルの外積を返します。 | 1¹ |
D3DCOLORtoUBYTE4 | 一部のハードウェアでの UBYTE4 サポートの欠如を補うために、4D ベクトル x のコンポーネントのスウィズルおよびスケーリングを行います。 | 1¹ |
ddx | 画面空間 x 座標に対して x の偏導関数を返します。 | 2¹ |
ddx_coarse | 画面空間 x 座標に対して低精度の偏導関数を計算します。 | 5 |
ddx_fine | 画面空間 x 座標に対して高精度の偏導関数を計算します。 | 5 |
ddy | 画面空間 y 座標に対して x の偏導関数を返します。 | 2¹ |
ddy_coarse | 画面空間 y 座標に対して低精度の偏導関数を計算します。 | 5 |
ddy_fine | 画面空間 y 座標に対して高精度の偏導関数を計算します。 | 5 |
degrees | x をラジアンから度に変換します。 | 1¹ |
determinant | 平方行列 m の行列式を返します。 | 1¹ |
DeviceMemoryBarrier | すべてのメモリ アクセスが完了するまで、グループのすべてのスレッドの実行をブロックします。 | 5 |
DeviceMemoryBarrierWithGroupSync | すべてのデバイス メモリ アクセスが完了し、グループのすべてのスレッドがこの呼び出しに到達するまで、グループのすべてのスレッドの実行をブロックします。 | 5 |
distance | 2 点間の距離を返します。 | 1¹ |
dot | 2 つのベクトルのドット積を返します。 | 1 |
dst | 距離ベクトルを計算します。 | 5 |
errorf | エラー メッセージを情報キューに送信します。 | 4 |
EvaluateAttributeCentroid | ピクセル重心で評価します。 | 5 |
EvaluateAttributeAtSample | インデックス付きサンプルの場所で評価します。 | 5 |
EvaluateAttributeSnapped | ピクセル重心でオフセットを使用して評価します。 | 5 |
exp | 底が e の指数を返します。 | 1¹ |
exp2 | 底が 2 の指数 (コンポーネントごと)。 | 1¹ |
f16tof32 | uint の下位半分に格納されている float16 を float に変換します。 | 5 |
f32tof16 | 入力を float16 型に変換します。 | 5 |
faceforward | -n * sign(dot(i, ng)) を返します。 | 1¹ |
firstbithigh | コンポーネントごとに、最上位ビットから開始して下位に向かって最初の設定済みビットの位置を取得します。 | 5 |
firstbitlow | コンポーネントごとに、最下位ビットから開始して上位に向かって最初の設定済みビットの位置を返します。 | 5 |
floor | x 以下の最大の整数を返します。 | 1¹ |
fma | a * b + c の倍精度融合積和を返します。 | 5 |
fmod | x/y の浮動小数点の剰余を返します。 | 1¹ |
frac | x の小数部を返します。 | 1¹ |
frexp | x の仮数と指数を返します。 | 2¹ |
fwidth | abs(ddx(x)) + abs(ddy(x)) を返します | 2¹ |
GetRenderTargetSampleCount | レンダー ターゲット サンプルの数を返します。 | 4 |
GetRenderTargetSamplePosition | 指定されたサンプル インデックスのサンプル位置 (x,y) を返します。 | 4 |
GroupMemoryBarrier | すべてのグループ共有アクセスが完了するまで、グループのすべてのスレッドの実行をブロックします。 | 5 |
GroupMemoryBarrierWithGroupSync | すべてのグループ共有アクセスが完了し、グループのすべてのスレッドがこの呼び出しに到達するまで、グループのすべてのスレッドの実行をブロックします。 | 5 |
InterlockedAdd | dest リソース変数に対して保証されたアトミックな値の追加を実行します。 | 5 |
InterlockedAnd | 保証されたアトミックな追加を実行します。 | 5 |
InterlockedCompareExchange | 入力を比較値とアトミックに比較し、結果を交換します。 | 5 |
InterlockedCompareStore | 入力と比較値をアトミックに比較します。 | 5 |
InterlockedExchange | dest に値を割り当て、元の値を返します。 | 5 |
InterlockedMax | 保証されたアトミックな max を実行します。 | 5 |
InterlockedMin | 保証されたアトミックな min を実行します。 | 5 |
InterlockedOr | 保証されたアトミックな or を実行します。 | 5 |
InterlockedXor | 保証されたアトミックな xor を実行します。 | 5 |
isfinite | x が有限の場合は true、それ以外の場合は false を返します。 | 1¹ |
isinf | x が +INF または -INF の場合は true、それ以外の場合は false を返します。 | 1¹ |
isnan | x が NAN または QNAN の場合は true、それ以外の場合は false を返します。 | 1¹ |
ldexp | x * 2exp を返します | 1¹ |
length | ベクトル v の長さを返します。 | 1¹ |
lerp | x + s(y - x) を返します。 | 1¹ |
lit | 照明ベクトル (アンビエント、拡散、反射、1) を返します | 1¹ |
log | x の e を底とする対数を返します。 | 1¹ |
log10 | x の 10 を底とする対数を返します。 | 1¹ |
log2 | x の 2 を底とする対数を返します。 | 1¹ |
mad | 3 つの値に対して乗算/加算算術演算を実行します。 | 5 |
max | x と y の大きい方を選択します。 | 1¹ |
min | x と y の小さい方を選択します。 | 1¹ |
modf | 値 x を小数部と整数部に分割します。 | 1¹ |
msad4 | 4 バイトの参照値と 8 バイトのソース値を比較し、4 個の合計値のベクターを累積します。 | 5 |
mul | x と y を使用して行列の乗算を実行します。 | 1 |
noise | パーリン ノイズ アルゴリズムを使用してランダムな値を生成します。 | 1¹ |
normalize | 正規化されたベクトルを返します。 | 1¹ |
pow | xy を返します。 | 1¹ |
printf | カスタム シェーダー メッセージを情報キューに送信します。 | 4 |
Process2DQuadTessFactorsAvg | クワッド パッチの修正されたテッセレーション係数を生成します。 | 5 |
Process2DQuadTessFactorsMax | クワッド パッチの修正されたテッセレーション係数を生成します。 | 5 |
Process2DQuadTessFactorsMin | クワッド パッチの修正されたテッセレーション係数を生成します。 | 5 |
ProcessIsolineTessFactors | 等値線の丸められたテッセレーション係数を生成します。 | 5 |
ProcessQuadTessFactorsAvg | クワッド パッチの修正されたテッセレーション係数を生成します。 | 5 |
ProcessQuadTessFactorsMax | クワッド パッチの修正されたテッセレーション係数を生成します。 | 5 |
ProcessQuadTessFactorsMin | クワッド パッチの修正されたテッセレーション係数を生成します。 | 5 |
ProcessTriTessFactorsAvg | トライ パッチの修正されたテッセレーション係数を生成します。 | 5 |
ProcessTriTessFactorsMax | トライ パッチの修正されたテッセレーション係数を生成します。 | 5 |
ProcessTriTessFactorsMin | トライ パッチの修正されたテッセレーション係数を生成します。 | 5 |
radians | x を度からラジアンに変換します。 | 1 |
rcp | コンポーネントごとの高速、近似逆数を計算します。 | 5 |
reflect | 反射ベクトルを返します。 | 1 |
refract | 屈折ベクトルを返します。 | 1¹ |
reversebits | コンポーネントごとにビットの順序を逆にします。 | 5 |
round | x を最も近い整数に丸めます | 1¹ |
rsqrt | 1 / sqrt(x) を返します | 1¹ |
saturate | x を範囲 [0, 1] にクランプします | 1 |
sign | x の符号を計算します。 | 1¹ |
sin | x のサインを返します | 1¹ |
sincos | x のサインとコサインを返します。 | 1¹ |
sinh | x の双曲サインを返します | 1¹ |
smoothstep | 0 から 1 の間の滑らかなエルミート補間を返します。 | 1¹ |
sqrt | 平方根 (コンポーネントごと) | 1¹ |
step | (x >= a) ? 1 : 0 を返します | 1¹ |
tan | x のタンジェントを返します | 1¹ |
tanh | x の双曲タンジェントを返します | 1¹ |
tex1D(s, t) | 1D テクスチャ参照。 | 1 |
tex1D(s, t, ddx, ddy) | 1D テクスチャ参照。 | 2¹ |
tex1Dbias | バイアスを使用した 1D テクスチャ参照。 | 2¹ |
tex1Dgrad | グラデーションを使用した 1D テクスチャ参照。 | 2¹ |
tex1Dlod | LOD を使用した 1D テクスチャ参照。 | 3¹ |
tex1Dproj | 射影分割を使用した 1D テクスチャ参照。 | 2¹ |
tex2D(s, t) | 2D テクスチャ参照。 | 1¹ |
tex2D(s, t, ddx, ddy) | 2D テクスチャ参照。 | 2¹ |
tex2Dbias | バイアスを使用した 2D テクスチャ参照。 | 2¹ |
tex2Dgrad | グラデーションを使用した 2D テクスチャ参照。 | 2¹ |
tex2Dlod | LOD を使用した 2D テクスチャ参照。 | 3 |
tex2Dproj | 射影分割を使用した 2D テクスチャ参照。 | 2¹ |
tex3D(s, t) | 3D テクスチャ参照。 | 1¹ |
tex3D(s, t, ddx, ddy) | 3D テクスチャ参照。 | 2¹ |
tex3Dbias | バイアスを使用した 3D テクスチャ参照。 | 2¹ |
tex3Dgrad | グラデーションを使用した 3D テクスチャ参照。 | 2¹ |
tex3Dlod | LOD を使用した 3D テクスチャ参照。 | 3¹ |
tex3Dproj | 射影分割を使用した 3D テクスチャ参照。 | 2¹ |
texCUBE(s, t) | キューブ テクスチャ参照。 | 1¹ |
texCUBE(s, t, ddx, ddy) | キューブ テクスチャ参照。 | 2¹ |
texCUBEbias | バイアスを使用したキューブ テクスチャ参照。 | 2¹ |
texCUBEgrad | グラデーションを使用したキューブ テクスチャ参照。 | 2¹ |
texCUBElod | LOD を使用したキューブ テクスチャ参照。 | 3¹ |
texCUBEproj | 射影分割を使用したキューブ テクスチャ参照。 | 2¹ |
transpose | 行列 m の転置を返します。 | 1 |
trunc | 浮動小数点値を切り捨てて整数値にします | 1 |
¹ 制限については、リファレンス ページを参照してください。
HLSL 組み込み関数宣言では、入力パラメーター引数と戻り値にコンポーネントの種類とテンプレートの種類が使用されます。 利用可能な種類を次の表に示します。
これらのテンプレートの種類 | 説明 | これらのデータ型をサポート |
---|---|---|
マトリックス | 宣言に応じて最大 16 個のコンポーネント | 基本的な HLSL 型 |
object | サンプラー オブジェクト | sampler、sampler1D、sampler2D、sampler3D、samplerCUBE |
スカラー (scalar) | 1 つのコンポーネント | 基本的な HLSL 型 |
ベクター | 最小 1 コンポーネント、最大 4 コンポーネント (両端を含む) | 基本的な HLSL 型 |