一文掌握OpenGL的shader内置函数

OpenGL ES有大量的GLSL内置函数,包括:三角函数、指数函数、通用函数、浮点函数、几何函数、矩阵函数、矢量关系函数、纹理函数、原子函数、图像函数、插值函数等。

目录

一、三角函数

1、radians(degrees)

2、degrees(radians)

3、sin(angle)

4、cos(angle)

5、tan(angle)

二、指数函数

1、pow(x, y)

2、exp(x)

3、log(x)

4、sqrt(x)

三、通用函数

1、abs(x)

2、sign(x)

3、floor(x)

4、round(x)

5、ceil(x)

6、mod(x, y)

7、min(x, y)

8、max(x, y)

9、clamp(x, minVal, maxVal)

10、mix(x, y, a)

11、step(edge, x)

12、smoothstemp(edge0, edge1, x)

四、几何函数

1、length(x)

2、distance(p0, p1)

3、dot(x, y)

4、cross(vec3 x, vec3 y)

5、normalize(x)

五、矩阵函数

1、matrixCompMult(mat x, mat y)

2、outerProduct(vec3 a, vec3 b)

3、transpose(mat3 m)

4、inverse(mat3 m)

六、矢量关系函数

1、lessThan(vec x, vec y)

2、greaterThan(vec x, vec y)

3、equal(vec x, vec y)

4、any(bvec x)

5、all(bvec x)

七、整数运算函数

1、bitCount(value)

2、findLSB(value)

3、findMSB(value)

八、纹理函数

1、texture(gsampler2D sampler, vec2 P[,float bias])

2、textureLod(gsampler2D sampler, vec2 P, float lod)

3、textureG rad(gsampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy)

九、原子函数

1、atomicAdd(uint mem, uint data)

2、atomicAnd(uint mem, uint data)

3、atomicOr(uint mem, uint data)

4、atomicCompSwap(int mem, int compare, int data)

十、图像函数

1、imageSize(gimage2D image)

2、imageLoad()

3、imageStore()

十一、插值函数

1、interpolateAtCentroid(vec3 interpolant)

2、interpolateAtSample(vec3 interpolant, int sample)

3、interpolateAtOffset(vec3 interpolant, vec3 offset)


一、三角函数

1、radians(degrees)

把角度转为弧度,转换公式:弧度=(π/180) * degrees

2、degrees(radians)

把弧度转为角度,转换公式:角度(180/π) * radians

3、sin(angle)

正弦函数

4、cos(angle)

余弦函数

5、tan(angle)

正切函数

二、指数函数

1、pow(x, y)

x的y次方,x > 0, y >= 0

2、exp(x)

以e为底的指数函数

3、log(x)

以e为底的对数函数,x > 0

4、sqrt(x)

平方根函数,x >= 0

三、通用函数

1、abs(x)

求绝对值

2、sign(x)

符号函数。x>0时,返回值为1;x<0时,返回值为-1

3、floor(x)

向下取整,返回小于等于x的整数

4、round(x)

近似值取整,返回最接近x的整数,即四舍五入

5、ceil(x)

向上取整,返回大于等于x的整数

6、mod(x, y)

取模函数,返回x - y * (x/y)

7、min(x, y)

求x与y的较小值

8、max(x, y)

求x与y的较大值

9、clamp(x, minVal, maxVal)

求minVal与maxVal之间的数值,即min(max(x, minVal), maxVal)

10、mix(x, y, a)

x与y的混合,即x * (1- a) + y * a

11、step(edge, x)

阶跃函数。当x < edge时返回0,否则返回1

12、smoothstemp(edge0, edge1, x)

平滑阶跃函数。当x <= edge0且x >= edge1时,返回0。否则在[0, 1]区间执行Hermite插值(edge0 < x < edge1)

四、几何函数

1、length(x)

求矢量的长度,sqrt( x0 + x1 + … )

2、distance(p0, p1)

求两点距离,即length(p0 - p1)

3、dot(x, y)

x与y点乘,即x0 · y0 + x1 · y1 + …

