内部函数
下表列出了 HLSL 中可用的内部函数。 每个函数都有简短说明,以及指向引用页的链接,其中包含有关输入参数和返回类型的更多详细信息。
名称 | 说明 | 最小着色器模型 |
---|---|---|
中止 | 终止正在执行的当前绘图或调度调用。 | 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 | 确定是否在平铺资源中访问了示例或加载操作中的所有值都访问了映射磁贴。 | 5 |
钳 | 将 x 固定到范围 [min, max]。 | 1Μ |
剪辑 | 如果 x 的任何组件小于零,则放弃当前像素。 | 1Μ |
因为 | 返回 x 的余弦值。 | 1Μ |
cosh | 返回 x 的双曲余弦值。 | 1Μ |
countbits | 计算输入整数中每个组件) (位数。 | 5 |
cross | 返回两个三维向量的交叉乘积。 | 1Μ |
D3DCOLORtoUBYTE4 | 重排和缩放 4D 向量 xto 的组件可补偿某些硬件中缺少 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 |
度 | 将 x 从弧度转换为度。 | 1Μ |
行列 式 | 返回平方矩阵 m 的确定性。 | 1Μ |
DeviceMemoryBarrier | 阻止执行组中的所有线程,直到所有设备内存访问都已完成。 | 5 |
DeviceMemoryBarrierWithGroupSync | 阻止执行组中的所有线程,直到完成所有设备内存访问,并且该组中的所有线程都已达到此调用。 | 5 |
distance | 返回两个点之间的距离。 | 1Μ |
点 | 返回两个向量的点积。 | 1 |
Dst | 计算距离向量。 | 5 |
errorf | 将错误消息提交到信息队列。 | 4 |
EvaluateAttributeCentroid | 以像素质心计算。 | 5 |
EvaluateAttributeAtSample | 在已编制索引的示例位置求值。 | 5 |
EvaluateAttributeSnapped | 以带偏移量的像素质心求值。 | 5 |
exp | 返回 base-e 指数。 | 1Μ |
exp2 | 每个组件的基数 2 指数 () 。 | 1Μ |
f16tof32 | 将存储在 uint 低半部分的 float16 转换为浮点。 | 5 |
f32tof16 | 将输入转换为 float16 类型。 | 5 |
faceforward | 返回 -n * 符号 (点 (i, ng) ) 。 | 1Μ |
firstbithigh | 获取从最高顺序位开始的第一个集位的位置,并按组件向下工作。 | 5 |
firstbitlow | 返回从最低顺序位开始的第一个集位的位置,并按组件向上工作。 | 5 |
地板 | 返回小于或等于 x 的最大整数。 | 1Μ |
fma | 返回 * b + c 的双精度融合加法。 | 5 |
fmod | 返回 x/y 的浮点余数。 | 1Μ |
压裂 | 返回 x 的小数部分。 | 1Μ |
frexp | 返回 x 的 mantissa 和指数。 | 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Μ |
长度 | 返回向量 v 的长度。 | 1Μ |
lerp | 返回 x + s (y - x) 。 | 1Μ |
点燃 | 返回照明矢量 (环境、漫射、反射、1) | 1Μ |
日志 | 返回 x 的 base-e 对数。 | 1Μ |
log10 | 返回 x 的 base-10 对数。 | 1Μ |
log2 | 返回 x 的 base-2 对数。 | 1Μ |
疯狂 | 对三个值执行算术乘法/加运算。 | 5 |
max | 选择 x 和 y 的更大项。 | 1Μ |
分钟 | 选择 x 和 y 的较小值。 | 1Μ |
modf | 将值 x 拆分为小数部分和整数部分。 | 1Μ |
msad4 | 比较 4 字节引用值和 8 字节源值,并累积 4 个总和的向量。 | 5 |
mul | 使用 x 和 y 执行矩阵乘法。 | 1 |
噪声 | 使用 Perlin-noise 算法生成随机值。 | 1Μ |
规范化 | 返回规范化向量。 | 1Μ |
战俘 | 返回 xy。 | 1Μ |
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 纹理查找。 | 2¹ |
tex1Dbias | 带偏差的 1D 纹理查找。 | 2¹ |
tex1Dgrad | 具有渐变的 1D 纹理查找。 | 2¹ |
tex1Dlod | 具有 LOD 的 1D 纹理查找。 | 3Μ |
tex1Dproj | 带投影除法的 1D 纹理查找。 | 2¹ |
tex2D (s、t) | 2D 纹理查找。 | 1 次 |
tex2D (s、t、ddx、ddy) | 2D 纹理查找。 | 2¹ |
tex2Dbias | 带偏差的 2D 纹理查找。 | 2¹ |
tex2Dgrad | 具有渐变的 2D 纹理查找。 | 2¹ |
tex2Dlod | 具有 LOD 的 2D 纹理查找。 | 3 |
tex2Dproj | 带投影除法的二维纹理查找。 | 2¹ |
tex3D (s、t) | 三维纹理查找。 | 1 次 |
tex3D (s、t、ddx、ddy) | 三维纹理查找。 | 2¹ |
tex3Dbias | 具有偏差的 3D 纹理查找。 | 2¹ |
tex3Dgrad | 具有渐变的 3D 纹理查找。 | 2Μ |
tex3Dlod | 使用 LOD 进行 3D 纹理查找。 | 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 | 截断浮点值 () 整数值 (s) | 1 |
Μ 请参阅参考页了解限制。
组件和模板类型
HLSL 内部函数声明使用组件类型和模板类型作为输入参数参数和返回值。 下表列出了可用的类型。
这些模板类型 | 说明 | 支持这些数据类型 |
---|---|---|
矩形图 | 最多 16 个组件,具体取决于声明 | 基本 HLSL 类型 |
object | sampler 对象 | sampler、 sampler1D、 sampler2D、 sampler3D、 samplerCUBE |
标量 (scalar) | 1 个组件 | 基本 HLSL 类型 |
向量 | 最小 1 个组件,最多 4 个组件 ((含) ) | 基本 HLSL 类型 |
请参阅