内部函数

下表列出了 HLSL 中可用的内部函数。 每个函数都有一个简短的描述,以及一个指向参考页面的链接,其中包含有关输入参数和返回类型的更多详细信息。

名称 描述 最小着色器模型
abort 终止当前正在执行的绘制或调度调用。 4
abs 绝对值(每个分量)。
acos 返回 x 的每个分量的反余弦值。
全部 测试 x 的所有分量是否均非零。
AllMemoryBarrier 阻止组中所有线程的执行,直到完成所有内存访问。 5
AllMemoryBarrierWithGroupSync 阻止组中所有线程的执行,直到完成所有内存访问,并且组中的所有线程都已到达此调用。 5
任意 测试 x 的任何分量是否非零。
asdouble 将强制转换值重新解释为双精度值。 5
asfloat 将输入类型转换为浮点数。 4
asin 返回 x 的每个分量的反正弦值。
asint 将输入类型转换为整数。 4
asuint 将 64 位类型的位模式重新解释为 uint。 5
asuint 将输入类型转换为无符号整数。 4
atan 返回 x 的反正切值。
atan2 返回两个值 (x,y) 的反正切值。
ceil 返回大于或等于 x 的最小整数。
CheckAccessFullyMapped 确定来自 SampleLoad 操作的所有值是否访问图块化资源中的映射图块。 5
clamp 将 x 固定到范围 [min, max]。
clip 如果 x 的任何分量小于零,则丢弃当前像素。
cos 返回 x 的余弦值。
cosh 返回 x 的双曲余弦值。
countbits 计算输入整数中的位数(每个分量)。 5
cross 返回两个 3D 向量的叉积。
D3DCOLORtoUBYTE4 调整和缩放 4D 向量 x 的分量,以补偿某些硬件中缺乏 UBYTE4 支持。
ddx 返回 x 相对于屏幕空间 x 坐标的偏导数。
ddx_coarse 计算相对于屏幕空间 x 坐标的低精度偏导数。 5
ddx_fine 计算相对于屏幕空间 x 坐标的高精度偏导数。 5
ddy 返回 x 相对于屏幕空间 y 坐标的偏导数。
ddy_coarse 计算相对于屏幕空间 y 坐标的低精度偏导数。 5
ddy_fine 计算相对于屏幕空间 y 坐标的高精度偏导数。 5
degrees 将 x 从弧度转换为角度。
determinant 返回方阵 m 的行列式。
DeviceMemoryBarrier 阻止组中所有线程的执行,直到完成所有设备内存访问。 5
DeviceMemoryBarrierWithGroupSync 阻止组中所有线程的执行,直到完成所有设备内存访问,并且组中的所有线程都到达此调用。 5
distance 返回两个点之间的距离。
dot 返回两个向量的点积。 1
dst 计算距离向量。 5
errorf 向信息队列提交错误消息。 4
EvaluateAttributeCentroid 在像素质心位置求值。 5
EvaluateAttributeAtSample 在索引示例位置求值。 5
EvaluateAttributeSnapped 在具有偏移的像素质心位置求值。 5
exp 返回以 e 为底的指数。
exp2 exp2 以 2 为底的指数(每个分量)。
f16tof32 将存储在 uint 下半部分的 float16 转换为浮点数。 5
f32tof16 将输入转换为 float16 类型。 5
faceforward 返回 -n * sign(dot(i, ng))。
firstbithigh 获取每个分量第一个设置位的位置,从最高位开始向下计算。 5
firstbitlow 返回每个分量第一个设置位的位置,从最低位开始向上计算。 5
floor 返回小于或等于 x 的最大整数。
fma 返回 a * b + c 的双精度融合乘加。 5
fmod fmod 返回 x/y 的浮点余数。
frac 返回 x 的小数部分。
frexp 返回 x 的尾数和指数。
fwidth 返回 abs(ddx(x)) + abs(ddy(x))
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。
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 对三个值执行算术乘法/加法运算。 5
max 选择 x 和 y 中的较大者。
min 选择 x 和 y 中的较小者。
modf 将值 x 拆分为小数部分和整数部分。
msad4 比较 4 字节的引用值和 8 字节的源值并累加 4 个和的向量。 5
mul 使用 x 和 y 执行矩阵乘法。 1
noise 使用 Perlin-noise 算法生成随机值。
规范化 返回规范化向量。
pow 返回 xy
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 返回折射向量。
reversebits 反转每个分量的位顺序。 5
round 将 x 四舍五入到最接近的整数
rsqrt 返回 1 / sqrt(x)
saturate 将 x 固定到范围 [0, 1] 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) 1D 纹理查找。 1
tex1D(s, t, ddx, ddy) 1D 纹理查找。
tex1Dbias 使用 bias 进行的 1D 纹理查找。
tex1Dgrad 使用 gradient 进行的 1D 纹理查找。
tex1Dlod 使用 LOD 进行的 1D 纹理查找。
tex1Dproj 使用透视分离进行的 1D 纹理查找。
tex2D(s, t) 2D 纹理查找。
tex2D(s, t, ddx, ddy) 2D 纹理查找。
tex2Dbias 使用 bias 进行的 2D 纹理查找。
tex2Dgrad 使用 gradient 进行的 2D 纹理查找。
tex2Dlod 使用 LOD 进行的 2D 纹理查找。 3
tex2Dproj 使用透视分离进行的 2D 纹理查找。
tex3D(s, t) 3D 纹理查找。
tex3D(s, t, ddx, ddy) 3D 纹理查找。
tex3Dbias 使用 bias 进行的 3D 纹理查找。
tex3Dgrad 使用 gradient 进行的 3D 纹理查找。
tex3Dlod 使用 LOD 进行的 3D 纹理查找。
tex3Dproj 使用透视分离进行的 3D 纹理查找。
texCUBE(s, t) 多维数据集纹理查找。
texCUBE(s, t, ddx, ddy) 多维数据集纹理查找。
texCUBEbias 使用 bias 进行的多维数据集纹理查找。
texCUBEgrad 使用 gradient 进行的多维数据集纹理查找。
texCUBElod 使用 LOD 进行多维数据集纹理查找。
texCUBEproj 使用透视分离进行的多维数据集纹理查找。
transpose 返回矩阵 m 的转置。 1
trunc 将浮点值截断为整数值 1

 

¹ 请参阅有关限制的参考页。

分量和模板类型

HLSL 内部函数声明使用分量类型和模板类型作为输入参数参数和返回值。 下表列出了可用的类型。

这些模板类型 说明 支持这些数据类型
矩形图 最多 16 个分量,具体取决于声明 Basic HLSL Types
object sampler 对象 samplersampler1Dsampler2Dsampler3DsamplerCUBE
标量 (scalar) 1 个分量 Basic HLSL Types
向量 最少 1 个分量,最多 4 个分量(含) Basic HLSL Types

 

另请参阅

HLSL 参考