4、cross(vec3 x, vec3 y)

求矢量x与y的叉乘,即(x1 · y2 - y1 · x2 , x2 · y0 - y2 · x0 , x0 · y1 - y0 · x1)

5、normalize(x)

归一化操作,即x / length(x)

五、矩阵函数

1、matrixCompMult(mat x, mat y)

矩阵x与y相乘

2、outerProduct(vec3 a, vec3 b)

向量a与b的外积

3、transpose(mat3 m)

矩阵的转置

4、inverse(mat3 m)

矩阵的反转

六、矢量关系函数

1、lessThan(vec x, vec y)

判断矢量x是否小于矢量y,返回bvec矢量

2、greaterThan(vec x, vec y)

判断矢量x是否大于矢量y,返回bvec矢量

3、equal(vec x, vec y)

判断矢量x与矢量y是否相等,返回bvec矢量

4、any(bvec x)

矢量x中任意数值为true,则返回true

5、all(bvec x)

矢量x中所有数值为true,则返回true

七、整数运算函数

1、bitCount(value)

返回二进制value中含有1的个数

2、findLSB(value)

返回二进制value的最低有效位

3、findMSB(value)

返回二进制value的最高有效位

八、纹理函数

1、texture(gsampler2D sampler, vec2 P[,float bias])

使用纹理坐标来查找绑定采样器的纹理

2、textureLod(gsampler2D sampler, vec2 P, float lod)

使用纹理坐标,结合lod(level-of-detail)来查找纹理

3、textureG rad(gsampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy)

使用纹理坐标,结合梯度来查找纹理

九、原子函数

1、atomicAdd(uint mem, uint data)

原子变量加运算

2、atomicAnd(uint mem, uint data)

原子变量逻辑与运算

3、atomicOr(uint mem, uint data)

原子变量逻辑或运算

4、atomicCompSwap(int mem, int compare, int data)

原子变量的比较交换。mem与compare比较,如果两者相等,那么data赋值给mem

十、图像函数

1、imageSize(gimage2D image)

计算图像的大小

2、imageLoad()

加载图像数据

3、imageStore()

存储图像数据

十一、插值函数

1、interpolateAtCentroid(vec3 interpolant)

在质心的位置进行插值

2、interpolateAtSample(vec3 interpolant, int sample)

在指定采样数的位置进行插值

3、interpolateAtOffset(vec3 interpolant, vec3 offset)

在指定偏移量的位置进行插值

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
掌握Ubuntu,您可以采取以下步骤: 1. 下载Ubuntu镜像:您可以从官方网站下载Ubuntu的最新版本。根据您的硬件架构选择合适的版本。 2. 创建启动U盘:使用免费的win32diskimager工具将下载的Ubuntu镜像烧录到U盘上。这样您就可以通过U盘启动安装Ubuntu。将U盘插入计算机,并按照工具的指示进行操作。 3. 安装Ubuntu:将启动U盘插入需要安装Ubuntu的计算机,重新启动计算机。在启动时,选择从U盘启动。按照屏幕上的提示进行Ubuntu的安装过程。您可以选择安装到硬盘上,或者选择试用Ubuntu而不进行实际安装。 4. 更新系统:在安装完成后,建议您更新系统以获取最新的补丁和软件包。打开终端并运行以下命令:sudo apt update && sudo apt upgrade 5. 安装必要的软件:根据您的需求,可以安装各种软件。例如,如果您需要进行深度学习开发,可以安装CUDA和PaddlePaddle。 6. 学习命令行操作:Ubuntu是一个基于Linux的操作系统,使用命令行是非常常见的。您可以学习一些基本的Linux命令,例如文件和目录操作、软件包管理等。 7. 探索图形界面:Ubuntu提供了直观的图形界面,您可以通过点击图标和菜单来执行各种操作。尝试打开不同的应用程序,了解它们的功能和用法。 通过以上步骤,您将能够快速上手并掌握Ubuntu操作系统。记得多练习和实践,以加深对Ubuntu的理解和熟练度。祝您成功!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐福记456

您的鼓励和肯定是我创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值