內建函式
下表列出 HLSL 中可用的內建函式。 每個函式都有簡短的描述,以及參考頁面的連結,其中包含輸入引數和傳回類型的詳細資料。
名稱 | 描述 | 最小著色器模型 |
---|---|---|
abort | 終止正在執行的目前繪製或分派呼叫。 | 4 |
abs | 絕對值(每個元件)。 | 1次 |
acos | 傳回 x 每個元件的反余弦值。 | 1次 |
全部 | 測試 x 的所有元件是否為非零。 | 1次 |
AllMemoryBarrier | 封鎖群組中所有線程的執行,直到所有記憶體存取都完成為止。 | 5 |
AllMemoryBarrierWithGroupSync | 封鎖群組中所有線程的執行,直到所有記憶體存取都完成,且群組中的所有線程都已到達此呼叫為止。 | 5 |
any | 測試 x 的任何元件是否為非零。 | 1次 |
asdouble | 將轉換值重新解譯為雙精度浮點數。 | 5 |
asfloat | 將輸入類型轉換為 float。 | 4 |
asin | 傳回 x 每個元件的反正弦值。 | 1次 |
asint | 將輸入類型轉換為整數。 | 4 |
asuint | 將 64 位類型的位模式重新解譯為 uint。 | 5 |
asuint | 將輸入類型轉換為不帶正負號的整數。 | 4 |
atan | 傳回 x 的反正切值。 | 1次 |
atan2 | 傳回兩個值的反正切值(x,y)。 | 1次 |
ceil | 傳回大於或等於 x 的最小整數。 | 1次 |
CheckAccessFullyMapped | 判斷範例或載入作業中的所有值 是否存取磚 資源中的 對應磚。 | 5 |
鉗 | 將 x 夾到範圍 [min, max]。 | 1次 |
clip | 如果 x 的任何元件小於零,則會捨棄目前的圖元。 | 1次 |
cos | 傳回 x 的余弦值。 | 1次 |
cosh | 傳回 x 的雙曲余弦值。 | 1次 |
countbits | 計算輸入整數中的位數(每個元件)。 | 5 |
交叉 | 傳回兩個 3D 向量的交叉乘積。 | 1次 |
D3DCOLORtoUBYTE4 | 4D 向量 x 的 Swizzles 和 scales 元件可補償某些硬體中缺乏 UBYTE4 支援。 | 1次 |
ddx | 傳回 x 相對於螢幕空間 x 座標的部分衍生。 | 2 Emc |
ddx_coarse | 計算與螢幕空間 x 座標相關的低精確度部分衍生。 | 5 |
ddx_fine | 計算與螢幕空間 x 座標相關的高精確度部分衍生。 | 5 |
ddy | 傳回 x 相對於螢幕空間 y 座標的部分衍生。 | 2 Emc |
ddy_coarse | 計算與螢幕空間 y 座標相關的低精確度部分衍生。 | 5 |
ddy_fine | 計算與螢幕空間 y 座標相關的高精確度部分衍生。 | 5 |
度 | 將 x 從弧度轉換成度。 | 1次 |
行列 式 | 傳回平方矩陣 m 的行列式。 | 1次 |
DeviceMemoryBarrier | 封鎖群組中所有線程的執行,直到所有裝置記憶體存取完成為止。 | 5 |
DeviceMemoryBarrierWithGroupSync | 封鎖群組中所有線程的執行,直到所有裝置記憶體存取都完成,且群組中的所有線程都已到達此呼叫為止。 | 5 |
distance | 傳回兩點之間的距離。 | 1次 |
點 | 傳回兩個向量的內積。 | 1 |
Dst | 計算距離向量。 | 5 |
errorf | 將錯誤訊息提交至資訊佇列。 | 4 |
EvaluateAttributeCentroid | 評估圖元心形。 | 5 |
EvaluateAttributeAtSample | 評估在索引的範例位置。 | 5 |
EvaluateAttributeSnapped | 以位移來評估圖元心。 | 5 |
exp | 傳回 base-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 | 傳回雙精確度融合加法 * b + c。 | 5 |
fmod | 傳回 x/y 的浮點餘數。 | 1次 |
壓裂 | 傳回 x 的小數部分。 | 1次 |
frexp | 傳回 x 的 mantissa 和指數。 | 2 Emc |
fwidth | 傳回 abs(ddx(x)) + abs(ddy(x)) | 2 Emc |
GetRenderTargetSampleCount | 傳回轉譯目標樣本的數目。 | 4 |
GetRenderTargetSamplePosition | 傳回指定範例索引的範例位置 (x,y)。 | 4 |
GroupMemoryBarrier | 封鎖群組中所有線程的執行,直到所有群組共用存取都完成為止。 | 5 |
GroupMemoryBarrierWithGroupSync | 封鎖群組中所有線程的執行,直到所有群組共用存取都完成,且群組中的所有線程都已到達此呼叫為止。 | 5 |
InterlockedAdd | 對 dest 資源變數執行保證的不可部分完成增加值。 | 5 |
InterlockedAnd | 執行保證的不可部分完成和 。 | 5 |
InterlockedCompareExchange | 以不可部分完成的方式比較輸入與比較值,並交換結果。 | 5 |
InterlockedCompareStore | 以不可部分完成的方式比較輸入與比較值。 | 5 |
InterlockedExchange | 將值指派給 dest,並傳回原始值。 | 5 |
InterlockedMax | 執行保證不可部分完成的最大值。 | 5 |
InterlockedMin | 執行保證的不可部分完成最小值。 | 5 |
InterlockedOr | 執行保證的不可部分完成或。 | 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次 |
點燃 | 傳回光源向量(環境、擴散、反射、1) | 1次 |
log | 傳回 x 的 base-e 對數。 | 1次 |
log10 | 傳回 x 的 base-10 對數。 | 1次 |
log2 | 傳回 x 的 base-2 對數。 | 1次 |
瘋狂 | 在三個值上執行算術乘法/加法運算。 | 5 |
max | 選取 x 和 y 的更大。 | 1次 |
min | 選取 x 和 y 的較小專案。 | 1次 |
modf | 將 x 值分割成小數和整數部分。 | 1次 |
msad4 | 比較 4 位元組參考值和 8 位元組的來源值,並累積 4 個總和的向量。 | 5 |
mul | 使用 x 和 y 執行矩陣乘法。 | 1 |
雜訊 | 使用 Perlin-noise 演算法產生隨機值。 | 1次 |
規範 | 傳回正規化向量。 | 1次 |
pow | 傳回 x y 。 | 1次 |
printf | 將自訂著色器訊息提交至資訊佇列。 | 4 |
Process2DQuadTessFactorsAvg | 為四邊形修補產生更正的鑲嵌因數。 | 5 |
Process2DQuadTessFactorsMax | 為四邊形修補產生更正的鑲嵌因數。 | 5 |
Process2DQuadTessFactorsMin | 為四邊形修補產生更正的鑲嵌因數。 | 5 |
ProcessIsolineTessFactors | 產生 isoline 的四捨五入鑲嵌因數。 | 5 |
ProcessQuadTessFactorsAvg | 為四邊形修補產生更正的鑲嵌因數。 | 5 |
ProcessQuadTessFactorsMax | 為四邊形修補產生更正的鑲嵌因數。 | 5 |
ProcessQuadTessFactorsMin | 為四邊形修補產生更正的鑲嵌因數。 | 5 |
ProcessTriTessFactorsAvg | 為三個修補程式產生更正的鑲嵌因數。 | 5 |
ProcessTriTessFactorsMax | 為三個修補程式產生更正的鑲嵌因數。 | 5 |
ProcessTriTessFactorsMin | 為三個修補程式產生更正的鑲嵌因數。 | 5 |
弧度 | 將 x 從度轉換成弧度。 | 1 |
rcp | 計算快速、近似、每個元件的相互。 | 5 |
反映 | 傳回反映向量。 | 1 |
折射 | 傳回折射向量。 | 1次 |
reversebits | 反轉每個元件位的順序。 | 5 |
round | 將 x 四捨五入為最接近的整數 | 1次 |
rsqrt | 傳回 1 / sqrt(x) | 1次 |
飽和 | 將 x 夾到範圍 [0, 1] | 1 |
簽署 | 計算 x 的符號。 | 1次 |
sin | 傳回 x 的正弦值 | 1次 |
sincos | 傳回 x 的正弦和余弦值。 | 1次 |
sinh | 傳回 x 的雙曲正弦值 | 1次 |
smoothstep | 傳回介於 0 到 1 之間的平滑隱士插補。 | 1次 |
sqrt | 平方根 (每個元件) | 1次 |
步 | 傳回 (x > = a) ? 1 : 0 | 1次 |
tan | 傳回 x 的正切值 | 1次 |
tanh | 傳回 x 的雙曲正切值 | 1次 |
tex1D(s, t) | 1D 紋理查閱。 | 1 |
tex1D(s, t, ddx, ddy) | 1D 紋理查閱。 | 2 Emc |
tex1Dbias | 具有偏差的 1D 紋理查閱。 | 2 Emc |
tex1Dgrad | 具有漸層的 1D 紋理查閱。 | 2 Emc |
tex1Dlod | 使用 LOD 進行 1D 紋理查閱。 | 3 Emc |
tex1Dproj | 具有投影除法的 1D 紋理查閱。 | 2 Emc |
tex2D(s, t) | 2D 紋理查閱。 | 1次 |
tex2D(s, t, ddx, ddy) | 2D 紋理查閱。 | 2 Emc |
tex2Dbias | 具有偏差的 2D 紋理查閱。 | 2 Emc |
tex2Dgrad | 具有漸層的 2D 紋理查閱。 | 2 Emc |
tex2Dlod | 使用 LOD 進行 2D 紋理查閱。 | 3 |
tex2Dproj | 具有投影除法的 2D 紋理查閱。 | 2 Emc |
tex3D(s, t) | 3D 紋理查閱。 | 1次 |
tex3D(s, t, ddx, ddy) | 3D 紋理查閱。 | 2 Emc |
tex3Dbias | 具有偏差的 3D 紋理查閱。 | 2 Emc |
tex3Dgrad | 具有漸層的 3D 紋理查閱。 | 2 Emc |
tex3Dlod | 使用 LOD 進行 3D 紋理查閱。 | 3 Emc |
tex3Dproj | 具有投影除法的 3D 紋理查閱。 | 2 Emc |
texCUBE(s, t) | Cube 紋理查閱。 | 1次 |
texCUBE(s, t, ddx, ddy) | Cube 紋理查閱。 | 2 Emc |
texCUBEbias | 具有偏差的立方體紋理查閱。 | 2 Emc |
texCUBEgrad | 具有漸層的 Cube 紋理查閱。 | 2 Emc |
texCUBElod | 使用 LOD 進行 Cube 紋理查閱。 | 3 Emc |
texCUBEproj | 具有投影除法的立方體紋理查閱。 | 2 Emc |
transpose | 傳回矩陣 m 的轉置。 | 1 |
trunc | 截斷浮點值(s) 到整數值(s) | 1 |
1 請參閱參考頁面以取得限制。
元件和範本類型
HLSL 內建函式宣告會針對輸入參數引數和傳回值使用元件類型和範本類型。 下表列出可用的類型。
這些範本類型 | 描述 | 支援這些資料類型 |
---|---|---|
矩陣 | 根據宣告,最多 16 個元件 | 基本 HLSL 類型 |
object | sampler 物件 | sampler 、 sampler1D 、 sampler2D 、 sampler3D 、 samplerCUBE |
標量 | 1 個元件 | 基本 HLSL 類型 |
vector | 最小 1 個元件,最多 4 個元件(含) | 基本 HLSL 類型 |
另請參閱