`

ESSL着色器编程中内置的运算符与函数

阅读更多

-x  :          返回x向量的负值,表示与原向量方向相反的向量。

x+y:         计算向量x和向量y的和,x和y向量必须是同维度的。

x-y:          计算两个向量的差值,两个向量也必须是同维度的。

x*y:          如果x和y都是向量,那么该运算符进行的是逐分量的相乘计算;如果是矩阵相乘,那么该运算符会返回一个线性相乘(线性代数中正常的矩阵乘法的矩阵,而不是一个逐分量的相乘结果(如果想得到的是逐分量的相乘结果,那就需要使用matrixCompMult函数)。

x/y:          除法运算符与乘法运算符比较相似。

dot(x,y):           返回两个向量的点乘积(标量),这两个向量必须是同维度的。

cross(vec3 x,vec3 y):         返回两个向量的叉乘结果(向量),x和y必须都是vec3类型的向量。

matrixCompMult(mat x,mat y):         返回两个矩阵的逐分量的相乘结果,x和y必须是同维度的(mat2,mat3或mat4)。

mat matrixCompMult (mat x, mat y)
   矩阵x乘以y,result[i][j]是 x[i][j] 和 y[i][j] 的标量积。注意,要获取线性代数矩阵的乘法,使用乘法操作符*。

 

normalize(x):         返回向量x的单位矩阵。

reflect(t,n):            n是法向量,t是入射向量,返回t轴对称于法向量的反射向量。

clamp(a,b,c):         用于返回a、b、c中的中间值

 

补充说明:

GLSL 与C/C++类似但是有一些细微的差别。

另外GLSL 具有以下的特点/约束:

GLSL是100%类型安全的。你不能将一个整型不加转换直接传给一个浮点型:

float my_float = 1;         // Won’t Work! “1” Is An Integer! 

float my_new_float = 1.0;       // Will Work! 

Casts have to be done using constructors. For example this won’t work:

类型转换必须使用构造器。比如下面的代码:

vec2 my_vec; 

ivec2 my_int_vec; 

my_vec2 = (vec2)my_int_vec;     // Won’t Work Because No Constructor Is Used! 

my_vec2 = vec2(my_int_vec);     // Will Work!

向量和矩阵只能使用构造器赋值:

vec3 my_vec = vec3(1.0, 1.0, 1.0); 

mat3 my_mat = mat3(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0); 

向量相乘是按分量逐个作出的乘积:

vec3 my_vec1 = vec3(5.0, 1.0, 0.0); 

vec3 my_vec2 = vec3(1.0, 3.0, 4.0); 

vec3 product = my_vec1 * my_vec2;   // Will Return This Vector: (5.0, 3.0, 0.0) 

也可以对向量和矩阵进行相乘。
矩阵* 向量将把向量当做列向量(OpenGL标准)。
向量* 矩阵将把向量当做行向量 (DirectX 标准)。

比如一个顶点以这种方式进行法线变换:

gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex 

这将简单地将顶点的位置通过模型视图投影矩阵变换。也可以使用其他内置的运算子:

dot        :点乘

cross      :叉乘

texture2D   :用于对纹理采样

normalize   :对一个向量规格化

clamp   :将一个向量固定在一个最小值和最大值之间   

 

表2-3  GLSL的内置函数(部分)

   

   

pow()

幂函数(对矢量和标量

同样有效,下同)

exp(), log()

指数函数,对数函数

abs()

绝对值

sqrt()

平方根

max(), min()

最值

ceil(), floor()

取大于实参的最小整数,取小

于实参的最大整数

sin(), cos(), tan()

三角函数

asin(), acos(), atan()

反三角函数

sinh(), cosh(),<a>tanh ()

双曲正弦,双曲余弦,双曲正切

(以及相应的反函数)

length()

向量长度

distance()

两个向量的距离

dot(), cross()

数乘,叉乘

matrixCompMult()

矩阵对应元素分别相乘

transpose(), determinant(),

inverse()

矩阵的转置,行列式,逆

lessThan(), greaterThan(),

equal()

小于,大于,等于(对实参向量对应位

置的每个分量做大小比较,生成布尔向量)

 

 

Reference:

http://book.51cto.com/art/201205/338109.htm

http://www.opengl.org/sdk/docs/manglsl/xhtml/matrixCompMult.xml

http://blog.csdn.net/hgl868/article/details/7876257#t3

 http://www.opengl.org/sdk/docs/manglsl/

分享到:
评论

相关推荐

    ESSL-098单门门禁说明书.pdf

    ESSL-098单门门禁说明书.pdf

    javaScript函数式编程

    全书共9章,分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的编程、类编程。除此之外,附录中还介绍了更多...

    【JavaScript源代码】ES2020让代码更优美的运算符 (.) ().docx

    ES2020让代码更优美的运算符 (.) ()  非常好用、常用,搭配Null 判断运算符使用,效果更佳,完美! 来,上代码: 我们通常获取一个对象多层的属性值时,需要进行多次的判断。如不判断,一个为空则报错,导致后面...

    ES2.0编程指南(中文版).pdf

    第8章概述顶点着色器如何融入管线,以及OpenGL ES 着色语言中可用于顶点着色器的特殊变量;第9章和第10章介绍片段着色器,包括多重纹理、雾化、Alpha测试和用户裁剪平面等;第11章讨论片段操作,包括剪裁测试、模板...

    华正易尚ES-M6+ 编程器固件

    华正易尚ES-M6+ 原厂编程器固件

    OPENGL ES 3.0编程指南

    OPENGL ES 3.0编程指南

    通过函数传递值,这是对ES使用建议的管道运算符(|>)的替代方法-JavaScript开发

    ppipe通过函数传递管道值,这是为ES使用建议的管道运算符(|&gt;)的替代方法。 也支持返回承诺的功能。 在这种情况下,连锁的结果也将是一个希望。 这是通过函数获得的相似管道值,是为ES使用建议的管道运算符(|&gt;)的...

    OpenGL着色器详细解析

    YUV编码详细官方解析,深入理解OpenGL OpenGL ES着色器,详细规范解析

    OpenGL ES 3.0编程指南第2版[中文][PDF]

    第8章概述顶点着色器如何融入管线,以及OpenGL ES 着色语言中可用于顶点着色器的特殊变量;第9章和第10章介绍片段着色器,包括多重纹理、雾化、Alpha测试和用户裁剪平面等;第11章讨论片段操作,包括剪裁测试、模板...

    WebGL编程指南压缩包

    附录B GLSL ES 1.0 内置函数 427 角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录...

    GL-Shader-Validator, 用于 sublime text 2和 3的GLSL和ESSL验证器.zip

    GL-Shader-Validator, 用于 sublime text 2和 3的GLSL和ESSL验证器 GL明暗器验证器 这是一个 sublime text 2/3 插件插件,通过 glsl/的预处理器/编译器来验证角度。 角度找到的任何错误都将被路由回 Sublime,明暗器...

    webgl编程指南及源码2/2

    附录B GLSL ES 1.0 内置函数 427 角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录...

    webgl编程指南及源码1/2

    附录B GLSL ES 1.0 内置函数 427 角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录...

    WebGL编程指南

    附录B GLSL ES 1.0 内置函数 427 角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录...

    OpenGL ES 2.0编程指南中文版.pdf

    OpenGL ES 2.0 OpenGL ES 2.0 是本书中要讲的 API,...图 1_1 显示 OpenGL ES 2.0 图像管线,图 1 _1 中的的着色器盒子描述了 OpenGL ES 2.0 的管 道可编程阶段,OpenGL ES 2.0 可编程管线的每个阶段预览在下面介绍。

    OpenGL ES 2.0编程指南中文版

    这儿是有关OpenGL ES 2.0的编程指南,是中文版哦!欢迎下载

    OPENGL ES 3.0编程指南 原书第2版 中文版 笔记1

    2.窗口:esCreateWindow( esContext, ”test”, 320, 240, ES_WINDOW_RGB) 3.编译加载着色器: glCr

    OpenGL ES 2.0编程指南

    opengl es 2.0编程指南,比较透彻的讲解了2.0编程要点。顶点、片段着色器编程及相关属性。

    《OpenGL ES 2.0 编程指南 中文版》PDF

    《OpenGL ES 2.0 编程指南 中文版》

    OpenGL ES 2.0 and 3.0 编程指南(中英文)

    OpenGL ES 2.0 and 3.0 Programming Guide, 中英文;

Global site tag (gtag.js) - Google Analytics