cg中的关键字、语义词、函数库

一、cg的关键字与语义字

关键字:

asm*              explicit           pixelfragment*       template

asm_fragment      extern             pixelshader*         texture*

auto              FALSE              private              texture1D

bool              fixed              protected            texture2D

break             float*             public               texture3D

case              for                register             textureCUBE

catch             friend             reinterpret_cast     textureRECT

char              get                return               this

class             goto               row_major            throw

column_major      half               sampler              TRUE

compile           if                 sampler_state        try

const             in                 sampler1D            typedef

const_cast        inline             sampler2D            typeid

continue          inout              sampler3D            typename

decl*             int                samplerCUBE          uniform

default           interface          shared               union

delete            long               short                unsigned

discard           matrix*            signed               using

do                mutable            sizeof               vector*

double            namespace          static               vertexfragment*

dword*            new                static_cast          vertexshader*

dynamic_cast      operator           string*              virtual

else              out                struct               void

emit              packed             switch               volatile

enum              pass*        technique*           while
以下关键字可以被用作标志符(建议不要这样做):half2x3      float4

说明:

1、标有星号的话是不区分大小写的。

2、任何以两个的下划线作为前缀(例如,__ newType)的标识符被保留。

3、版权归 NVIDIA公司:http://http.developer.nvidia.com/CgTutorial/cg_tutorial_appendix_d.html

二、语义词

三、cg的函数库

————————————————————————————————————————————————————————————

函数              功能说明

————————————————————————————————————————————————————————————

abs(x)             返回输入参数x的绝对值

————————————————————————————————————————————————————————————

acos(x)            数学中常用到的反余弦arccos(x),值域为[-1, 1],即参数x取值为[-1, 1],得到的角度在[0, PI]区间

————————————————————————————————————————————————————————————

asin(x)            反正弦,值域为[-1, 1],即参数x取值为[-1, 1],得到的角度在[-PI/2 , PI/2]区间

————————————————————————————————————————————————————————————

atan(x)            反正切,值域为无穷,即参数x取值不限,得到的角度在[-PI/2, PI/2]区间

————————————————————————————————————————————————————————————

atan2(y, x)          y/x的反正切,这里atan(x) = atan2(y, float(x))

————————————————————————————————————————————————————————————

sin(x)             返回角度x的正弦值,得到值的范围是[-1, 1]

————————————————————————————————————————————————————————————

cos(x)            返回角度x的余弦值,得到值的范围是[-1, 1]

————————————————————————————————————————————————————————————

sinh(x)            x的双曲正弦值

————————————————————————————————————————————————————————————

cosh(x)            x的双曲余弦值

————————————————————————————————————————————————————————————

all(x)              &&运算,输入的参数只要有一个为0,则函数返回false,全为1时才返回true

————————————————————————————————————————————————————————————

any(x)               ||运算,输入的参数只要有一个为1,则函数返回true,全为0时才返回false

————————————————————————————————————————————————————————————

ceil(x)            输入的参数向上取整,如 ceil(float(1,1))返回2, ceil(float(1.9))返回2

————————————————————————————————————————————————————————————

floor(x)           输入的参数向下取整

————————————————————————————————————————————————————————————

clamp(x, a, b)        如果x 值小于a,则返回a;如果x 值大于b,返回b;否则,返回x (即x在[a, b],越那边的界就取哪边的值,不越界就返回x)

————————————————————————————————————————————————————————————

saturate(x)            如果x 小于0,返回0;如果x 大于1,返回1;否则,返回x(即x在[0, 1],越那边的界就取哪边的值,不越界就返回x)

————————————————————————————————————————————————————————————

sign(x)             如果x 大于0,返回1;如果x 小于0,返回01;否则返回0

————————————————————————————————————————————————————————————

cross(a, b)          参数a,b必须是三元向量,函数为去计算两个三元向量的叉积

————————————————————————————————————————————————————————————

degrees(x)          输入弧度值,函数返回角度值

————————————————————————————————————————————————————————————

radians(x)          输入角度值,函数返回弧度值

————————————————————————————————————————————————————————————

