內建函式
下表列出 HLSL 中可用的內建函式。 每個函式都有簡短的描述,以及參考頁面的連結,其中包含輸入引數和傳回型別的詳細資料。
名稱 | 描述 | 最小著色器模型 |
---|---|---|
中止 | 終止正在執行的目前繪製或分派呼叫。 | 4 |
Abs | 每個元件) (絕對值。 | 1¹ |
acos | 傳回 x 每個元件的反余弦值。 | 1¹ |
所有 | 測試 x 的所有元件是否為非零。 | 1¹ |
AllMemoryBarrier | 封鎖群組中所有線程的執行,直到所有記憶體存取都完成為止。 | 5 |
AllMemoryBarrierWithGroupSync | 封鎖群組中所有線程的執行,直到所有記憶體存取都已完成,且群組中的所有線程都已到達此呼叫為止。 | 5 |
任何 | 測試 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¹ |
因為 | 傳回 x 的余弦值。 | 1¹ |
cosh | 傳回 x 的雙曲余弦值。 | 1¹ |
countbits | 計算輸入整數中每個元件) (位數目。 | 5 |
cross | 傳回兩個 3D 向量的交叉乘積。 | 1¹ |
D3DCOLORtoUBYTE4 | Swizzles 和 scales 4D vector x 的元件可補償某些硬體中缺少 UBYTE4 支援。 | 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 |
度 | 將 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 |
臉部向前 | 會傳回 -n * 符號 (點 (i, ng) ) 。 | 1¹ |
firstbithigh | 取得從最高順序位開始的第一個設定位位置,並依每個元件向下運作。 | 5 |
firstbitlow | 傳回從最低順序位開始的第一個設定位位置,並依每個元件向上工作。 | 5 |
地板 | 傳回小於或等於 x 的最大整數。 | 1¹ |
fma | 傳回雙精確度融合加法 * b + c。 | 5 |
fmod | 傳回 x/y 的浮點餘數。 | 1¹ |
壓裂 | 傳回 x 的小數部分。 | 1¹ |
frexp | 傳回 x 的 mantissa 和指數。 | 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 | 執行保證的不可部分完成最大值。 | 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¹ |
長度 | 傳回向量 v 的長度。 | 1¹ |
lerp | 會傳回 x + s (y - x) 。 | 1¹ |
點燃 | 傳回光源向量 (環境、擴散、反射、1) | 1¹ |
日誌 | 傳回 x 的 base-e 對數。 | 1¹ |
log10 | 傳回 x 的 base-10 對數。 | 1¹ |
log2 | 傳回 x 的 base-2 對數。 | 1¹ |
瘋狂 | 在三個值上執行算術乘法/加法運算。 | 5 |
麥克斯 | 選取 x 和 y 的大於 。 | 1¹ |
分鐘 | 選取 x 和 y 的較小者。 | 1¹ |
modf | 將 x 值分割成小數和整數部分。 | 1¹ |
msad4 | 比較 4 位元組參考值和 8 位元組來源值,並累積 4 個總和的向量。 | 5 |
mul | 使用 x 和 y 執行矩陣乘法。 | 1 |
雜訊 | 使用 Perlin-noise 演算法產生隨機值。 | 1¹ |
規範 | 傳回標準化向量。 | 1¹ |
戰俘 | 傳回 xy。 | 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 |
折射 | 傳回 refraction 向量。 | 1¹ |
reversebits | 反轉每個元件的位順序。 | 5 |
輪 | 將 x 四捨五入為最接近的整數 | 1¹ |
rsqrt | 傳回 1 / sqrt (x) | 1¹ |
飽和 | 將 x 限制為範圍 [0, 1] | 1 |
標誌 | 計算 x 的符號。 | 1¹ |
罪 | 傳回 x 的正弦值 | 1¹ |
sincos | 傳回 x 的正弦和余弦值。 | 1¹ |
sinh | 傳回 x 的雙曲正弦值 | 1¹ |
smoothstep | 傳回介於 0 到 1 之間的平滑 Hermite 插補。 | 1¹ |
sqrt | 每個元件 (平方根) | 1¹ |
步 | 傳回 (x > =) ? 1 : 0 | 1¹ |
潭 | 傳回 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) | Cube 紋理查閱。 | 1¹ |
texCUBE (s, t, ddx, ddy) | Cube 紋理查閱。 | 2¹ |
texCUBEbias | 具有偏差的 Cube 紋理查閱。 | 2¹ |
texCUBEgrad | 具有漸層的 Cube 紋理查閱。 | 2¹ |
texCUBElod | 使用 LOD 的 Cube 紋理查閱。 | 3¹ |
texCUBEproj | 具有投影分割的 Cube 紋理查閱。 | 2¹ |
transpose | 傳回矩陣 m 的轉置。 | 1 |
trunc | 將浮點值截斷 (s) 為整數值, (s) | 1 |
¹ 如需限制,請參閱參考頁面。
元件和範本類型
HLSL 內建函式宣告會針對輸入參數引數和傳回值使用元件類型和範本類型。 下表列出可用的類型。
這些範本類型 | 描述 | 支援這些資料類型 |
---|---|---|
矩陣 | 根據宣告,最多 16 個元件 | 基本 HLSL 類型 |
物件 (object) | sampler 物件 | sampler、 sampler1D、 sampler2D、 sampler3D、 samplerCUBE |
純量 (scalar) | 1 個元件 | 基本 HLSL 類型 |
向量 | 最小 1 個元件,最多 4 個元件 (內含) | 基本 HLSL 類型 |
另請參閱