CG 标准函数库
(1)数学函数
| 函数 | 功能描述 |
|---|---|
| abs(x) | 返回输入参数的绝对值 |
| acos(x) | 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 |
| all(x) | 如果输入参数均不为0,则返回ture; 否则返回flase。&&运算 |
| any(x) | 输入参数只要有其中一个不为0,则返回true。 |
| asin(x) | 反正弦函数,输入参数取值区间为[−1,1],返回角度值范围为, [−π2,π2] |
| atan(x) | 反正切函数,返回角度值范围为[−π2,π2] |
| atan2(y,x) | 计算y/x的反正切值。实际上和atan(x)函数功能完全一样,至少输入参数不同。atan(x) = atan2(x, float(1))。 |
| ceil(x) | 对输入参数向上取整。例如: ceil(float(1.3)) ,其返回值为2.0 |
| clamp(x,a,b) | 如果x值小于a,则返回a; 如果x值大于b,返回b; 否则,返回x。 |
| cos(x) | 返回弧度x的余弦值。返回值范围为[−1,1] |
| cosh(x) | 双曲余弦(hyperbolic cosine)函数,计算x的双曲余弦值。 |
| cross(A,B) | 返回两个三元向量的叉积(cross product)。注意,输入参数必须是三元向量! |
| degrees(x) | 输入参数为弧度值(radians),函数将其转换为角度值(degrees) |
| determinant(m) | 计算矩阵的行列式因子。 |
| dot(A,B) | 返回A和B的点积(dot product)。参数A和B可以是标量,也可以是向量(输入参数方面,点积和叉积函数有很大不同)。 |
| exp(x) | 计算ex的值,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) | 返回标量或矢量的小数 |
| frexp(x, out i) | 将浮点数x分解为尾数和指数,即x=m∗2i, 返回m,并将指数存入i中;如果x为0,则尾数和指数都返回0 |
| isfinite(x) | 判断标量或者向量中的每个数据是否是有限数,如果是返回true;否则返回false; |
| isinf(x) | 判断标量或者向量中的每个数据是否是无限,如果是返回true;否则返回false; |
| isnan(x) | 判断标量或者向量中的每个数据是否是非数据(not-a-number NaN),如果是返回true;否则返回false; |
| ldexp(x, n) | 计算x∗2n的值 |
| lerp(a, b, f) | 计算(1−f)∗a+b∗f或者a+f∗(b−a)的值。即在下限a和上限b之间进行插值,f表示权值。注意,如果a和b是向量,则权值f必须是标量或者等长的向量。 |
| lit(NdotL, NdotH, m) | N表示法向量; L表示入射光向量; H表示半角向量; m表示高光系数。 函数计算环境光、散射光、镜面光的贡献,返回的4元向量。 X位表示环境光的贡献,总是1.0; Y位代表散射光的贡献,如果 N∙L<0,则为0;否则为N∙L Z位代表镜面光的贡献,如果N∙L<0 或者N∙H<0,则位0;否则为(N∙L)m; W位始终位1.0 |
| log(x) | 计算ln(x)的值,x必须大于0 |
| log2(x) | 计算log(x)2的值,x必须大于0 |
| log10(x) | 计算log(x)10的值,x必须大于0 |
| max(a, b) | 比较两个标量或等长向量元素,返回最大值。 |
| min(a,b) | 比较两个标量或等长向量元素,返回最小值。 |
| modf(x, out ip) | 把x分解成整数和分数两部分,每部分都和x有着相同的符号,整数部分被保存在ip中,分数部分由函数返回 |
| mul(M, N) | 矩阵M和矩阵N的积,计算方法如下
mul(M,N)=⎡⎣⎢⎢⎢M11M12M13M14M21M22M23M24M31M32M33M34M41M42M43M44⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢N11N12N12N13N21N22N23N24N31N32N33N34N41N42N43N44⎤⎦⎥⎥⎥
|
| mul(M, v) | 矩阵M和列向量v的积,公式如下
mul(M,v)=⎡⎣⎢⎢⎢M11M12M13M14M21M22M23M24M31M32M33M34M41M42M43M44⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢v1v2v3v4⎤⎦⎥⎥⎥
|
| mul(v, M) | 行向量v和矩阵M的积,公式如下
mul(v,M)=[v1v2v3v4]⎡⎣⎢⎢⎢M11M12M13M14M21M22M23M24M31M32M33M34M41M42M43M44⎤⎦⎥⎥⎥
|
| noise(x) | 根据它的参数类型,这个函数可以是一元、二元或三元噪音函数。返回的值在0和1之间,并且通常与给定的输入值一样 |
| pow(x, y) | xy |
| radians(x) | 函数将角度值转换为弧度值 |
| round(x) | 返回四舍五入值。 |
| rsqrt(x) | x的平方根的倒数,x必须大于0 |
| saturate(x) | 把x限制到[0,1]之间 |
| sign(x) | 如果x>0则返回1;否则返回0 |
| sin(x) | 输入参数为弧度,计算正弦值,返回值范围 为[-1,1] |
| sincos(float x, out s, out c) | 该函数是同时计算x的sin值和cos值,其中s=sin(x),c=cos(x)。该函数用于“同时需要计算sin值和cos值的情况”,比分别运算要快很多! |
| sinh(x) | 计算x的双曲正弦 |
| smoothstep(min, max, x) | 值x位于min、max区间中。如果x=min,返回0;如果x=max,返回1;如果x在两者之间,按照下列公式返回数据: −2∗(x−minmax−min)3+3∗(x−minmax−min)2 |
| step(a, x) | 如果x<a,返回0;否则,返回1 |
| sqrt(x) | 求x的平方根,x√,x必须大于0 |
| tan(x) | 计算x正切值 |
| tanh(x) | 计算x的双曲线切线 |
| transpose(M) | 矩阵M的转置矩阵 如果M是一个AxB矩阵,M的转置是一个BxA矩阵,它的第一列是M的第一行,第二列是M的第二行,第三列是M的第三行,等等 |
(2)几何函数
| 函数 | 功能描述 |
|---|---|
| distance(pt1, pt2) | 两点之间的欧几里德距离(Euclidean distance) |
| faceforward(N,I,Ng) | 如果Ng∙I<0,返回N;否则返回-N。 |
| length(v) | 返回一个向量的模,即sqrt(dot(v,v)) |
| normalize(v) | 返回v向量的单位向量 |
| reflect(I, N) | 根据入射光纤方向I和表面法向量N计算反射向量,仅对三元向量有效 |
| refract(I,N,eta) | 根据入射光线方向I,表面法向量N和折射相对系数eta,计算折射向量。如果对给定的eta,I和N之间的角度太大,返回(0,0,0)。 只对三元向量有效 |
(3)纹理映射函数
| 函数 | 功能描述 |
|---|---|
| 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) | 二维纹理查询 |
| 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) | 二维非投影矩形纹理查询(OpenGL独有) |
| texRECT (samplerRECT tex, float3 sz, float2 dsdx,float2 dsdy) | 二维非投影使用导数的矩形纹理查询(OpenGL独有) |
| texRECT (samplerRECT tex, float3 sz) | 二维非投影深度比较矩形纹理查询(OpenGL独有) |
| texRECT (samplerRECT tex, float3 sz, float2 dsdx,float2 dsdy) | 二维非投影深度比较并使用导数的矩形纹理查询(OpenGL独有) |
| texRECT proj(samplerRECT tex, float3 sq) | 二维投影矩形纹理查询(OpenGL独有) |
| texRECT proj(samplerRECT tex, float3 szq) | 二维投影矩形纹理深度比较查询(OpenGL独有) |
| Tex3D(sampler3D tex, float s) | 三维纹理查询 |
| Tex3D(sampler3D tex, float3 s, float3 dsdx, float3 dsdy) | 结合导数值(derivatives)查询三维纹理 |
| Tex3Dproj(sampler3D tex, float4 szq) | 查询三维投影纹理,并进行深度值比较 |
| texCUBE(samplerCUBE tex, float3 s) | 查询立方体纹理 |
| texCUBE (samplerCUBE tex, float3 s, float3 dsdx, float3 dsdy) | 结合导数值(derivatives)查询立方体纹理 |
| texCUBEproj (samplerCUBE tex, float4 sq) | 查询投影立方体纹理 |
在这个表中,每个函数第二个参数的名字指明了在执行纹理查询的时候,它的值是如果被使用的:
- s表示这是一个一元、二元或三元纹理坐标。
- z表示这是一个用来进行阴影贴图查找的深度比较值。
- q表示这是一个透视值,在进行纹理查找之前,它被用来除以纹理坐标(s)。
当你使用的纹理函数允许你指定一个深度比较值的时候,与之相关联的纹理单元必须被设置成深度比较纹理。否则,深度比较实际上不会被执行。
(4)偏导函数
| 函数 | 功能描述 |
|---|---|
| ddx(a) | 近似a关于屏幕空间x轴的偏导数 |
| ddy(a) | 近似a关于屏幕空间y轴的偏导数 |
(5)调试函数
| 函数 | 功能描述 |
|---|---|
| void debug(float4 x) | 如果在编译时设置了DEBUG,片段着 色程序中调用该函数可以将值x作为COLOR语义的最终输出;否则该函数什么也不做。 |
CG 标准函数库的更多相关文章
- 【Unity Shader】---CG标准函数库
1.CG标准函数库 和C的标准函数库类似,CG也提供了一系列的内建函数库,这些函数用于计算数学上的通用计算或算法(如纹理映射).例如:求取入射光线的反射光线用Reflect函数,求折射光线用Refla ...
- 【CG】CG标准函数库——数学函数
- [Unity] Cg标准函数库
- CG标准函数库
(1)数学函数 函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回tu ...
- CG标准函数库——数学函数(GPU编程与CG语言之阳春白雪下里巴人)
- Cg(C for Graphic)标准函数库之数学函数与几何函数
和 C 的标准函数库类似, Cg 提供了一系列内建的标准函数.这些函数用于执行数学上的通用计算或通用算法(纹理映射等),例如,需要求取入射光线的反射光线方向向量可以使用标准函数库中的 reflect ...
- Standard C 语言标准函数库介绍
全面巩固所知所学,往精通方向迈进! Standard C 语言标准函数库速查 (Cheat Sheet) from:http://ganquan.info/standard-c/function/ C ...
- c语言: Standard C 语言标准函数库
Standard C 语言标准函数库速查 (Cheat Sheet) http://ganquan.info/standard-c/ c语言标准头: <assert.h> 断言 <c ...
- 12C语言标准函数库
C语言标准函数库 数学函数 三角函数 指数和对数函数 双曲线函数 其它函数 Sqrt() Pow() Exp() Log() Sin() Cos() Tan() 时间函数 查找和排序 Bsearch( ...
随机推荐
- 什么是umbraco
在win7上部署umbraco Umbraco是一个开放源码的CMS内容管理系统,基于asp.net建立,使用mssql进行存储数据. 使用Umbraco ,设计师能创造出有效的XHTML标记模板和开 ...
- "手机信号放大器" 让手机信号增强的办法
我的住处信号及其的差,电话基本打不进来,放大器的话便宜的也得一百多,于是自己尝试各种办法让自己的手机有信号,于是奇迹般的成功了: 将手机放于铁缸内,并45度角斜放,刚好淹没手机为佳.于是信号奇迹般的3 ...
- Javascript多线程引擎(三)
Javascript多线程引擎(三) 完成对ECMAScript-262 3rd规范的阅读后, 列出了如下的限制条件 1. 去除正则表达式( 语法识别先不编写) 2. 去除对Function Decl ...
- NodeJS热部署工具 — supervisor
NodeJS热部署工具 — supervisor 大家都在开发nodejs应用时遇到过这样的情况,修改nodejs应用中的程序文件后必须重启nodejs才能重新加载应用代码.这是因为nodejs加载过 ...
- NUnit单元测试资料汇总
NUnit单元测试资料汇总 从安装到配置 首先到官网http://www.nunit.org/下载如下图的资料,安装NUnit-2.6.1.msi包. 然后挂在VS2010外部工具这个地方来使用,工具 ...
- [Usaco2008 Dec]Patting Heads 轻拍牛头[筛法]
Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶 ...
- IE回车的怪异行为
问题 IE浏览器在input中回车,会触发button按钮的click事件. 原因分析 IE浏览器中在input中回车相当于提交form,而button标签默认的类型是submit, 所以如果没有指定 ...
- 求字符串长度 strlen(数组指针两种方式)
问题: 求字符串中所含有字符的个数(包括空格),即求字符串长度: #include <stdio.h> #include <assert.h> int _strlen(cons ...
- 使用元组Tuple,返回多个不同类型的值
记得我在不知道Tuple时,如果想实现调用某个函数时,返回多个值,则需要使用ref或者out了. string name = ""; int result= GetInfo(ref ...
- 运用Unity实现依赖注入[结合简单三层实例]
运用Unity实现依赖注入[结合简单三层实例] 一:理论部分 依赖注入:这是 Ioc 模式的一种特殊情况,是一种基于改变对象的行为而不改变类的内部的接口编程技术.开发人员编写实现接口的类代码,并基于接 ...