内在函数
下表列出了HLSL中可用的内在函数。每个函数都有一个简短的描述,以及一个指向参考页面的链接,该页面具有有关输入参数和返回类型的更多详细信息。
表1 |
||
名称 |
描述 |
最小着色器模型 |
终止当前正在执行的绘制或调度调用。 |
4 |
|
扫描二维码关注公众号,回复:
14681190 查看本文章
|
绝对值(每个组件)。 |
1¹ |
返回x每个分量的反余弦值。 |
1¹ |
|
测试x的所有分量是否非零。 |
1¹ |
|
阻止执行组中所有线程,直到完成所有内存访问为止。 |
5 |
|
阻止执行组中的所有线程,直到完成所有内存访问并且组中的所有线程都到达此调用为止。 |
5 |
|
测试x的任何分量是否为非零。 |
1¹ |
|
将转换值重新解释为双精度型。 |
5 |
|
将输入类型转换为浮点型。 |
4 |
|
返回x的每个分量的反正弦值。 |
1¹ |
|
将输入类型转换为整数。 |
4 |
|
将64位类型的位模式重新解释为uint。 |
5 |
|
将输入类型转换为无符号整数。 |
4 |
|
返回x的反正切。 |
1¹ |
|
返回两个值(x,y)的反正切。 |
1¹ |
|
返回大于或等于x的最小整数。 |
1¹ |
|
确定“ 采样”或“ 加载”操作中的所有值是否访问切片资源中的映射切片。 |
5 |
|
将x限制在[min,max]范围内。 |
1¹ |
|
如果x的任何分量小于零,则丢弃当前像素。 |
1¹ |
|
返回x的余弦值。 |
1¹ |
|
返回x的双曲余弦值。 |
1¹ |
|
计算输入整数中的位数(每个分量)。 |
5 |
|
返回两个3D向量的叉积。 |
1¹ |
|
旋转和缩放4D向量x的分量,以弥补某些硬件中对UBYTE4支持的不足。 |
1¹ |
|
返回x相对于屏幕空间x坐标的偏导数。 |
2¹ |
|
计算相对于屏幕空间x坐标的低精度偏导数。 |
5 |
|
计算相对于屏幕空间x坐标的高精度偏导数。 |
5 |
|
返回x相对于屏幕空间y坐标的偏导数。 |
2¹ |
|
计算相对于屏幕空间y坐标的低精度偏导数。 |
5 |
|
计算相对于屏幕空间y坐标的高精度偏导数。 |
5 |
|
将x从弧度转换为度。 |
1¹ |
|
返回方阵m的行列式。 |
1¹ |
|
阻止执行组中所有线程,直到完成所有设备内存访问为止。 |
5 |
|
阻止执行组中的所有线程,直到完成所有设备内存访问并且组中的所有线程都到达此调用为止。 |
5 |
|
返回两点之间的距离。 |
1¹ |
|
返回两个向量的点积。 |
1个 |
|
计算距离向量。 |
5 |
|
将错误消息提交到信息队列。 |
4 |
|
评估像素质心。 |
5 |
|
在索引的样本位置进行评估。 |
5 |
|
用偏移量评估像素质心。 |
5 |
|
返回base-e指数。 |
1¹ |
|
以2为底的指数(每个分量)。 |
1¹ |
|
将存储在uint的下半部分中的float16转换为float。 |
5 |
|
将输入转换为float16类型。 |
5 |
|
返回-n *符号(dot(i,ng))。 |
1¹ |
|
获取每个组件从最高位开始到向下工作的第一个置位的位置。 |
5 |
|
返回每个组件从最低位开始并向上工作的第一个置位位置。 |
5 |
|
返回小于或等于x的最大整数。 |
1¹ |
|
返回a * b + c的双精度融合乘法加法。 |
5 |
|
返回x / y的浮点余数。 |
1¹ |
|
返回x的小数部分。 |
1¹ |
|
返回x的尾数和指数。 |
2¹ |
|
返回abs(ddx(x))+ abs(ddy(x)) |
2¹ |
|
返回渲染目标样本的数量。 |
4 |
|
返回给定样本索引的样本位置(x,y)。 |
4 |
|
阻止执行组中所有线程,直到完成所有组共享访问。 |
5 |
|
阻止执行组中的所有线程,直到完成所有组共享访问并且组中的所有线程都到达此调用为止。 |
5 |
|
对dest资源变量执行保证的原子加值。 |
5 |
|
执行保证的原子和。 |
5 |
|
以原子方式将输入与比较值进行比较并交换结果。 |
5 |
|
以原子方式将输入与比较值进行比较。 |
5 |
|
将值分配给dest并返回原始值。 |
5 |
|
执行保证的原子最大值。 |
5 |
|
执行保证的原子最小值。 |
5 |
|
执行保证的原子或。 |
5 |
|
执行保证的原子异或。 |
5 |
|
如果x是有限的,则返回true,否则返回false。 |
1¹ |
|
如果x为+ INF或-INF,则返回true,否则返回false。 |
1¹ |
|
如果x为NAN或QNAN,则返回true,否则返回false。 |
1¹ |
|
返回x * 2exp |
1¹ |
|
返回向量v的长度。 |
1¹ |
|
返回x + s(y-x)。 |
1¹ |
|
返回光照向量(环境,漫反射,镜面反射,1) |
1¹ |
|
返回x的以e为底的对数。 |
1¹ |
|
返回x的以10为底的对数。 |
1¹ |
|
返回x的以2为底的对数。 |
1¹ |
|
对三个值执行算术乘法/加法运算。 |
5 |
|
选择x和y中的较大者。 |
1¹ |
|
选择x和y中的较小者。 |
1¹ |
|
将值x分为小数和整数部分。 |
1¹ |
|
比较4字节参考值和8字节源值,并累加4个和的向量。 |
5 |
|
使用x和y执行矩阵乘法。 |
1个 |
|
使用Perlin噪声算法生成随机值。 |
1¹ |
|
返回归一化向量。 |
1¹ |
|
返回x y。 |
1¹ |
|
将自定义着色器消息提交到信息队列。 |
4 |
|
生成四边形补丁的校正的镶嵌细分因子。 |
5 |
|
生成四边形补丁的校正的镶嵌细分因子。 |
5 |
|
生成四边形补丁的校正的镶嵌细分因子。 |
5 |
|
生成等值线的舍入细分化因子。 |
5 |
|
生成四边形补丁的校正的镶嵌细分因子。 |
5 |
|
生成四边形补丁的校正的镶嵌细分因子。 |
5 |
|
生成四边形补丁的校正的镶嵌细分因子。 |
5 |
|
生成三面体的校正镶嵌细分因子。 |
5 |
|
生成三面体的校正镶嵌细分因子。 |
5 |
|
生成三面体的校正镶嵌细分因子。 |
5 |
|
将x从度转换为弧度。 |
1个 |
|
计算每个组件的近似快速倒数。 |
5 |
|
返回反射向量。 |
1个 |
|
返回折射向量。 |
1¹ |
|
反转每个组件的位顺序。 |
5 |
|
将x舍入到最接近的整数 |
1¹ |
|
返回1 / sqrt(x) |
1¹ |
|
将x钳位到[0,1]范围 |
1个 |
|
计算x的符号。 |
1¹ |
|
返回x的正弦 |
1¹ |
|
返回x的正弦和余弦。 |
1¹ |
|
返回x的双曲正弦值 |
1¹ |
|
返回介于0和1之间的平滑Hermite插值。 |
1¹ |
|
平方根(每个分量) |
1¹ |
|
返回(x> = a)?1:0 |
1¹ |
|
返回x的切线 |
1¹ |
|
返回x的双曲正切 |
1¹ |
|
一维纹理查找。 |
1个 |
|
一维纹理查找。 |
2¹ |
|
具有偏差的一维纹理查找。 |
2¹ |
|
具有渐变的1D纹理查找。 |
2¹ |
|
使用LOD进行1D纹理查找。 |
3¹ |
|
一维纹理查找与投影分隔。 |
2¹ |
|
2D纹理查找。 |
1¹ |
|
2D纹理查找。 |
2¹ |
|
具有偏差的2D纹理查找。 |
2¹ |
|
具有渐变的2D纹理查找。 |
2¹ |
|
具有LOD的2D纹理查找。 |
3 |
|
具有投影鸿沟的2D纹理查找。 |
2¹ |
|
3D纹理查找。 |
1¹ |
|
3D纹理查找。 |
2¹ |
|
3D与偏差的纹理查找。 |
2¹ |
|
3D与梯度的纹理查找。 |
2¹ |
|
3D与LOD的纹理查找。 |
3¹ |
|
3D与射影鸿沟的纹理查找。 |
2¹ |
|
多维数据集纹理查找。 |
1¹ |
|
多维数据集纹理查找。 |
2¹ |
|
多维数据集具有偏差的纹理查找。 |
2¹ |
|
多维数据集与渐变的纹理查找。 |
2¹ |
|
与LOD的多维数据集纹理查找。 |
3¹ |
|
多维数据集纹理查找与射影鸿沟。 |
2¹ |
|
返回矩阵m的转置。 |
1个 |
|
将浮点值截断为整数值 |
1个 |
¹有关限制,请参见参考页。
组件和模板类型
HLSL内在函数声明将组件类型和模板类型用于输入参数自变量和返回值。下表列出了可用的类型。
表2 |
||
这些模板类型 |
描述 |
支持这些数据类型 |
matrix |
多达16个组件,具体取决于声明 |
|
object |
采样对象 |
采样器,sampler1D,sampler2D,sampler3D,samplerCUBE |
scalar |
1个组成部分 |
|
vector |
最少1个组件,最多4个组件(含) |