位置: 编程技术 - 正文

GLSL内建函数(glsl 函数)

编辑:rootadmin

推荐整理分享GLSL内建函数(glsl 函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:gcc内建函数,gcc内建函数,glsl include,gls函数用法,glsl内建变量,glsl内建变量,glsl内置函数,glsl内置函数,内容如对您有帮助,希望把文章链接给更多的朋友!

OpenGL ES着色语言为标量和向量操作定义了一套内建便利函数。有些内建函数可以用在多个类型的着色器中,有些是针对固定硬件的,所以这部分只能用在某个特定的着色器上。

内建函数基本上可以分为一下三类:

(1)它们使用一些简便的方式提供必要的硬件功能,如材质贴图。这些函数单独通过着色器是无法模拟出来的。

(2)它们展示了一些可以常简单的写入的繁琐操作(clamp, mix等),但是这些操作非常普遍,并且提供直接对硬件的支持。对于编译器来说,将表达式映射到复杂的装配线指令上是非常困难的。

(3)它们提供了对图形硬件的操作,并且在适当时候进行加速。三角函数就是一个很好的例子。

有些函数名称和常见的C库函数类&#;,但是它们支持向量的输入和更多的传统标量输入。

建议应用程序尽量使用内建函数而不是在着色器中实现相同的计算,因为内建函数是经过最大优化的(如,有些内建函数是直接操作硬件的)。

用户定义的代码可以重载内建函数,但最好不要重新定义它们。

内建函数的输入参数(和相应的输出的参数)可以是float, vec2, vec3, vec4。对于函数的任何特定应用,实际的类型必须和所有的参数和返回&#;相同。就像mat,必须为mat2, mat3, mat4.

参数和返回&#;的精度修饰符是隐藏的,对于材质函数,返回类型的精度必须和采样器类型匹配。

uniform lowp sampler2D sampler;highp vec2 coord;...lowp vec4 col = texture2D (sampler, coord); // texture2D 返回类型的精度为lowp

其他内建函数形参的精度修饰是没有任何关联的。内建函数的调用将返回输入参数的最高精度。

1 角度和三角函数

标识为angle的函数参数假定以弧度为单位。这些函数不可能出现被0除的情况,如果被除数为0,结果是未定义的。

radian函数是将角度转换为弧度,degrees函数是将弧度转换为角度。sin, cos, tan都是标准的三角函数。asin, acos, atan是反三角函数。genType有点像面向对象中泛型,即如果genType是float型的,那么

genType pow (genType x, genType y)

就变成了:

float pow (float x, float y)

同理,如果genType是int型的,那么就变成了:

int pow (int x, int y);

2 指数函数

(1)genType pow (genType x, genType y)

x的y次方。如果x小于0,结果是未定义的。同样,如果x=0并且y<=0,结果也是未定义的。使用时应特别注意。

(2)genType exp (genType x)

e的x次方

(3)genType log (genType x)

计算满足x等于e的y次方的y的&#;。如果x的&#;小于0,结果是未定义的。

(4)genType exp2 (genType x)

计算2的x次方

(5)genType log2 (genType x)

计算满足x等于2的y次方的y的&#;。如果x的&#;小于0,结果是未定义的。

(6)genType sqrt (genType x)

计算x的开方。如果x小于0,结果是未定义的。

(7)genType inversesqrt (genType x)

计算x的开方之一的&#;,如果x小于等于0,结果是未定义的。

3 常用函数

(1)genType abs (genType x)

返回x的绝对&#;

(2)genType sign (genType x)

如果x>0,返回1.0;如果x=0,返回0,如果x<0,返回-1.0

(3)genType floor (genType x)

返回小于等于x的最大整数&#;

(4)genType ceil (genType x)

返回大于等于x的最小整数&#;

(5)genType fract (genType x)

返回x-floor(x),即返回x的小数部分

(6)genType mod (genType x, float y)、genType mod (genType x, genType y)

返回x – y * floor (x/y),即求模计算%

(7)genType min (genType x, genType y),genType min (genType x, float y)

返回x和y的&#;较小的那个&#;。

(8)genType max (genType x, genType y),genType max (genType x, float y)

返回x和y的&#;较大的那个&#;。

GLSL内建函数(glsl 函数)

(9)genType clamp (genType x, genType minVal, genType maxVal)、genType clamp (genType x, float minVal, float maxVal)

clamp翻译为夹具,就叫夹具函数吧,这个函数是什么意思呢?看看解释的意思是:获取x和minVal之间较大的那个&#;,然后再拿较大的那个&#;和最后那个最大的&#;进行比较然后获取较小的那个,意思就明白了,clamp实际上是获得三个参数中大小处在中间的那个&#;。函数有个说明:如果minVal > minMax的话,函数返回的结果是未定的。也就是说x的&#;大小没有限制,但是minval的&#;必须比maxVal小。

()genType mix (genType x, genType y, genType a)、genType mix (genType x, genType y, float a)

返回线性混合的x和y,如:x⋅(1−a)&#;y⋅a

()genType step (genType edge, genType x),genType step (float edge, genType x)

如果x < edge,返回0.0,否则返回1.0

()genType smoothstep (genType edge0,genType edge1,genType x),genType smoothstep (float edge0,float edge1,genType x)

如果x <= edge0,返回0.0 ;如果x >= edge1 返回1.0;如果edge0 < x < edge1,则执行0~1之间的平滑埃尔米特差&#;。如果edge0 >= edge1,结果是未定义的。

函数图像:

4 几何函数

(1)float length (genType x)

返回向量x的长度

(2)float distance (genType p0, genType p1)

计算向量p0,p1之间的距离

(3)float dot (genType x, genType y)

向量x,y之间的点积

(4)vec3 cross (vec3 x, vec3 y)

向量x,y之间的叉积

(5)genType normalize (genType x)

标准化向量,返回一个方向和x相同但长度为1的向量

(6)genType faceforward(genType N, genType I, genType Nref)

如果Nref和I的点积小于0,返回N;否则,返回-N;

(7)genType reflect (genType I, genType N)

返回反射向量

(8)genType refract(genType I, genType N,float eta)

返回折射向量

5 矩阵函数

(1)mat matrixCompMult (mat x, mat y)

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

6 向量相关函数

相关或相等的操作符(<, <=, >, >=, ==, !=)被定义(或保留),返回一个标量布尔&#;。下面, “bvec” 是表示bvec2, bvec3, or bvec4的占位符, “ivec”是ivec2, ivec3, or ivec4的占位符, “vec” 是vec2, vec3, or vec4的占位符. 在任何情况下,输入和返回&#;向量的长度必须匹配。

(1)lessThan

比较x < y.

(2)lessThanEqual

比较x<=y

(3)greaterThan

比较x>y

(4)greaterThanEqual

比较x>=y

(5)equal

比较x==y

(6)notEqual

比较x!=y

(7)bool any(bvec x)

如果向量x的任何组件为true,则结果返回true。

(8)bool all(bvec x)

如果向量x的所有组件均为true,则结果返回true。

(9)bvec not(bvec x)

返回向量x的互补矩阵

7 材质查找函数

纹理(材质)查找函数对于定点着色器和片元着色器都适用。然而,定点着色器的细节级别并不是通过固定功能计算的,所以顶点着色器和片元着色器纹理查找之间还是有一些差别的。一下函数是通过采样器访问纹理,和使用OpenGL ES API是一样的。纹理属性如尺寸,像素&#;式,维数,过滤方法,纹理映射匹配数,深度比较等等在OpenGL ES API中都有定义。

在下面的函数中,bias参数对于片元着色器来说是可选的。但在定点着色器中不可使用。对于片元着色器,如果使用了bias这个参数,它被加到优先细节的计算级别中来执行纹理访问操作。如果bias没有使用,那么实现将自动选择一个默认级别。对于非纹理映射的纹理,纹理是直接被使用的。如果是纹理映射的,并且在片元着色器中执行,那么使用LOD来进行纹理查找。如果是纹理映射的,并且在顶点着色器中执行,那么使用的是基本纹理。

以Lod结尾的内建函数只能用在顶点着色器中,在带有Lod的函数中,lod参数直接用来表示细节级别。

8 片元处理函数

片元处理函数只有在片元语言中才有,但在GLSL ES中没有片元处理函数。

部分内容转载地址:

MFC+OPENGL的机械加工仿真程序(1) 这个程序一直做做停停,所以把里面的关键部分总结一下,以免接着做的时候忘了....现在程序可以动态仿真加工了,这一篇先写在MFC中实现OpengGL动画。

关于混合(Blend)和浮点纹理的一件小事 最近在写一个系统仿真程序,需要尽可能真实地模拟人因瞳孔而产生的聚焦效果。我不知道游戏里的景深效果一般是怎么做的,不过猜测应该是使用深

用Quadro卡带Geforce卡实现非SLI多显卡多显示器协同绘制 核弹厂为了卖显卡真是无所不用其极。当然人家号称Geforce就是用来玩游戏的,Quadro才适合更高端的工作。可是如果我只是用来做三维场景绘制,你Quadro

标签: glsl 函数

本文链接地址:https://www.jiuchutong.com/biancheng/369545.html 转载请保留说明!

上一篇:OpenGL ES 2.0教程:你的第一个三角形(1)(opengl opengl es)

下一篇:关于混合(Blend)和浮点纹理的一件小事(关于混合基金投资风险以下表述正确的是)

  • 应纳税额与应纳税所得额的比率
  • 本月累计专项扣款怎么算
  • 个税什么情况可以抵扣
  • 公司汽车上牌费入什么科目
  • 购进生产设备的会计分录
  • 其他业务支出是
  • 商品明细分类账怎么做
  • 计提长期债券利息分录怎么做
  • 固定资产投资转化为gdp比例
  • 应纳税调增调减会计分录
  • 银行承兑到期之前怎么兑现
  • 企业自建房转让如何交土地增值税
  • 营改增后受托代销手续费税率是多少?
  • 投资者减除费用可以填0吗
  • 以前年度损益调整贷方余额表示什么
  • 外贸出口支付方式
  • 金蝶软件入库
  • 填写报关单需要什么资料
  • 大巴车票抵扣税率
  • 员工把发票丢了怎么处理
  • 个人可以做代理吗
  • 存货跌价准备是谁的备抵账户
  • 合作社实际没有自产自销,但税务方面怎么可以提供证明
  • 公司给客户报销费用可以吗
  • 资产减值损失在哪个表
  • 公司所有费用都让一人报销
  • php 读取文本文件
  • 销售成本属于成本吗
  • 企业收入的具体表现
  • 酒店购进布草可直接确认为成本吗
  • 冰上的卷羽鹈鹕,希腊凯尔基尼湖 (© Guy Edwardes/Minden Pictures)
  • Chrome谷歌浏览器网页
  • 什么情况下可以领取失业保险金
  • 高新技术企业研发费比例
  • 个体户对公账户的钱怎么取出来
  • 北极光的征兆
  • “从零开始”
  • 如何用java写接口
  • 用php写个简单的编程
  • 命令压缩文件
  • 坏账损失计入损益表
  • 绿化租赁合同要交印花税吗
  • 新公司财务需要哪些东西
  • 哪些费用专票是免税的
  • 在建工程什么时候结转
  • 股东每年怎么分红
  • 视同销售的几种情况都有什么?
  • 小规模纳税人企业所得税2023
  • 土增清算可以扣除项目
  • 公司注销未认证怎么处理
  • 债权人和债务人的区别
  • 计提工资时个税怎么处理
  • 合伙企业与公司相比,有什么优势呢?
  • 无发票入账违反什么规定
  • 未分配利润可以转盈余公积吗
  • 企业享受所得税免税政策
  • 建筑企业人工费计入什么科目
  • 企业以非货币资产交换方式取得的长期股权投资
  • mysql5.7版本下载
  • 如何确定我的学生学到了问题,尤其是核心素养方面
  • linux中less和more
  • linux系统查看磁盘io
  • 苹果mac系统怎么更新
  • sgmain.exe - sgmain是什么进程 有何作用
  • 在centos7中,一般用( )命令来查看网络接口的状态
  • yum源有什么用
  • win7系统升级win10教程
  • 电脑中毒蓝屏了怎么办修复
  • win7系统怎么锁定屏幕
  • kotlin开发教程
  • json解析 java
  • shell发送报文
  • 纯css实现轮播图
  • 粒子form
  • app录音功能开发
  • 用python怎么写字
  • scrapy爬虫教程
  • 比亚迪车载物联网卡
  • 税务登记成功后在哪里查询
  • 长途汽车车次号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设