内在函数

 

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

表1

名称

描述

最小着色器模型

abort

终止当前正在执行的绘制或调度调用。

4

abs

绝对值(每个组件)。

acos

返回x每个分量的反余弦值。

all

测试x的所有分量是否非零。

AllMemoryBarrier

阻止执行组中所有线程,直到完成所有内存访问为止。

5

AllMemoryBarrierWithGroupSync

阻止执行组中的所有线程,直到完成所有内存访问并且组中的所有线程都到达此调用为止。

5

any

测试x的任何分量是否为非零。

asdouble

将转换值重新解释为双精度型。

5

asfloat

将输入类型转换为浮点型。

4

asin

返回x的每个分量的反正弦值。

asint

将输入类型转换为整数。

4

asuint

将64位类型的位模式重新解释为uint。

5

asuint

将输入类型转换为无符号整数。

4

atan

返回x的反正切。

atan2

返回两个值(x,y)的反正切。

ceil

返回大于或等于x的最小整数。

CheckAccessFullyMapped

确定“ 采样”或“ 加载”操作中的所有值是否访问切片资源中的映射切片。

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

EvaluateAttributeAtCentroid

评估像素质心。

5

EvaluateAttributeAtSample

在索引的样本位置进行评估。

5

EvaluateAttributeSnapped

用偏移量评估像素质心。

5

exp

返回base-e指数。

exp2

以2为底的指数(每个分量)。

f16tof32

将存储在uint的下半部分中的float16转换为float。

5

f32tof16

将输入转换为float16类型。

5

faceforward

返回-n *符号(dot(i,ng))。

firstbithigh

获取每个组件从最高位开始到向下工作的第一个置位的位置。

5

firstbitlow

返回每个组件从最低位开始并向上工作的第一个置位位置。

5

floor

返回小于或等于x的最大整数。

fma

返回a * b + c的双精度融合乘法加法。

5

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

执行保证的原子异或。

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噪声算法生成随机值。

normalize

返回归一化向量。

pow

返回x y。

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)

一维纹理查找。

1个

tex1D(s, t, ddx, ddy)

一维纹理查找。

tex1Dbias

具有偏差的一维纹理查找。

tex1Dgrad

具有渐变的1D纹理查找。

tex1Dlod

使用LOD进行1D纹理查找。

tex1Dproj

一维纹理查找与投影分隔。

tex2D(s, t)

2D纹理查找。

tex2D(s, t, ddx, ddy)

2D纹理查找。

tex2Dbias

具有偏差的2D纹理查找。

tex2Dgrad

具有渐变的2D纹理查找。

tex2Dlod

具有LOD的2D纹理查找。

3

tex2Dproj

具有投影鸿沟的2D纹理查找。

tex3D(s, t)

3D纹理查找。

tex3D(s, t, ddx, ddy)

3D纹理查找。

tex3Dbias

3D与偏差的纹理查找。

tex3Dgrad

3D与梯度的纹理查找。

tex3Dlod

3D与LOD的纹理查找。

tex3Dproj

3D与射影鸿沟的纹理查找。

texCUBE(s, t)

多维数据集纹理查找。

texCUBE(s, t, ddx, ddy)

多维数据集纹理查找。

texCUBEbias

多维数据集具有偏差的纹理查找。

 

texCUBEgrad

多维数据集与渐变的纹理查找。

texCUBElod

与LOD的多维数据集纹理查找。

texCUBEproj

多维数据集纹理查找与射影鸿沟。

transpose

返回矩阵m的转置。

1个

trunc

将浮点值截断为整数值

1个

 

组件和模板类型

HLSL内在函数声明将组件类型和模板类型用于输入参数自变量和返回值。下表列出了可用的类型。

表2

这些模板类型

描述

支持这些数据类型

matrix

多达16个组件,具体取决于声明

HLSL基本类型

object

采样对象

采样器,sampler1D,sampler2D,sampler3D,samplerCUBE

scalar

1个组成部分

HLSL基本类型

vector

最少1个组件,最多4个组件(含)