determinant(x)        计算x矩阵的行列式因子

————————————————————————————————————————————————————————————

dot(a, b)           计算a和b的点积, a和b可以是标量,也可以是矢量

————————————————————————————————————————————————————————————

exp(x)              计算e的x次方值

————————————————————————————————————————————————————————————

exp2(x)           计算2的x次方值

————————————————————————————————————————————————————————————

fmod(x, y)           返回x/y的余数,y不为0

————————————————————————————————————————————————————————————

frac(x)           返回一个标量的小数部分

————————————————————————————————————————————————————————————

frexp(x, out y)       将x分解成尾数和指数表示,x = m * exp2(y),返回m,指数存到y中;如果x为0,则尾数和指数都返回0

————————————————————————————————————————————————————————————

isfinite(x)          判断标量或者向量中的每个数据是否是有限数,如果是返回true;否则(无限数或非数)返回false;

————————————————————————————————————————————————————————————

isinf(x)           判断标量或者向量中的每个数据是否是无限,如果是返回true;否则返回false;

————————————————————————————————————————————————————————————

isnan(x)              判断标量或者向量中的每个数据是否是非数,如果是返回true;否则返回false;

————————————————————————————————————————————————————————————

ldexp(x, n)         返回 x * exp2(n) 的值

————————————————————————————————————————————————————————————

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 • H)m;
                                     W 位始终位1.0

————————————————————————————————————————————————————————————

log(x)           计算 ln(x) 的值,x必须大于0

————————————————————————————————————————————————————————————

log2(x)          计算 log2(x) 的值,x 必须大于0

————————————————————————————————————————————————————————————

log10(x)           计算 log10(x) 的值,x 必须大于0

————————————————————————————————————————————————————————————

max(a, b)        比较两个标量或等长向量元素,返回最大值

————————————————————————————————————————————————————————————

min(a,b)         比较两个标量或等长向量元素,返回最小值

————————————————————————————————————————————————————————————

mul(M, N)        计算两个矩阵相乘,如果M 为AxB 阶矩阵,N 为BxC 阶矩阵,则返回AxC 阶矩阵。

              下面两个函数为其重载函数

————————————————————————————————————————————————————————————

mul(M, v)           计算矩阵和向量相乘

————————————————————————————————————————————————————————————

mul(v, M)          计算向量和矩阵相乘

————————————————————————————————————————————————————————————

noise(x)                      噪声函数,返回值始终在0,1 之间;对于同样的输入,始终返回相同的值(也就是说,并不是真正意义上的随机噪声)

————————————————————————————————————————————————————————————

pow(x, y)         计算 x的y次方

————————————————————————————————————————————————————————————

round(x)        四舍五入

————————————————————————————————————————————————————————————

rsqrt(x)          x的反二次方根,x大于0

————————————————————————————————————————————————————————————

sincos(float x, out s, out c)     该函数是同时计算x 的sin 值和cos 值,其中s=sin(x),c=cos(x)。该函数用于“同时需要计算sin 值和cos 值的情况”

————————————————————————————————————————————————————————————

smoothstep(min, max, x)       值x 位于min、max 区间中。如果x=min,返回0;如果x=max,返回1;如果x 在两者之间

                按照该公式返回数据:

————————————————————————————————————————————————————————————

step(a, x)        如果x<a,返回0;否则,返回1

————————————————————————————————————————————————————————————

sqrt(x)            求x 的平方根, x大于0

————————————————————————————————————————————————————————————

tan(x)          计算正切值

————————————————————————————————————————————————————————————

tanh(x)          计算双曲正切值

————————————————————————————————————————————————————————————

transpose(M)       M为矩阵,计算其转置矩阵

————————————————————————————————————————————————————————————

时间: 2024-10-24 23:21:07

cg中的关键字、语义词、函数库的相关文章

在windows中安装使用python第三方函数库

