Cg 标准函数库 :
-- 来自《 GPU编程与CG语言GPU-Programming-AndCgLanguage-Primer》1. 数学函数(Mathematical Functions);
2. 几何函数(Geometric Functions);
3. 纹理映射函数(Texture Map Functions);
4. 偏导数函数(Derivative Functions);
5.调试函数(Debugging Function);
8.4.1数学函数(Mathematical Functions)
表4中列举了Cg标准函数库中所有的数学函数,这些数学函数用于执行数学上常用计算,包括:三角函数、幂函数、园函数、向量和矩阵的操作函数。这
些函数都被重载,以支持标量数据和不同长度的向量作为输入参数。
determinant(m)
计算矩阵的行列式因子。 dot(A,B) 返回A 和B 的点积(dot product)。参数A 和B
可以是标量,也可以是向量(输入参数方面,
点积和叉积函数有很大不同)。
lightbulbexp(x) 计算x e 的值,e= 2.71828182845904523536
exp2(x) 计算2x 的值
floor(x) 对输入参数向下取整。例如floor(float(1.3))
返回的值为1.0;但是floor(float(-1.3))返回的
值为-2.0。该函数与ceil(x)函数相对应。
fmod(x,y) 返回x/y 的余数。如果y 为0,结果不可预料。
frac(x) Returns the fractional portion of a scalar or
each vector component
frexp(x, out exp) 将浮点数x 分解为尾数和指数,即
x = m* 2^exp ,
返回m ,并将指数存入exp 中;如果x 为0,则尾数和指数都返回0
isfinite(x) 判断标量或者向量中的每个数据是否是有限
数,如果是返回true ;否则返回fal;无限的
或者非数据(not-a-number NaN),
isinf(x) 判断标量或者向量中的每个数据是否是无
限,如果是返回true ;否则返回fal;
isnan(x) 判断标量或者向量中的每个数据是否是非数
据(not-a-number NaN),如果是返回true ;否
则返回fal;
ldexp(x, n) 计算2n x ∗的值
lerp(a, b, f) 计算()1f a b f −∗+∗或者()a f b a +∗−的
值。即在下限a 和上限b 之间进行插值,f 表
示权值。注意,如果a 和b 是向量,则权值f
必须是标量或者等长的向量。
lf confident
四级算分器lit(NdotL, NdotH, m)
N 表示法向量;L 表示入射光向量;H 表示
半角向量;m 表示高光系数。
函数计算环境光、散射光、镜面光的贡献,桃子的英文
返回的4元向量:
X 位表示环境光的贡献,总是1.0;
Y 位代表散射光的贡献,如果0N L •<,则
为0;否则为N L •
Z 位代表镜面光的贡献,如果 0N L •<;或者
0N H •<,则位0;否则为()m N H •; W 位始终位1.0
tan(x) 输入参数为弧度,计算正切值
tanh(x) 计算双曲正切值
varsitytranspo(M) M为矩阵,计算其转置矩阵
表 4 Cg标准函数库中的数学函数
8.4.2几何函数(Geometric Functions)
几何函数,如表5所示,用于执行和解析几何相关的计算,例如根据入射光向量和顶点法向量,求取反射光和折射光方向向量。Cg语言标准函数库中有3个几何函数会经常被使用到,分别是:normalize函数,对向量进行归一化;reflect 函数,计算反射光方向向量;refract函数,计算折射光方向向量。大声呐喊,并要求强烈注意:
1.着色程序中的向量最好进行归一化之后再使用,否则会出现难以预料的中国英语怎么写
错误;
注意这两个函数中使用的入射光方向向量,是从外指向几何顶点的;平时我们在着色程序中或者在课本上都是将入射光方向向量作为从顶点出发。
函数功能
distance( pt1, pt2) 两点之间的欧几里德距离(Euclidean
distance)
faceforward(N,I,Ng)
Ng I•<,返回N;否则返回-N。
如果0
length(v) 返回一个向量的模,即sqrt(dot(v,v))
会计从业资格证编号normalize( v) 归一化向量
reflect(I, N) 根据入射光方向向量I,和顶点法向量
N,计算反射光方向向量。其中I和N
必须被归一化,需要非常注意的是,这
个I是指向顶点的;函数只对三元向量
长裙英文
有效。
refract(I,N,eta) 计算折射向量,I为入射光线,N为法
向量,eta为折射系数;其中I和N必policeman是什么意思
须被归一化,如果I和N之间的夹角太
大,则返回(0,0,0),也就是没有折
射光线;I是指向顶点的;函数只对三
元向量有效。
表 5 Cg标准函数库几何函数
8.4.3纹理映射函数(Texture Map Functions)
下表提供Cg标准函数库中的纹理映射函数。这些函数被ps_2_0、ps_2_x、arbfp1、fp30和fp40 等profiles完全支持(fully supported)。所有的这些函数返回四元向量值。
函数
tex1D(sampler1D tex, float s)
一维纹理查询
tex1D(sampler1D tex, float s, float dsdx, float dsdy)
使用导数值(derivatives)查询一维纹理
Tex1D(sampler1D tex, float2 sz)
一维纹理查询,并进行深度值比较
Tex1D(sampler1D tex, float2 sz, float dsdx,float dsdy)
使用导数值(derivatives)查询一维纹理,并进行深度值比较
Tex1Dproj(sampler1D tex, float2 sq)
一维投影纹理查询
Tex1Dproj(sampler1D tex, float3 szq)
一维投影纹理查询,并比较深度值
Tex2D(sampler2D tex, float2 s)ramsa
二维纹理查询
Tex2D(sampler2D tex, float2 s, float2 dsdx, float2 dsdy)
使用导数值(derivatives)查询二维纹理
Tex2D(sampler2D tex, float3 sz)
二维纹理查询,并进行深度值比较
Tex2D(sampler2D tex, float3 sz, float2 dsdx,float2 dsdy)
使用导数值(derivatives)查询二维纹理,并进行深度值比较
Tex2Dproj(sampler2D tex, float3 sq)
二维投影纹理查询
Tex2Dproj(sampler2D tex, float4 szq)
二维投影纹理查询,并进行深度值比较
texRECT(samplerRECT tex, float2 s)
texRECT (samplerRECT tex, float2 s, float2 dsdx, float2 dsdy)
texRECT (samplerRECT tex, float3 sz)
texRECT (samplerRECT tex, float3 sz, float2 dsdx,float2 dsdy)