内部函数
下表列出了 HLSL 中可用的内部函数。 每个函数都有一个简短的描述,以及一个指向参考页面的链接,其中包含有关输入参数和返回类型的更多详细信息。
名称 | 描述 | 最小着色器模型 |
---|---|---|
abort | 终止当前正在执行的绘制或调度调用。 | 4 |
abs | 绝对值(每个分量)。 | 1¹ |
acos | 返回 x 的每个分量的反余弦值。 | 1¹ |
全部 | 测试 x 的所有分量是否均非零。 | 1¹ |
AllMemoryBarrier | 阻止组中所有线程的执行,直到完成所有内存访问。 | 5 |
AllMemoryBarrierWithGroupSync | 阻止组中所有线程的执行,直到完成所有内存访问,并且组中的所有线程都已到达此调用。 | 5 |
任意 | 测试 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 | 确定来自 Sample 或 Load 操作的所有值是否访问图块化资源中的映射图块。 | 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 |
EvaluateAttributeCentroid | 在像素质心位置求值。 | 5 |
EvaluateAttributeAtSample | 在索引示例位置求值。 | 5 |
EvaluateAttributeSnapped | 在具有偏移的像素质心位置求值。 | 5 |
exp | 返回以 e 为底的指数。 | 1¹ |
exp2 | exp2 以 2 为底的指数(每个分量)。 | 1¹ |
f16tof32 | 将存储在 uint 下半部分的 float16 转换为浮点数。 | 5 |
f32tof16 | 将输入转换为 float16 类型。 | 5 |
faceforward | 返回 -n * sign(dot(i, ng))。 | 1¹ |
firstbithigh | 获取每个分量第一个设置位的位置,从最高位开始向下计算。 | 5 |
firstbitlow | 返回每个分量第一个设置位的位置,从最低位开始向上计算。 | 5 |
floor | 返回小于或等于 x 的最大整数。 | 1¹ |
fma | 返回 a * b + c 的双精度融合乘加。 | 5 |
fmod | 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 | 执行有保证的原子 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¹ |
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-noise 算法生成随机值。 | 1¹ |
规范化 | 返回规范化向量。 | 1¹ |
pow | 返回 xy。 | 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) | 1D 纹理查找。 | 1 |
tex1D(s, t, ddx, ddy) | 1D 纹理查找。 | 2¹ |
tex1Dbias | 使用 bias 进行的 1D 纹理查找。 | 2¹ |
tex1Dgrad | 使用 gradient 进行的 1D 纹理查找。 | 2¹ |
tex1Dlod | 使用 LOD 进行的 1D 纹理查找。 | 3¹ |
tex1Dproj | 使用透视分离进行的 1D 纹理查找。 | 2¹ |
tex2D(s, t) | 2D 纹理查找。 | 1¹ |
tex2D(s, t, ddx, ddy) | 2D 纹理查找。 | 2¹ |
tex2Dbias | 使用 bias 进行的 2D 纹理查找。 | 2¹ |
tex2Dgrad | 使用 gradient 进行的 2D 纹理查找。 | 2¹ |
tex2Dlod | 使用 LOD 进行的 2D 纹理查找。 | 3 |
tex2Dproj | 使用透视分离进行的 2D 纹理查找。 | 2¹ |
tex3D(s, t) | 3D 纹理查找。 | 1¹ |
tex3D(s, t, ddx, ddy) | 3D 纹理查找。 | 2¹ |
tex3Dbias | 使用 bias 进行的 3D 纹理查找。 | 2¹ |
tex3Dgrad | 使用 gradient 进行的 3D 纹理查找。 | 2¹ |
tex3Dlod | 使用 LOD 进行的 3D 纹理查找。 | 3¹ |
tex3Dproj | 使用透视分离进行的 3D 纹理查找。 | 2¹ |
texCUBE(s, t) | 多维数据集纹理查找。 | 1¹ |
texCUBE(s, t, ddx, ddy) | 多维数据集纹理查找。 | 2¹ |
texCUBEbias | 使用 bias 进行的多维数据集纹理查找。 | 2¹ |
texCUBEgrad | 使用 gradient 进行的多维数据集纹理查找。 | 2¹ |
texCUBElod | 使用 LOD 进行多维数据集纹理查找。 | 3¹ |
texCUBEproj | 使用透视分离进行的多维数据集纹理查找。 | 2¹ |
transpose | 返回矩阵 m 的转置。 | 1 |
trunc | 将浮点值截断为整数值 | 1 |
¹ 请参阅有关限制的参考页。
分量和模板类型
HLSL 内部函数声明使用分量类型和模板类型作为输入参数参数和返回值。 下表列出了可用的类型。
这些模板类型 | 说明 | 支持这些数据类型 |
---|---|---|
矩形图 | 最多 16 个分量,具体取决于声明 | Basic HLSL Types |
object | sampler 对象 | sampler、sampler1D、sampler2D、sampler3D、samplerCUBE |
标量 (scalar) | 1 个分量 | Basic HLSL Types |
向量 | 最少 1 个分量,最多 4 个分量(含) | Basic HLSL Types |
另请参阅