次の表に、HLSL に用意されている組み込み関数を示します。各関数には、簡単な説明に加えて、入力引数と戻り型に関する詳細情報が記載されているリファレンス ページへのリンクがあります。
| 名前 | 構文 | 説明 |
|---|---|---|
| abs | abs(x) | 絶対値 (成分ごと)。 |
| acos | acos(x) | x の各成分のアークコサインを返します。 |
| all | all(x) | x のすべての成分が 0 以外の値であるかどうかをテストします。 |
| any | any(x) | x のいずれかの成分が 0 以外の値であるかどうかをテストします。 |
| asfloat | asfloat(x) | 入力のデータ型を浮動小数点型に変換します。 |
| asin | asin(x) | x の各成分のアークサインを返します。 |
| asint | asint(x) | 入力のデータ型を整数型に変換します。 |
| asuint | asuint(x) | 入力のデータ型を符号なし整数型に変換します。 |
| atan | atan(x) | x のアークタンジェントを返します。 |
| atan2 | atan2(y, x) | 2 つの値 (x,y) のアークタンジェントを返します。 |
| ceil | ceil(x) | x 以上の最小の整数を返します。 |
| clamp | clamp(x, min, max) | x を [min, max] の範囲にクランプします。 |
| clip | clip(x) | x のいずれかの成分が 0 未満の場合に、現在のピクセルを破棄します。 |
| cos | cos(x) | x のコサインを返します。 |
| cosh | cosh(x) | x のハイパーボリック コサインを返します。 |
| cross | cross(x, y) | 2 つの 3D ベクトルの外積を返します。 |
| D3DCOLORtoUBYTE4 | D3DCOLORtoUBYTE4(x) | UBYTE4 がサポートされていない一部のハードウェアに対応するために、4D ベクトル x の各成分の入れ替えとスケーリングを行います。 |
| ddx | ddx(x) | スクリーン空間の x 座標に対する、x の偏微分を返します。 |
| ddy | ddy(x) | スクリーン空間の y 座標に対する、x の偏微分を返します。 |
| degrees | degrees(x) | x をラジアン単位から度単位に変換します。 |
| determinant | determinant(m) | 正方行列 m の行列式を返します。 |
| distance | distance(x, y) | 2 点間の距離を返します。 |
| dot | dot(x, y) | 2 つのベクトルの内積を返します。 |
| exp | exp(x) | e を底とする指数を返します。 |
| exp2 | exp2(x) | 2 を底とする指数 (成分ごと)。 |
| faceforward | faceforward(n, i, ng) | -n * sign(?(i, ng)) を返します。 |
| floor | floor(x) | x 以下の最大の整数を返します。 |
| fmod | fmod(x, y) | x/y の浮動小数点の剰余を返します。 |
| frac | frac(x) | x の小数部を返します。 |
| frexp | frexp(x, exp) | x の仮数と指数を返します。 |
| fwidth | fwidth(x) | abs(ddx(x)) + abs(ddy(x)) を返します。 |
| GetRenderTargetSampleCount | GetRenderTargetSampleCount() | レンダー ターゲットのサンプルの数を返します。 |
| GetRenderTargetSamplePosition | GetRenderTargetSamplePosition(x) | 特定のサンプル インデックスのサンプル位置 (x,y) を返します。 |
| isfinite | isfinite(x) | x が有限の場合は true を返し、それ以外の場合は false を返します。 |
| isinf | isinf(x) | x が +INF または -INF の場合は true を返し、それ以外の場合は false を返します。 |
| isnan | isnan(x) | x が NAN または QNAN の場合は true を返し、それ以外の場合は false を返します。 |
| ldexp | ldexp(x, exp) | x * 2exp を返します。 |
| length | length(v) | ベクトル v の長さを返します。 |
| lerp | lerp(x, y, s) | x + s(y - x) を返します。 |
| lit | lit(n ? l, n ? h, m) | ライティング ベクトル (アンビエント、ディフューズ、スペキュラー、1) を返します。 |
| log | log(x) | x の e を底とする対数を返します。 |
| log10 | log10(x) | x の 10 を底とする対数を返します。 |
| log2 | log2(x) | x の 2 を底とする対数を返します。 |
| max | max(x, y) | x と y のうちの大きい方の値を選択します。 |
| min | min(x, y) | x と y のうちの小さい方の値を選択します。 |
| modf | modf(x, out ip) | 値 x を小数部と整数部に分割します。 |
| mul | mul(x, y) | x と y の行列乗算を実行します。 |
| noise | noise(x) | パーリン ノイズ アルゴリズムを使用してランダムな値を生成します。 |
| normalize | normalize(x) | 正規化されたベクトルを返します。 |
| pow | pow(x, y) | xy を返します。 |
| radians | radians(x) | x を度単位からラジアン単位に変換します。 |
| reflect | reflect(i, n) | 反射ベクトルを返します。 |
| refract | refract(i, n, R) | 屈折ベクトルを返します。 |
| round | round(x) | x を最も近い整数に丸めます。 |
| rsqrt | rsqrt(x) | 1 / sqrt(x) を返します。 |
| saturate | saturate(x) | x を [0, 1] の範囲にクランプします。 |
| sign | sign(x) | x の符号を計算します。 |
| sin | sin(x) | x のサインを返します。 |
| sincos | sincos(x, out s, out c) | x のサインおよびコサインを返します。 |
| sinh | sinh(x) | x のハイパーボリック サインを返します。 |
| smoothstep | smoothstep(min, max, x) | 0 と 1 の間のスムーズなエルミート補間を返します。 |
| sqrt | sqrt(x) | 平方根 (成分ごと)。 |
| step | step(a, x) | (x >= a) ? 1 : 0 を返します。 |
| tan | tan(x) | x のタンジェントを返します。 |
| tanh | tanh(x) | x のハイパーボリック タンジェントを返します。 |
| tex1D | tex1D(s, t) | 1D テクスチャー ルックアップ。 |
| tex1Dbias | tex1Dbias(s, t) | 1D バイアス テクスチャー ルックアップ。 |
| tex1Dgrad | tex1Dgrad(s, t, ddx, ddy) | 1D グラデーション テクスチャー ルックアップ。 |
| tex1Dlod | tex1Dlod(s, t) | 1D LOD テクスチャー ルックアップ。 |
| tex1Dproj | tex1Dproj(s, t) | 1D 射影除算テクスチャー ルックアップ。 |
| tex2D | tex2D(s, t) | 2D テクスチャー ルックアップ。 |
| tex2Dbias | tex2Dbias(s, t) | 2D バイアス テクスチャー ルックアップ。 |
| tex2Dgrad | tex2Dgrad(s, t, ddx, ddy) | 2D グラデーション テクスチャー ルックアップ。 |
| tex2Dlod | tex2Dlod(s, t) | 2D LOD テクスチャー ルックアップ。 |
| tex2Dproj | tex2Dproj(s, t) | 2D 射影除算テクスチャー ルックアップ。 |
| tex3D | tex3D(s, t) | 3D テクスチャー ルックアップ。 |
| tex3Dbias | tex3Dbias(s, t) | 3D バイアス テクスチャー ルックアップ。 |
| tex3Dgrad | tex3Dgrad(s, t, ddx, ddy) | 3D グラデーション テクスチャー ルックアップ。 |
| tex3Dlod | tex3Dlod(s, t) | 3D LOD テクスチャー ルックアップ。 |
| tex3Dproj | tex3Dproj(s, t) | 3D 射影除算テクスチャー ルックアップ。 |
| texCUBE | texCUBE(s, t) | キューブ テクスチャー ルックアップ。 |
| texCUBEbias | texCUBEbias(s, t) | キューブ バイアス テクスチャー ルックアップ。 |
| texCUBEgrad | texCUBEgrad(s, t, ddx, ddy) | キューブ グラデーション テクスチャー ルックアップ。 |
| texCUBElod | tex3Dlod(s, t) | キューブ LOD テクスチャー ルックアップ。 |
| texCUBEproj | texCUBEproj(s, t) | キューブ射影除算テクスチャー ルックアップ。 |
| transpose | transpose(m) | 行列 m の転置行列を返します。 |
| trunc | trunc(x) | 浮動小数点値の端数を切り捨てて整数値に変換します。 |
成分とテンプレートの型
HLSL 組み込み関数宣言は、入力パラメーター引数と戻り値に成分型とテンプレート型を使用します。使用可能な型を次の表に示します。
| テンプレート型 | 説明 | サポートされているデータ型 |
|---|---|---|
| matrix | 宣言に応じて最大 16 成分 | HLSL の基本的な型 |
| オブジェクト | サンプラー オブジェクト | sampler, sampler1D, sampler2D, sampler3D, samplerCUBE |
| スカラー | 1 つの成分 | HLSL の基本的な型 |
| vector | 最小 1 つ、最大 4 つの成分 (両方の値を含む) | HLSL の基本的な型 |