内在函數
下表列出了HLSL中可用的内在函數。每個函數都有一個簡短的描述,以及一個指向參考頁面的連結,該頁面具有有關輸入參數和傳回類型的更多詳細資訊。
表1
名稱
描述
最小着色器模型
abort
終止目前正在執行的繪制或排程調用。
4
abs
絕對值(每個元件)。
1¹
acos
傳回x每個分量的反餘弦值。
all
測試x的所有分量是否非零。
AllMemoryBarrier
阻止執行組中所有線程,直到完成所有記憶體通路為止。
5
AllMemoryBarrierWithGroupSync
阻止執行組中的所有線程,直到完成所有記憶體通路并且組中的所有線程都到達此調用為止。
any
測試x的任何分量是否為非零。
asdouble
将轉換值重新解釋為雙精度型。
asfloat
将輸入類型轉換為浮點型。
asin
傳回x的每個分量的反正弦值。
asint
将輸入類型轉換為整數。
asuint
将64位類型的位模式重新解釋為uint。
将輸入類型轉換為無符号整數。
atan
傳回x的反正切。
atan2
傳回兩個值(x,y)的反正切。
ceil
傳回大于或等于x的最小整數。
CheckAccessFullyMapped
确定“ 采樣”或“ 加載”操作中的所有值是否通路切片資源中的映射切片。
clamp
将x限制在[min,max]範圍内。
clip
如果x的任何分量小于零,則丢棄目前像素。
cos
傳回x的餘弦值。
cosh
傳回x的雙曲餘弦值。
countbits
計算輸入整數中的位數(每個分量)。
cross
傳回兩個3D向量的叉積。
D3DCOLORtoUBYTE4
旋轉和縮放4D向量x的分量,以彌補某些硬體中對UBYTE4支援的不足。
ddx
傳回x相對于螢幕空間x坐标的偏導數。
2¹
ddx_coarse
計算相對于螢幕空間x坐标的低精度偏導數。
ddx_fine
計算相對于螢幕空間x坐标的高精度偏導數。
ddy
傳回x相對于螢幕空間y坐标的偏導數。
ddy_coarse
計算相對于螢幕空間y坐标的低精度偏導數。
ddy_fine
計算相對于螢幕空間y坐标的高精度偏導數。
degrees
将x從弧度轉換為度。
determinant
傳回方陣m的行列式。
DeviceMemoryBarrier
阻止執行組中所有線程,直到完成所有裝置記憶體通路為止。
DeviceMemoryBarrierWithGroupSync
阻止執行組中的所有線程,直到完成所有裝置記憶體通路并且組中的所有線程都到達此調用為止。
distance
傳回兩點之間的距離。
dot
傳回兩個向量的點積。
1個
dst
計算距離向量。
errorf
将錯誤消息送出到資訊隊列。
EvaluateAttributeAtCentroid
評估像素質心。
EvaluateAttributeAtSample
在索引的樣本位置進行評估。
EvaluateAttributeSnapped
用偏移量評估像素質心。
exp
傳回base-e指數。
exp2
以2為底的指數(每個分量)。
f16tof32
将存儲在uint的下半部分中的float16轉換為float。
f32tof16
将輸入轉換為float16類型。
faceforward
傳回-n *符号(dot(i,ng))。
firstbithigh
擷取每個元件從最高位開始到向下工作的第一個置位的位置。
firstbitlow
傳回每個元件從最低位開始并向上工作的第一個置位位置。
floor
傳回小于或等于x的最大整數。
fma
傳回a * b + c的雙精度融合乘法加法。
fmod
傳回x / y的浮點餘數。
frac
傳回x的小數部分。
frexp
傳回x的尾數和指數。
fwidth
傳回abs(ddx(x))+ abs(ddy(x))
GetRenderTargetSampleCount
傳回渲染目标樣本的數量。
GetRenderTargetSamplePosition
傳回給定樣本索引的樣本位置(x,y)。
GroupMemoryBarrier
阻止執行組中所有線程,直到完成所有組共享通路。
GroupMemoryBarrierWithGroupSync
阻止執行組中的所有線程,直到完成所有組共享通路并且組中的所有線程都到達此調用為止。
InterlockedAdd
對dest資源變量執行保證的原子加值。
InterlockedAnd
執行保證的原子和。
InterlockedCompareExchange
以原子方式将輸入與比較值進行比較并交換結果。
InterlockedCompareStore
以原子方式将輸入與比較值進行比較。
InterlockedExchange
将值配置設定給dest并傳回原始值。
InterlockedMax
執行保證的原子最大值。
InterlockedMin
執行保證的原子最小值。
InterlockedOr
執行保證的原子或。
InterlockedXor
執行保證的原子異或。
isfinite
如果x是有限的,則傳回true,否則傳回false。
isinf
如果x為+ INF或-INF,則傳回true,否則傳回false。
isnan
如果x為NAN或QNAN,則傳回true,否則傳回false。
ldexp
傳回x * 2exp
length
傳回向量v的長度。
lerp
傳回x + s(y-x)。
lit
傳回光照向量(環境,漫反射,鏡面反射,1)
log
傳回x的以e為底的對數。
log10
傳回x的以10為底的對數。
log2
傳回x的以2為底的對數。
mad
對三個值執行算術乘法/加法運算。
max
選擇x和y中的較大者。
min
選擇x和y中的較小者。
modf
将值x分為小數和整數部分。
msad4
比較4位元組參考值和8位元組源值,并累加4個和的向量。
mul
使用x和y執行矩陣乘法。
noise
使用Perlin噪聲算法生成随機值。
normalize
傳回歸一化向量。
pow
傳回x y。
printf
将自定義着色器消息送出到資訊隊列。
Process2DQuadTessFactorsAvg
生成四邊形更新檔的校正的鑲嵌細分因子。
Process2DQuadTessFactorsMax
Process2DQuadTessFactorsMin
ProcessIsolineTessFactors
生成等值線的舍入細分化因子。
ProcessQuadTessFactorsAvg
ProcessQuadTessFactorsMax
ProcessQuadTessFactorsMin
ProcessTriTessFactorsAvg
生成三面體的校正鑲嵌細分因子。
ProcessTriTessFactorsMax
ProcessTriTessFactorsMin
radians
将x從度轉換為弧度。
rcp
計算每個元件的近似快速倒數。
reflect
傳回反射向量。
refract
傳回折射向量。
reversebits
反轉每個元件的位順序。
round
将x舍入到最接近的整數
rsqrt
傳回1 / sqrt(x)
saturate
将x鉗位到[0,1]範圍
sign
計算x的符号。
sin
傳回x的正弦
sincos
傳回x的正弦和餘弦。
sinh
傳回x的雙曲正弦值
smoothstep
傳回介于0和1之間的平滑Hermite插值。
sqrt
平方根(每個分量)
step
傳回(x> = a)?1:0
tan
傳回x的切線
tanh
傳回x的雙曲正切
tex1D(s, t)
一維紋理查找。
tex1D(s, t, ddx, ddy)
tex1Dbias
具有偏差的一維紋理查找。
tex1Dgrad
具有漸變的1D紋理查找。
tex1Dlod
使用LOD進行1D紋理查找。
3¹
tex1Dproj
一維紋理查找與投影分隔。
tex2D(s, t)
2D紋理查找。
tex2D(s, t, ddx, ddy)
tex2Dbias
具有偏差的2D紋理查找。
tex2Dgrad
具有漸變的2D紋理查找。
tex2Dlod
具有LOD的2D紋理查找。
3
tex2Dproj
具有投影鴻溝的2D紋理查找。
tex3D(s, t)
3D紋理查找。
tex3D(s, t, ddx, ddy)
tex3Dbias
3D與偏差的紋理查找。
tex3Dgrad
3D與梯度的紋理查找。
tex3Dlod
3D與LOD的紋理查找。
tex3Dproj
3D與射影鴻溝的紋理查找。
texCUBE(s, t)
多元資料集紋理查找。
texCUBE(s, t, ddx, ddy)
texCUBEbias
多元資料集具有偏差的紋理查找。
texCUBEgrad
多元資料集與漸變的紋理查找。
texCUBElod
與LOD的多元資料集紋理查找。
texCUBEproj
多元資料集紋理查找與射影鴻溝。
transpose
傳回矩陣m的轉置。
trunc
将浮點值截斷為整數值
元件和模闆類型
HLSL内在函數聲明将元件類型和模闆類型用于輸入參數自變量和傳回值。下表列出了可用的類型。
表2
這些模闆類型
支援這些資料類型
matrix
多達16個元件,具體取決于聲明
HLSL基本類型
object
采樣對象
采樣器,sampler1D,sampler2D,sampler3D,samplerCUBE
scalar
1個組成部分
vector
最少1個元件,最多4個元件(含)