以下内容为根据DXSDK翻译,本人原创,转载需注明。
因为网上一篇很早的内容不全,故根据官方SDK自己翻译了一份全的。
Directx9.0c D3DX数学函数
颜色计算(D3DXCOLOR) | 描述 |
D3DXColorAdd | 加法计算颜色 |
D3DXColorAdjustContrast | 调整颜色对比度 |
D3DXColorAdjustSaturation | 调整颜色饱和度 |
D3DXColorLerp | 颜色Lerp,计算两颜色之间的颜色 |
D3DXColorModulate | 乘法计算颜色 |
D3DXColorNegative | 求指定色的冷色值 |
D3DXColorScale | 按比例放大或者缩小颜色 |
D3DXColorSubtract | 减法计算颜色 |
矩阵计算(D3DXMATRIX) | 描述 |
D3DXCreateMatrixStack | ID3DXMATRIXStack 创建接口(矩阵的栈) |
D3DXFloat16To32Array | D3DX16位浮点转换位32位浮点数 |
D3DXFloat32To16Array | 32位浮点数转换为D3DX16位浮点数 |
D3DXMatrixAffineTransformation | 创建仿射变换矩阵 |
D3DXMatrixAffineTransformation2D | 在平面创建仿射变换矩阵 |
D3DXMatrixDecompose | 将矩阵分解为缩放,旋转和平移量 (分别为3d坐标,四元数,3d坐标) |
D3DXMatrixDeterminant | 计算矩阵行列式值 |
D3DXMatrixIdentity | 创建单位矩阵 |
D3DXMatrixInverse | 计算逆矩阵 |
D3DXMatrixIsIdentity | 判断单位矩阵 |
D3DXMatrixLookAtLH | 创建左手系观察矩阵 |
D3DXMatrixLookAtRH | 创建右手系观察矩阵 |
D3DXMatrixMultiply | 两个矩阵相乘 |
D3DXMatrixMultiplyTranspose | 矩阵乘积的转置 |
D3DXMatrixOrthoLH | 创建左手正交投影矩阵 |
D3DXMatrixOrthoOffCenterLH | 创建用户定制的左手正交投影矩阵 |
D3DXMatrixOrthoOffCenterRH | 创建用户定制的右手正交投影矩阵 |
D3DXMatrixOrthoRH | 创建右手正交投影矩阵 |
D3DXMatrixPerspectiveFovLH | 创建基于视野的左手投影坐标系 |
D3DXMatrixPerspectiveFovRH | 创建基于视野的右手投影坐标系 |
D3DXMatrixPerspectiveLH | 创建左手投影坐标系 |
D3DXMatrixPerspectiveOffCenterLH | 创建用户定制的基于视野的左手正交投影矩阵 |
D3DXMatrixPerspectiveOffCenterRH | 创建用户定制的基于视野的左手正交投影矩阵 |
D3DXMatrixPerspectiveRH | 创建右手投影坐标系 |
D3DXMatrixReflect | 从平面方程创建一个平面反射矩阵 |
D3DXMatrixRotationAxis | 创建绕任意轴旋转的矩阵 |
D3DXMatrixRotationQuaternion | 创建根据四元数的旋转的矩阵 |
D3DXMatrixRotationX | 创建绕X轴旋转的矩阵 |
D3DXMatrixRotationY | 创建绕Y轴旋转的矩阵 |
D3DXMatrixRotationYawPitchRoll | 创建绕YXZ旋转的矩阵 |
D3DXMatrixRotationZ | 创建绕Z轴旋转的矩阵 |
D3DXMatrixScaling | 创建根据XYZ缩放的矩阵 |
D3DXMatrixShadow | 创建平面阴影矩阵 |
D3DXMatrixTransformation | 创建一个变换矩阵 |
D3DXMatrixTransformation2D | 创建一个平面变换矩阵 |
D3DXMatrixTranslation | 创建一个只有平移的矩阵 |
D3DXMatrixTranspose | 计算转置矩阵 |
2D向量计算 (D3DXVECTOR2) | 描述 |
D3DXVec2Add | 两个2D向量相加 |
D3DXVec2BaryCentric | 求三个2D向量的重心 |
D3DXVec2CatmullRom | 根据4个2D向量进行Catmull-Rom插值计算 |
D3DXVec2CCW | 求两个2D向量的叉乘,返回其z值 |
D3DXVec2Dot | 求两个2D向量的点乘 |
D3DXVec2Hermite | 根据4个2D向量进行Hermite插值计算 |
D3DXVec2Length | 求两个2D向量的长度 |
D3DXVec2LengthSq | 求两个2D向量的长度平方 |
D3DXVec2Lerp | 求两个2D向量的线性补间 |
D3DXVec2Maximize | 求两个2D向量各轴最大值 |
D3DXVec2Minimize | 求两个2D向量各轴最小值 |
D3DXVec2Normalize | 2D向量正规化 |
D3DXVec2Scale | 2D向量缩放 |
D3DXVec2Subtract | 两个2D向量相减 |
D3DXVec2Transform | 根据矩阵对2D向量进行变换,结果是4D向量 |
D3DXVec2TransformArray | 根据矩阵对2D向量数组进行变换,结果是4D向量 |
D3DXVec2TransformCoord | 根据矩阵对2D向量进行变换,结果是w=1的2D向量 |
D3DXVec2TransformCoordArray | 根据矩阵对2D向量数组进行变换,结果是w=1的2D向量 |
D3DXVec2TransformNormal | 根据矩阵对2D向量的法线进行变换 |
D3DXVec2TransformNormalArray | 根据矩阵对2D向量数组的法线进行变换 |
3D向量计算 (D3DXVECTOR3) | 描述 |
D3DXVec3Add | 两3D向量相加 |
D3DXVec3BaryCentric | 求三个3D向量的重心 |
D3DXVec3CatmullRom | 根据4个3D向量进行Catmull-Rom插值计算 |
D3DXVec3Cross | 求两个3D向量的叉乘 |
D3DXVec3Dot | 求两个3D向量的点乘 |
D3DXVec3Hermite | 根据4个3D向量进行Hermite插值计算 |
D3DXVec3Length | 求两个3D向量的长度 |
D3DXVec3LengthSq | 求两个3D向量的长度的平方 |
D3DXVec3Lerp | 求两个3D向量的线性补间 |
D3DXVec3Maximize | 求两个2D向量各轴最大值 |
D3DXVec3Minimize | 求两个2D向量各轴最小值 |
D3DXVec3Normalize | 3D向量正规化 |
D3DXVec3Project | 3D向量从物体空间向屏幕空间投影 |
D3DXVec3ProjectArray | 3D向量数组物体空间向屏幕空间投影 |
D3DXVec3Scale | 3D向量缩放 |
D3DXVec3Subtract | 两3D向量相减 |
D3DXVec3Transform | 根据矩阵对3D向量进行变换,结果是4D向量 |
D3DXVec3TransformArray | 根据矩阵对3D向量数组进行变换,结果是4D向量 |
D3DXVec3TransformCoord | 根据矩阵对3D向量进行变换,结果是w=1的3D向量 |
D3DXVec3TransformCoordArray | 根据矩阵对3D向量数组进行变换,结果是w=1的3D向量 |
D3DXVec3TransformNormal | 根据矩阵对3D向量的法线进行变换,结果是w=0的3D向量 |
D3DXVec3TransformNormalArray | 根据矩阵对3D向量的法线数组进行变换,结果是w=0的3D向量 |
D3DXVec3Unproject | 3D向量从屏幕空间向物体空间投影 |
D3DXVec3UnprojectArray | 3D向量数组从屏幕空间向物体空间投影 |
4D向量计算 (D3DXVECTOR4) | 描述 |
D3DXVec4Add | 两4D向量相加 |
D3DXVec4BaryCentric | 求三个4D向量的重心 |
D3DXVec4CatmullRom | 根据4个4D向量进行Catmull-Rom插值计算 |
D3DXVec4Cross | 求两个4D向量的叉乘,返回3D向量 |
D3DXVec4Dot | 求两个4D向量的点乘 |
D3DXVec4Hermite | 根据4个4D向量进行Hermite插值计算 |
D3DXVec4Length | 求两个4D向量的长度 |
D3DXVec4LengthSq | 求两个4D向量的长度 |
D3DXVec4Lerp | 求两个4D向量的线性补间 |
D3DXVec4Maximize | 求两个4D向量各轴最大值 |
D3DXVec4Minimize | 求两个4D向量各轴最大值 |
D3DXVec4Normalize | 4D向量正规化 |
D3DXVec4Scale | 4D向量缩放 |
D3DXVec4Subtract | 两3D向量相减 |
D3DXVec4Transform | 根据矩阵对4D向量进行变换 |
D3DXVec4TransformArray | 根据矩阵对4D向量数组进行变换 |
四元数计算 (D3DXQUATERNION) | 描述 |
D3DXQuaternionBaryCentric | 求四元数的重心 |
D3DXQuaternionConjugate | 求四元数的共轭 |
D3DXQuaternionDot | 求四元数的点乘 |
D3DXQuaternionExp | 求四元数的指数 |
D3DXQuaternionIdentity | 求单位四元数 |
D3DXQuaternionInverse | 四元数共轭变换后再单位化 |
D3DXQuaternionIsIdentity | 判断四元数是否是单位四元数 |
D3DXQuaternionLength | 求两个四元数的长度 |
D3DXQuaternionLengthSq | 求两个四元数的长度的平方 |
D3DXQuaternionLn | 计算自然对数 |
D3DXQuaternionMultiply | 两四元数相乘 |
D3DXQuaternionNormalize | 四元数正规化 |
D3DXQuaternionRotationAxis | 以指定轴旋转四元数 |
D3DXQuaternionRotationMatrix | 创建绕矩阵旋转的四元数 |
D3DXQuaternionRotationYawPitchRoll | 创建绕YXZ旋转的四元数 |
D3DXQuaternionSlerp | 两个四元数的球型补间 |
D3DXQuaternionSquad | 两个四元数的球型补间的二次方 |
D3DXQuaternionSquadSetup | 创建球面补间开方的控制点 |
D3DXQuaternionToAxisAngle | 向量绕自身旋转角旋转四元数 |
平面计算(D3DXPLANE) | 描述 |
D3DXPlaneDot | 求平面和4D向量的内积 |
D3DXPlaneDotCoord | 求平面和3D向量的内积,w = 1 |
D3DXPlaneDotNormal | 求平面和3D向量的内积,w = 0 |
D3DXPlaneFromPointNormal | 根据点和法线生成平面 |
D3DXPlaneFromPoints | 根据三点生成平面 |
D3DXPlaneIntersectLine | 求平面和线的交点 |
D3DXPlaneNormalize | 面的正规化 |
D3DXPlaneScale | 面的缩放 |
D3DXPlaneTransform | 根据矩阵对面进行变换 |
D3DXPlaneTransformArray | 根据矩阵对面数组进行变换 |
其他计算 | 描述 |
D3DXFresnelTerm | 计算菲涅尔系数(用于水面反射等) |
D3DXSH系 | 用于球面调和函数的计算 |
HLSL固有函数
函数名 | 格式 | 説明 |
abs | abs(x) | 计算输入值的绝对值 |
acos(x) | 返回输入值的反余弦值 | |
all(x) | 测试输入值中全部非0值 | |
any(x) | 测试输入值中任意部分的非0值 | |
asfloat(x) | 将输入值变成浮点数 | |
asin(x) | 返回输入值的反正弦值 | |
asint(x) | 将输入值变成整数值 | |
asuint(x) | 将输入值变成正整数值 | |
atan(x) | 返回输入值的反正切值 | |
atan2(y, x) | 返回两个输入值(y/x)的反正切值 | |
ceil(x) | 返回不小于输入值x的最小整数 | |
clamp(x, min, max) | 把输入值限定在[min,max]内 | |
clip(x) | 如果输入向量中的任何元素小于0,则丢弃当前像素 | |
cos(x) | 返回输入值的余弦 | |
cosh(x) | 返回输入值的双曲余弦 | |
cross(x, y) | 返回两个3D向量的叉乘 | |
D3DCOLORtoUBYTE4(x) | 将4D向量转换为UBYTE4类型 | |
ddx(x) | 返回关于屏幕坐标x轴的偏导数 | |
ddy(x) | 返回关于屏幕坐标y轴的偏导数 | |
degrees(x) | 输入弧度转换为角度 | |
determinant(m) | 返回矩阵的行列式det(M) | |
distance(x, y) | 返回两点间的距离 | |
dot(x, y) | 返回两个向量的点积 | |
exp(x) | 返回以e为底数,输入值为指数的指数函数值 | |
exp2(x) | 返回以2为底数,输入值为指数的指数函数值 | |
faceforward(n, i, ng) | 检测多边形是否位于正面 | |
floor(x) | 返回小于等于x的最大整数 | |
fmod(x, y) | 返回x/y的浮点余数 | |
frac(x) | 返回输入值的小数部分 | |
frexp(x, exp) | 返回输入值的尾数和指数 | |
fwidth(x) | 返回 abs ( ddx (x) + abs ( ddy(x)) | |
GetRenderTargetSampleCount() | 返回RenderTarget的对象数 | |
GetRenderTargetSamplePosition(x) | 返回RenderTarget的指定对象的索引位置(x,y) | |
isfinite(x) | 如果输入值为有限值则返回true,否则返回false | |
isinf(x) | 如何输入值为无限的则返回true,否则返回false | |
isnan(x) | 如果输入值为NAN或QNAN则返回true,否则返回false | |
ldexp(x, exp) | frexp的逆运算,返回 x * 2 ^ exp | |
length(v) | 返回向量的长度 | |
lerp(x, y, s) | 对输入值进行线性插值 | |
lit(n ? l, n ? h, m) | 返回光照向量(环境光,漫反射光,镜面高光,1) | |
log(x) | 返回以e为底的对数 | |
log10(x) | 返回以10为底的对数 | |
log2(x) | 返回以2为底的对数 | |
max(x, y) | 返回两个输入值中较大的一个 | |
min(x, y) | 返回两个输入值中较小的一个 | |
modf(x, out ip) | 把输入值分解为整数和小数部分 | |
mul(x, y) | 返回输入矩阵相乘的积。 | |
noise(x) | 根据柏林噪声(Perlin Noise)返回随机值 | |
normalize(x) | 向量正规化 | |
pow(x, y) | 返回x^y(x的y次方) | |
radians(x) | 输入角度转换为弧度 | |
reflect(i, n) | 返回入射光线i对表面法线n的反射光线 | |
refract(i, n, R) | 返回在入射光线i,表面法线n,折射率为R下的折射光线 | |
round(x) | 返回最接近x的整数 | |
rsqrt(x) | 返回x平方根的倒数。 1 / sqrt(x) 。 | |
saturate(x) | 把输入值截取在[0, 1]之间 | |
sign(x) | 返回输入值的符号 | |
sin(x) | 返回输入值的正弦值 | |
sincos(x, out s, out c) | 返回输入值的正弦值和余弦值。 | |
sinh(x) | 返回输入值的双曲正弦值。 | |
smoothstep(min, max, x) | 如果输入值的范围是[min, max],则返回一个介于0和1之间的Hermite插值。 | |
sqrt(x) | 返回输入值的平方根 | |
step(a, x) | 返回 (x >= a) ? 1 : 0 。 | |
tan(x) | 返回x的正切值。 | |
tanh(x) | 返回x的双曲正切值。 | |
tex1D(s, t) | 返回纹理s在t位置的颜色。1D texture lookup. | |
tex1Dbias(s, t) | 使用bias返回纹理s在t位置的颜色。1D texture lookup with bias. | |
tex1Dgrad(s, t, ddx, ddy) | 使用梯度返回纹理s在t位置的颜色。1D texture lookup with a gradient. | |
tex1Dlod(s, t) | 使用LOD返回纹理s在t位置的颜色。1D texture lookup with LOD. | |
tex1Dproj(s, t) | 使用投影返回纹理s在t位置的颜色。1D texture lookup with projective divide. | |
tex2D** | tex2D(s, t) | 2D纹理查询,具体函数同1D |
tex3D** | tex2Dbias(s, t) | 3D纹理查询,具体函数同1D |
texCUBE** | texCUBE(s, t) | 立方体纹理查询,具体函数同1D |
transpose(m) | 返回m的转置矩阵。 | |
trunc(x) | 将x的所有元素从浮点值截断到整数值。 |