內建函式

下表列出 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 類型

 

另請參閱

HLSL 的參考