(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) 返回AB的点积(dot product)。参数AB可以是标量,也可以是向量(输入参数方面,点积和叉积函数有很大不同)。
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的余数。如果y0,结果不可预料。
frac(x) 返回标量或矢量的小数
frexp(x, out i) 将浮点数x分解为尾数和指数,即x=m∗2i, 返回m,并将指数存入i中;如果x0,则尾数和指数都返回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表示权值。注意,如果ab是向量,则权值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) 根据它的参数类型,这个函数可以是一元、二元或三元噪音函数。返回的值在01之间,并且通常与给定的输入值一样
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位于minmax区间中。如果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,IN之间的角度太大,返回(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 标准函数库的更多相关文章

  1. 【Unity Shader】---CG标准函数库

    1.CG标准函数库 和C的标准函数库类似,CG也提供了一系列的内建函数库,这些函数用于计算数学上的通用计算或算法(如纹理映射).例如:求取入射光线的反射光线用Reflect函数,求折射光线用Refla ...

  2. 【CG】CG标准函数库——数学函数

  3. [Unity] Cg标准函数库

  4. CG标准函数库

    (1)数学函数 函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回tu ...

  5. CG标准函数库——数学函数(GPU编程与CG语言之阳春白雪下里巴人)

  6. Cg(C for Graphic)标准函数库之数学函数与几何函数

    和 C 的标准函数库类似, Cg 提供了一系列内建的标准函数.这些函数用于执行数学上的通用计算或通用算法(纹理映射等),例如,需要求取入射光线的反射光线方向向量可以使用标准函数库中的 reflect ...

  7. Standard C 语言标准函数库介绍

    全面巩固所知所学,往精通方向迈进! Standard C 语言标准函数库速查 (Cheat Sheet) from:http://ganquan.info/standard-c/function/ C ...

  8. c语言: Standard C 语言标准函数库

    Standard C 语言标准函数库速查 (Cheat Sheet) http://ganquan.info/standard-c/ c语言标准头: <assert.h> 断言 <c ...

  9. 12C语言标准函数库

    C语言标准函数库 数学函数 三角函数 指数和对数函数 双曲线函数 其它函数 Sqrt() Pow() Exp() Log() Sin() Cos() Tan() 时间函数 查找和排序 Bsearch( ...

随机推荐

  1. 引用动态链接库Dll文件 引用失败 未能添加对HD.dll的引用。请确保此文件可访问并且是一个有效的程序集或COM组件

    出现这个问题,是由于使用了非.NET 的动态链接库,需要注册 方法如下: 1.在搜索程序和文件中使用 regsvr32 "D:\Projects\8.01.01.03-重庆大足\lib\Va ...

  2. 模板方法(Template)模式

    模板方法(Template)模式 前言 前段时间在亚马逊买了一本<CLR>的书,当时搞活动买一送一,然后挑了一本<漫谈设计模式>,一位不相识的大牛写的,这几天闲来无事,翻了几页 ...

  3. python中staticmethod classmethod及普通函数的区别

    staticmethod 基本上和一个全局函数差不多,只不过可以通过类或类的实例对象 (python里光说对象总是容易产生混淆, 因为什么都是对象,包括类,而实际上 类实例对象才是对应静态语言中所谓对 ...

  4. iOS关于应用内分享

    iOS7.0增加了AirDrop功能,可知在未来,手机信息资源的直接分享会越来越重要.而我们在iPhone系统短信点击照片会看到右上角的分享按钮,点击可以弹出一系列的应用菜单,允许用户把这张图片分享到 ...

  5. CentOS上搭建java WEB开发环境Tomcat+MySQL+JDK

    对于初学者来说,想在linux系统上搭建一个java web服务器,不知道什么方案可行, 这篇文章主要是告诉这些基础和概念相对薄弱的同学,这样搭建是可行的,大体上没问 题的,出问题也是细节问题.所以此 ...

  6. ios学习笔记(一)之Object-C

    一:Objective-C语言基础 二:Objective-C类与继承和协议 一:Objective-C语言基础: 1.1)#import 包含头文件  与#include 作用相同 1.2)Obje ...

  7. 纯Python综合图像处理小工具(1)分通道直方图

    平时工作经常需要做些图像分析,需要给图像分通道,计算各个通道的直方图分布特点,这个事儿photoshop也能做,但是用起来不方便,且需要电脑上安装有PS软件,如果用OpenCV, 更是需要在visua ...

  8. 公共建筑能耗监测平台的GPRS通讯服务器的开发方法分享

    公共建筑能耗监测平台的GPRS通讯服务器的开发方法分享 在这个文章里面我将用一个实际的案例来分享如何来构建一个能够接受3000+个连接的GPRS通讯服务器软件,这个软件被我认为是一个艺术品,实现周期为 ...

  9. asp.net 上传文件

    文件上传实例 公司产品中一直是采用 flash 实现文件上传功能,但用户的需求多了以后遇到了越来越多难以解决的问题,最后试着用硕正提供的freeform.小型页面控件来解决. 硕正文件上传的实现途径有 ...

  10. 将 Servlet (HTTP POST/GET)请求发布到OSB

    转载地址:http://user.qzone.qq.com/32221895/blog/1406960844 ------------------------------------- 发帖要200字 ...