【文件属性】:
文件名称:着色语言的内置函数-pt100换算表
文件大小:20.23MB
文件格式:PDF
更新时间:2021-07-11 12:35:44
OpenGL ES
4.4 着色语言的内置函数
说明
上面的代码片段 可以理解为着色语 言 本身内建的,如果想要访问
gl_DepthRangeParameters 结构体内的内容,则只需要直接通过 uniform 的内建变量
gl_DepthRange 进行访问即可。
4.4 着色语言的内置函数
与其他高级语言类似,为了方便开发,OpenGL ES 着色语言中也提供了很多的内置函数。这
些函数大都已经被重载,一般具有 4 种变体,分别用来接收和返回 genType、genIType、genUType
和 genBType 类型的值。对于此 4 种变体具体情况如表 4-9 所列。
表 4-9 4 种变体及说明
变 体 类 型 说 明 变 体 类 型 说 明
genType float,vec2,vec3,vec4 genUType uint,uvec2,uvec3,uvec4
genIType int,ivec2,ivec3,ivec4 genBType bool,bvec2,bvec3,bvec4
说明
从表 4-9 中可以看出 genType、genIType、genUType 和 genBType 分别代表的是
浮点型系列、整型系列、无符号整型系列和布尔型系列。之所以要这样,是为了后
面讲解函数时方便,否则需要每种具体类型都列出,过于繁琐。
这些内置函数通常是以最优方式来实现的,有部分函数甚至由硬件直接支持,这提高了执行
效率。大部分内置函数同时适用于顶点着色器与片元着色器,但是也有部分内置函数只适用于顶
点着色器或者片元着色器。内置函数按照设计目的可以分为 3 个类别。
提供独特硬件功能的访问接口,如纹理采样系列的函数,这些函数用户是无法自己开发的。
着色语言通过提供特定内置函数对这些硬件功能进行封装,建立了用户调用这些硬件功能的接口。
简单的数学函数,如 abs(求绝对值)、floor(下取整)等。这些数学函数本身非常简单,
开发人员也可以自己开发,但可能由于对底层硬件的不了解,采用的实现方式很低效。而内置函
数是厂商根据硬件的特点用最高效的方式实现的,调用内置函数来完成这些简单的操作不但可以
提高开发效率还可以提高执行效率。
一些复杂的函数,如三角函数等,用户可以自己编写,但是编写过程特别繁琐,要用到很
多高等数学的知识。不但开发繁琐,可以想象效率也会很低。而当下的主流硬件往往都有进行这
些计算的指令,因此,对这些操作也提供了高效的内置函数。
4.4.1 角度转换与三角函数
角度转换与三角函数同时适用于顶点着色器与片元着色器,并且每个角度转换与三角函数都
有 4 种重载变体,具体情况如表 4-10 所列。
表 4-10 角度转换与三角函数
内置函数签名 说 明
genType radians (genType degrees)
此函数功能为将角度转换为弧度,即返回值 result=(π /180) * degrees,degrees
参数表示需要转换的角度
genType degrees (genType radians)
此函数功能为将弧度转换为角度,即返回值 result=(180/π )* radians,radians
参数表示需要转换的弧度