很多使用过python的读者都知道,python光使用系统函数库是远远不能满足要求的,有时候我们需要使用第三方函数库与自定义函数库,然而第三方函数库是要自己手动安装的,由于笔者正在学习python,所以就演示一下安装过程,这里只展示windows的安装过程,linux的不再叙述,有兴趣的读者自行百度. 第一步,在python官网上下载第三方函数库httplib2,这里的版本为httplib2-0.9.2,点击下载地址即可下载. 第二步,将刚刚下载的压缩包解压到某个文件夹里,以笔者的为例,结果如下

Win7下Qt5.2中使用OpenGL的glu函数库无法使用的解决方案

最近在Window7使用Qt5.2学习OpenGL时,出现了以OpenGL中glu开头的函数库无法使用的错误,例如: 'gluPerspective'  was not declared in this scope.本文使用的QT版本是Qt 5.2.0 for Windows 32-bit (MinGW 4.8, OpenGL, 689 MB)(Info),可从QT官网http://qt-project.org/downloads看到各种平台下的QT版本下载信息. 上网搜了以下相关的解决方法,都

python中的关键字---2(函数基础类)

函数基础 定义函数: def 函数名(): 缩进 函数体(代码块) 调用函数: 函数名 + () 小括号 执行顺序: def func(): 1 print('这大佬黑') 3 func()调用 2 函数的返回值: def func(): 1 print('这大佬黑') 3 return '今晚不溅不散' func()调用 2 返回一个参数的时候是它本身,返回多个就是元组形式显示 当函数体执行到return的时候就结束函数 不写return的时候 默认返回None 写了return不写返回值的时

lua中的数据结构-table常用函数库

table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开.除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长. sep, start, end这三个参数是顺序读入的, 所以虽然它们都不是必须参数,

关于怎么在VS2017中建立一个C/C++函数库

想起来自己在大一暑假时做过飞机大战的小游戏,于是选择在VS中创建一个自己的动态链接库(C++),也是为了将加强自己对于数据结构的巩固. 因为自己也是第一次接触,于是百度来CSDN上的文章以及微软上的文章,也是比着葫芦画瓢吧. 直接分享链接吧https://docs.microsoft.com/zh-cn/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=vs-2017 原文地址:https://www

静态函数库和动态函数库

静态函数库是在编译链接时,把库文件代码全部加入到可执行文件中,因此生成的文件比较大,而运行时也就不需要库文件了.Linux中静态函数库的后缀名一般为".a",windows中为".Lib": 动态函数库是在编译链接时没有把库文件代码加入到可执行文件中,而是将要调用的函数所在文件的和该函数在文件中的位置等信息链接进目标程序.Linux中动态函数库的后缀名一般为".so",windows中为".dll".

为开发者准备的 Android 函数库(2016 年版)

转载:http://www.androidchina.net/5922.html第三方函数库(译者注:包括第三方提供的 SDK,开源函数库)以惊人的方式助力着 Android 开发,借助这些其他开发人员辛勤工作的成果,我们开发起来更轻松和快捷.目前存在成千上万的函数库,如何选择正确的函数库非常关键,本文就是这样的一个总结. Animation Android View Animations 1 :一个强大的 View 动画函数库,方便使用者很容易地实现各种 View 的动画效果. Recycle

Linux的静态函数库和动态函数库

一.在Linux中,有两种函数库,以*.so后缀命名的是动态函数库,以*.a后缀命名的是静态函数库 对于静态函数库:在编译链接时候,程序所需要的函数会从静态函数库中拷贝到执行文件中.当程序运行的时候,就不需要链接外部的函数库了. 对于动态函数库:在编译链接时,程序所需要的函数不会从动态函数库中拷贝出来,而是在程序运行的时候,才会将所需要的函数加载进来. 二.静态函数库 1.静态函数库是多个目标文件*.o的集合 2.可以使用ar命令(archiver)来生成.a文件 gcc -c part_a.c

Android中的依赖注入:Dagger函数库的使用(一)

--欢迎转载,请注明出处 http://blog.csdn.net/asce1885 ,未经本人同意请勿用于商业用途,谢谢-- 原文链接:http://antonioleiva.com/dependency-injection-android-dagger-part-1/ 本文Gitbooks链接:http://asce1885.gitbooks.io/android-rd-senior-advanced/content/androidzhong_de_yi_lai_zhu_ru_ff1a_da