以下内容为根据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的所有元素从浮点值截断到整数值。 |

本文详细介绍了DirectX 9.0c SDK中的数学函数,包括颜色计算、矩阵计算、向量计算、四元数计算、平面计算以及其他计算。同时,文章还列举了HLSL固有函数,涵盖了向量、矩阵操作,以及各种数学运算。
1129

被折叠的 条评论
为什么被折叠?



