D3DX数学函数与HLSL固有函数

以下内容为根据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

acos(x)

返回输入值的反余弦值

all

all(x)

测试输入值中全部非0值

any

any(x)

测试输入值中任意部分的非0值

asfloat

asfloat(x)

将输入值变成浮点数

asin

asin(x)

返回输入值的反正弦值

asint

asint(x)

将输入值变成整数值

asuint

asuint(x)

将输入值变成正整数值

atan

atan(x)

返回输入值的反正切值

atan2

atan2(y, x)

返回两个输入值(y/x)的反正切值

ceil

ceil(x)

返回不小于输入值x的最小整数

clamp

clamp(x, min, max)

把输入值限定在[min,max]内

clip

clip(x)

如果输入向量中的任何元素小于0,则丢弃当前像素

cos

cos(x)

返回输入值的余弦

cosh

cosh(x)

返回输入值的双曲余弦

cross

cross(x, y)

返回两个3D向量的叉乘

D3DCOLORtoUBYTE4

D3DCOLORtoUBYTE4(x)

将4D向量转换为UBYTE4类型

ddx

ddx(x)

返回关于屏幕坐标x轴的偏导数

ddy

ddy(x)

返回关于屏幕坐标y轴的偏导数

degrees

degrees(x)

输入弧度转换为角度

determinant

determinant(m)

返回矩阵的行列式det(M)

distance

distance(x, y)

返回两点间的距离

dot

dot(x, y)

返回两个向量的点积

exp

exp(x)

返回以e为底数,输入值为指数的指数函数值

exp2

exp2(x)

返回以2为底数,输入值为指数的指数函数值

faceforward

faceforward(n, i, ng)

检测多边形是否位于正面

floor

floor(x)

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

fmod

fmod(x, y)

返回x/y的浮点余数

frac

frac(x)

返回输入值的小数部分

frexp

frexp(x, exp)

返回输入值的尾数和指数

fwidth

fwidth(x)

返回 abs ( ddx (x) + abs ( ddy(x))

GetRenderTargetSampleCount

GetRenderTargetSampleCount()

返回RenderTarget的对象数

GetRenderTargetSamplePosition

GetRenderTargetSamplePosition(x)

返回RenderTarget的指定对象的索引位置(x,y)

isfinite

isfinite(x)

如果输入值为有限值则返回true,否则返回false

isinf

isinf(x)

如何输入值为无限的则返回true,否则返回false

isnan

isnan(x)

如果输入值为NAN或QNAN则返回true,否则返回false

ldexp

ldexp(x, exp)

frexp的逆运算,返回 x * 2 ^ exp

length

length(v)

返回向量的长度

lerp

lerp(x, y, s)

对输入值进行线性插值

lit

lit(n ? l, n ? h, m)

返回光照向量(环境光,漫反射光,镜面高光,1)

log

log(x)

返回以e为底的对数

log10

log10(x)

返回以10为底的对数

log2

log2(x)

返回以2为底的对数

max

max(x, y)

返回两个输入值中较大的一个

min

min(x, y)

返回两个输入值中较小的一个

modf

modf(x, out ip)

把输入值分解为整数和小数部分

mul

mul(x, y)

返回输入矩阵相乘的积。

noise

noise(x)

根据柏林噪声(Perlin Noise)返回随机值

normalize

normalize(x)

向量正规化

pow

pow(x, y)

返回x^y(x的y次方)

radians

radians(x)

输入角度转换为弧度

reflect

reflect(i, n)

返回入射光线i对表面法线n的反射光线

refract

refract(i, n, R)

返回在入射光线i,表面法线n,折射率为R下的折射光线

round

round(x)

返回最接近x的整数

rsqrt

rsqrt(x)

返回x平方根的倒数。 1 / sqrt(x) 。

saturate

saturate(x)

把输入值截取在[0, 1]之间

sign

sign(x)

返回输入值的符号

sin

sin(x)

返回输入值的正弦值

sincos

sincos(x, out s, out c)

返回输入值的正弦值和余弦值。

sinh

sinh(x)

返回输入值的双曲正弦值。

smoothstep

smoothstep(min, max, x)

如果输入值的范围是[min, max],则返回一个介于0和1之间的Hermite插值。

sqrt

sqrt(x)

返回输入值的平方根

step

step(a, x)

返回 (x >= a) ? 1 : 0 。

tan

tan(x)

返回x的正切值。

tanh

tanh(x)

返回x的双曲正切值。

tex1D

tex1D(s, t)

返回纹理s在t位置的颜色。1D texture lookup. 

tex1Dbias

tex1Dbias(s, t)

使用bias返回纹理s在t位置的颜色。1D texture lookup with bias. 

tex1Dgrad

tex1Dgrad(s, t, ddx, ddy)

使用梯度返回纹理s在t位置的颜色。1D texture lookup with a gradient. 

tex1Dlod

tex1Dlod(s, t)

使用LOD返回纹理s在t位置的颜色。1D texture lookup with LOD. 

tex1Dproj

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

transpose(m)

返回m的转置矩阵。

trunc

trunc(x)

将x的所有元素从浮点值截断到整数值。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值