内在函数
下表列出了HLSL中可用的内在函数。每个函数都有一个简短的描述,以及一个指向参考页面的链接,该页面具有有关输入参数和返回类型的更多详细信息。
表1
名称
描述
最小着色器模型
abort
终止当前正在执行的绘制或调度调用。
4
abs
绝对值(每个组件)。
1¹
acos
返回x每个分量的反余弦值。
1¹
all
测试x的所有分量是否非零。
1¹
AllMemoryBarrier
阻止执行组中所有线程,直到完成所有内存访问为止。
5
AllMemoryBarrierWithGroupSync
阻止执行组中的所有线程,直到完成所有内存访问并且组中的所有线程都到达此调用为止。
5
any
测试x的任何分量是否为非零。
1¹
asdouble
将转换值重新解释为双精度型。
5
asfloat
将输入类型转换为浮点型。
4
asin
返回x的每个分量的反正弦值。
1¹
asint
将输入类型转换为整数。
4
asuint
将64位类型的位模式重新解释为uint。
5
asuint
将输入类型转换为无符号整数。
4
atan
返回x的反正切。
1¹
atan2
返回两个值(x,y)的反正切。
1¹
ceil
返回大于或等于x的最小整数。
1¹
CheckAccessFullyMapped
确定“ 采样”或“ 加载”操作中的所有值是否访问切片资源中的映射切片。
5
clamp
将x限制在[min,max]范围内。
1¹
clip
如果x的任何分量小于零,则丢弃当前像素。
1¹
cos
返回x的余弦值。
1¹
cosh
返回x的双曲余弦值。
1¹
countbits
计算输入整数中的位数(每个分量)。
5
cross
返回两个3D向量的叉积。
1¹
D3DCOLORtoUBYTE4
旋转和缩放4D向量x的分量,以弥补某些硬件中对UBYTE4支持的不足。
1¹
ddx
返回x相对于屏幕空间x坐标的偏导数。
2¹
ddx_coarse
计算相对于屏幕空间x坐标的低精度偏导数。
5
ddx_fine
计算相对于屏幕空间x坐标的高精度偏导数。
5
ddy
返回x相对于屏幕空间y坐标的偏导数。
2¹
ddy_coarse
计算相对于屏幕空间y坐标的低精度偏导数。
5
ddy_fine
计算相对于屏幕空间y坐标的高精度偏导数。
5
degrees
将x从弧度转换为度。
1¹
determinant
返回方阵m的行列式。
1¹
DeviceMemoryBarrier
阻止执行组中所有线程,直到完成所有设备内存访问为止。
5
DeviceMemoryBarrierWithGroupSync
阻止执行组中的所有线程,直到完成所有设备内存访问并且组中的所有线程都到达此调用为止。
5
distance
返回两点之间的距离。
1¹
dot
返回两个向量的点积。
1个
dst
计算距离向量。
5
errorf
将错误消息提交到信息队列。
4
EvaluateAttributeAtCentroid
评估像素质心。
5
EvaluateAttributeAtSample
在索引的样本位置进行评估。
5
EvaluateAttributeSnapped
用偏移量评估像素质心。
5
exp
返回base-e指数。
1¹
exp2
以2为底的指数(每个分量)。
1¹
f16tof32
将存储在uint的下半部分中的float16转换为float。
5
f32tof16
将输入转换为float16类型。
5
faceforward
返回-n *符号(dot(i,ng))。
1¹
firstbithigh
获取每个组件从最高位开始到向下工作的第一个置位的位置。
5
firstbitlow
返回每个组件从最低位开始并向上工作的第一个置位位置。
5
floor
返回小于或等于x的最大整数。
1¹
fma
返回a * b + c的双精度融合乘法加法。
5
fmod
返回x / y的浮点余数。
1¹
frac
返回x的小数部分。
1¹
frexp
返回x的尾数和指数。
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
执行保证的原子异或。
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¹
lit
返回光照向量(环境,漫反射,镜面反射,1)
1¹
log
返回x的以e为底的对数。
1¹
log10
返回x的以10为底的对数。
1¹
log2
返回x的以2为底的对数。
1¹
mad
对三个值执行算术乘法/加法运算。
5
max
选择x和y中的较大者。
1¹
min
选择x和y中的较小者。
1¹
modf
将值x分为小数和整数部分。
1¹
msad4
比较4字节参考值和8字节源值,并累加4个和的向量。
5
mul
使用x和y执行矩阵乘法。
1个
noise
使用Perlin噪声算法生成随机值。
1¹
normalize
返回归一化向量。
1¹
pow
返回x y。
1¹
printf
将自定义着色器消息提交到信息队列。
4
Process2DQuadTessFactorsAvg
生成四边形补丁的校正的镶嵌细分因子。
5
Process2DQuadTessFactorsMax
生成四边形补丁的校正的镶嵌细分因子。
5
Process2DQuadTessFactorsMin
生成四边形补丁的校正的镶嵌细分因子。
5
ProcessIsolineTessFactors
生成等值线的舍入细分化因子。
5
ProcessQuadTessFactorsAvg
生成四边形补丁的校正的镶嵌细分因子。
5
ProcessQuadTessFactorsMax
生成四边形补丁的校正的镶嵌细分因子。
5
ProcessQuadTessFactorsMin
生成四边形补丁的校正的镶嵌细分因子。
5
ProcessTriTessFactorsAvg
生成三面体的校正镶嵌细分因子。
5
ProcessTriTessFactorsMax
生成三面体的校正镶嵌细分因子。
5
ProcessTriTessFactorsMin
生成三面体的校正镶嵌细分因子。
5
radians
将x从度转换为弧度。
1个
rcp
计算每个组件的近似快速倒数。
5
reflect
返回反射向量。
1个
refract
返回折射向量。
1¹
reversebits
反转每个组件的位顺序。
5
round
将x舍入到最接近的整数
1¹
rsqrt
返回1 / sqrt(x)
1¹
saturate
将x钳位到[0,1]范围
1个
sign
计算x的符号。
1¹
sin
返回x的正弦
1¹
sincos
返回x的正弦和余弦。
1¹
sinh
返回x的双曲正弦值
1¹
smoothstep
返回介于0和1之间的平滑Hermite插值。
1¹
sqrt
平方根(每个分量)
1¹
step
返回(x> = a)?1:0
1¹
tan
返回x的切线
1¹
tanh
返回x的双曲正切
1¹
tex1D(s, t)
一维纹理查找。
1个
tex1D(s, t, ddx, ddy)
一维纹理查找。
2¹
tex1Dbias
具有偏差的一维纹理查找。
2¹
tex1Dgrad
具有渐变的1D纹理查找。
2¹
tex1Dlod
使用LOD进行1D纹理查找。
3¹
tex1Dproj
一维纹理查找与投影分隔。
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
3D与LOD的纹理查找。
3¹
tex3Dproj
3D与射影鸿沟的纹理查找。
2¹
texCUBE(s, t)
多维数据集纹理查找。
1¹
texCUBE(s, t, ddx, ddy)
多维数据集纹理查找。
2¹
texCUBEbias
多维数据集具有偏差的纹理查找。
2¹
texCUBEgrad
多维数据集与渐变的纹理查找。
2¹
texCUBElod
与LOD的多维数据集纹理查找。
3¹
texCUBEproj
多维数据集纹理查找与射影鸿沟。
2¹
transpose
返回矩阵m的转置。
1个
trunc
将浮点值截断为整数值
1个
组件和模板类型
HLSL内在函数声明将组件类型和模板类型用于输入参数自变量和返回值。下表列出了可用的类型。
表2
这些模板类型
描述
支持这些数据类型
matrix
多达16个组件,具体取决于声明
HLSL基本类型
object
采样对象
采样器,sampler1D,sampler2D,sampler3D,samplerCUBE
scalar
1个组成部分
HLSL基本类型
vector
最少1个组件,最多4个组件(含)