内部函数

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

名称 说明 最小着色器模型
中止 终止正在执行的当前绘图或调度调用。 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 确定是否在平铺资源中访问了示例加载操作中的所有值都访问了映射磁贴。 5
将 x 固定到范围 [min, max]。
剪辑 如果 x 的任何组件小于零,则放弃当前像素。
因为 返回 x 的余弦值。
cosh 返回 x 的双曲余弦值。
countbits 计算输入整数中每个组件) (位数。 5
cross 返回两个三维向量的交叉乘积。
D3DCOLORtoUBYTE4 重排和缩放 4D 向量 xto 的组件可补偿某些硬件中缺少 UBYTE4 支持。
ddx 返回 x 相对于屏幕空间 x 坐标的部分派生。
ddx_coarse 计算与屏幕空间 x 坐标相关的低精度部分派生。 5
ddx_fine 计算与屏幕空间 x 坐标相关的高精度分部派生。 5
ddy 返回 x 相对于屏幕空间 y 坐标的部分派生。
ddy_coarse 计算与屏幕空间 y 坐标相关的低精度部分派生。 5
ddy_fine 计算与屏幕空间 y 坐标相关的高精度分部派生。 5
将 x 从弧度转换为度。
行列 式 返回平方矩阵 m 的确定性。
DeviceMemoryBarrier 阻止执行组中的所有线程,直到所有设备内存访问都已完成。 5
DeviceMemoryBarrierWithGroupSync 阻止执行组中的所有线程,直到完成所有设备内存访问,并且该组中的所有线程都已达到此调用。 5
distance 返回两个点之间的距离。
返回两个向量的点积。 1
Dst 计算距离向量。 5
errorf 将错误消息提交到信息队列。 4
EvaluateAttributeCentroid 以像素质心计算。 5
EvaluateAttributeAtSample 在已编制索引的示例位置求值。 5
EvaluateAttributeSnapped 以带偏移量的像素质心求值。 5
exp 返回 base-e 指数。
exp2 每个组件的基数 2 指数 () 。
f16tof32 将存储在 uint 低半部分的 float16 转换为浮点。 5
f32tof16 将输入转换为 float16 类型。 5
faceforward 返回 -n * 符号 (点 (i, ng) ) 。
firstbithigh 获取从最高顺序位开始的第一个集位的位置,并按组件向下工作。 5
firstbitlow 返回从最低顺序位开始的第一个集位的位置,并按组件向上工作。 5
地板 返回小于或等于 x 的最大整数。
fma 返回 * b + c 的双精度融合加法。 5
fmod 返回 x/y 的浮点余数。
压裂 返回 x 的小数部分。
frexp 返回 x 的 mantissa 和指数。
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
长度 返回向量 v 的长度。
lerp 返回 x + s (y - x) 。
点燃 返回照明矢量 (环境、漫射、反射、1)
日志 返回 x 的 base-e 对数。
log10 返回 x 的 base-10 对数。
log2 返回 x 的 base-2 对数。
疯狂 对三个值执行算术乘法/加运算。 5
max 选择 x 和 y 的更大项。
分钟 选择 x 和 y 的较小值。
modf 将值 x 拆分为小数部分和整数部分。
msad4 比较 4 字节引用值和 8 字节源值,并累积 4 个总和的向量。 5
mul 使用 x 和 y 执行矩阵乘法。 1
噪声 使用 Perlin-noise 算法生成随机值。
规范化 返回规范化向量。
战俘 返回 xy
printf 将自定义着色器消息提交到信息队列。 4
Process2DQuadTessFactorsAvg 为象限补丁生成更正的细化因子。 5
Process2DQuadTessFactorsMax 为象限补丁生成更正的细化因子。 5
Process2DQuadTessFactorsMin 为象限补丁生成更正的细化因子。 5
ProcessIsolineTessFactors 为 isoline 生成舍入细化因子。 5
ProcessQuadTessFactorsAvg 为象限补丁生成更正的细化因子。 5
ProcessQuadTessFactorsMax 为象限补丁生成更正的细化因子。 5
ProcessQuadTessFactorsMin 为象限补丁生成更正的细化因子。 5
ProcessTriTessFactorsAvg 为三个修补程序生成更正的细化因子。 5
ProcessTriTessFactorsMax 为三个修补程序生成更正的细化因子。 5
ProcessTriTessFactorsMin 为三个修补程序生成更正的细化因子。 5
弧度 将 x 从度转换为弧度。 1
rcp 计算一个快速、近似、每分量对等。 5
reflect 返回反射向量。 1
折射 返回折射向量。 1 次
reversebits 按组件反转位的顺序。 5
将 x 舍入为最接近的整数 1 次
rsqrt 返回 1 / sqrt (x) 1 次
饱和 将 x 固定到范围 [0, 1] 1
标志 计算 x 的符号。 1 次
返回 x 的正弦值 1 次
sincos 返回 x 的正弦和余弦值。 1 次
sinh 返回 x 的双曲正弦值 1 次
smoothstep 返回介于 0 和 1 之间的平滑 Hermite 内插。 1 次
sqrt 每个组件的平方根 () 1 次
返回 (x >=) ? 1 : 0 1 次
返回 x 的正切值 1 次
tanh 返回 x 的双曲正切值 1 次
tex1D (s、t) 1D 纹理查找。 1
tex1D (s、t、ddx、ddy) 1D 纹理查找。
tex1Dbias 带偏差的 1D 纹理查找。
tex1Dgrad 具有渐变的 1D 纹理查找。
tex1Dlod 具有 LOD 的 1D 纹理查找。
tex1Dproj 带投影除法的 1D 纹理查找。
tex2D (s、t) 2D 纹理查找。 1 次
tex2D (s、t、ddx、ddy) 2D 纹理查找。
tex2Dbias 带偏差的 2D 纹理查找。
tex2Dgrad 具有渐变的 2D 纹理查找。
tex2Dlod 具有 LOD 的 2D 纹理查找。 3
tex2Dproj 带投影除法的二维纹理查找。
tex3D (s、t) 三维纹理查找。 1 次
tex3D (s、t、ddx、ddy) 三维纹理查找。
tex3Dbias 具有偏差的 3D 纹理查找。
tex3Dgrad 具有渐变的 3D 纹理查找。
tex3Dlod 使用 LOD 进行 3D 纹理查找。
tex3Dproj 具有投影除法的 3D 纹理查找。
texCUBE (s、 t) 多维数据集纹理查找。
texCUBE (s、t、ddx、ddy) 多维数据集纹理查找。
texCUBEbias 带偏差的多维数据集纹理查找。
texCUBEgrad 具有渐变的多维数据集纹理查找。
texCUBElod 使用 LOD 进行多维数据集纹理查找。
texCUBEproj 具有投影除法的多维数据集纹理查找。
transpose 返回矩阵 m 的转置。 1
trunc 截断浮点值 () 整数值 (s) 1

 

Μ 请参阅参考页了解限制。

组件和模板类型

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

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

 

请参阅

HLSL 参考