美文网首页
OPENGL ES着色语言内置功能

OPENGL ES着色语言内置功能

作者: blue_lights | 来源:发表于2021-09-04 09:15 被阅读0次

角度和三角函数

弧度

float radians(float degrees)

vec2 radians(vec2 degrees)

vec3 radians(vec3 degrees)

vec4 radians(vec4 degrees)

弧度函数转换为弧度。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,所有分量都分别从度数转换为弧度。

float degrees(float radians)

vec2 degrees(vec2 radians)

vec3 degrees(vec3 radians)

vec4 degrees(vec4 radians)

函数转换弧度度。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,每个分量都分别从弧度转换为度数。

正弦

float sin(float angle)

vec2 sin(vec2 angle)

vec3 sin(vec3 angle)

vec4 sin(vec4 angle)

函数返回以弧度表示的角度的正弦值。输入参数可以是浮动标量或浮动向量。如果是浮点向量,则为每个分量单独计算正弦值。

余弦

float cos(float angle)

vec2 cos(vec2 angle)

vec3 cos(vec3 angle)

vec4 cos(vec4 angle)

余弦函数返回以弧度表示的角度的余弦值。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,余弦是为每个分量单独计算的。

切线

float tan(float angle)vec2 tan(vec2 angle)vec3 tan(vec3 angle)vec4 tan(vec4 angle)

黄褐色函数返回以弧度表示的角度的正切值。输入参数可以是浮动标量或浮动向量。如果是浮点向量,则为每个分量单独计算切线。

反正弦

float asin(float x)

vec2 asin(vec2 x)

vec3 asin(vec3 x)

vec4 asin(vec4 x)

ASIN函数返回以弧度表示的角的反正弦值。它是正弦的反函数。输入参数可以是浮动标量或浮动向量。如果是浮点向量,则为每个分量单独计算反正弦。

反余弦

float acos(float x)

vec2 acos(vec2 x)

vec3 acos(vec3 x)

vec4 acos(vec4 x)

ACOS函数返回弧度表示的角度的反余弦。它是余弦的反函数。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,反余弦是为每个分量单独计算的。

反正切

float atan(float y_over_x)

vec2 atan(vec2 y_over_x)

vec3 atan(vec3 y_over_x)

vec4 atan(vec4 y_over_x)

ATAN函数返回以弧度表示的角的反正切值。它是切线的反函数。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,为每个分量单独计算反正切。

float atan(float y, float x)

vec2 atan(vec2 y, vec2 x)

vec3 atan(vec3 y, vec3 x)

vec4 atan(vec4 y, vec4 x)

atan函数也有两个参数的变体(在其他编程语言中通常称为 atan2)。对于具有笛卡尔坐标 (x, y) 的点,该函数返回具有极坐标 (r, θ) 的同一点的角度 θ。

指数函数

求幂

float pow(float x, float y)

vec2 pow(vec2 x, vec2 y)

vec3 pow(vec3 x, vec3 y)

vec4 pow(vec4 x, vec4 y)

pow函数返回x提升到y的力量。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

指数函数

float exp(float x)

vec2 exp(vec2 x)

vec3 exp(vec3 x)

vec4 exp(vec4 x)

EXP函数返回以x次方的常数e。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

自然对数

float log(float x)vec2 log(vec2 x)vec3 log(vec3 x)vec4 log(vec4 x)

日志函数返回功率到常数e必须升高到产生X。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

指数函数(以 2 为底)

float exp2(float x)

vec2 exp2(vec2 x)

vec3 exp2(vec3 x)

vec4 exp2(vec4 x)

EXP2函数返回2提高到x次方。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

对数(以 2 为底)

float log2(float x)

vec2 log2(vec2 x)

vec3 log2(vec3 x)

vec4 log2(vec4 x)

LOG2函数返回到2还有待提高,以产生x中的功率。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

平方根

float sqrt(float x)

vec2 sqrt(vec2 x)

vec3 sqrt(vec3 x)

vec4 sqrt(vec4 x)

SQRT函数返回x的平方根。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

平方根倒数

float inversesqrt(float x)

vec2 inversesqrt(vec2 x)

vec3 inversesqrt(vec3 x)

vec4 inversesqrt(vec4 x)

inversesqrt函数返回平方根倒数的x,即平方根的倒数。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

常用功能

绝对值

float abs(float x)

vec2 abs(vec2 x)

vec3 abs(vec3 x)

vec4 abs(vec4 x)

绝对函数返回x的绝对值,即,X当x是正数或零和-x为负x。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

标志

float sign(float x)

vec2 sign(vec2 x)

vec3 sign(vec3 x)

vec4 sign(vec4 x)

符号函数返回时1.0 x是正的,当0.0 x是零和-1.0当x为负。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

地面

float floor(float x)

vec2 floor(vec2 x)

vec3 floor(vec3 x)

vec4 floor(vec4 x)

floor函数返回的最大整数数小于或等于x。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

旁注:尽管运算结果是整数,但返回值是浮点标量或浮点向量类型。

ceil:

float ceil(float x)

vec2 ceil(vec2 x)

vec3 ceil(vec3 x)

vec4 ceil(vec4 x)

ceil函数返回大于或等于x的最小的数。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

旁注:尽管运算结果是整数,但返回值是浮点标量或浮点向量类型。

小数部分

float fract(float x)

vec2 fract(vec2 x)

vec3 fract(vec3 x)

vec4 fract(vec4 x)

FRACT函数返回x的分数部分,即,X减去地板(X)。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

模数

float mod(float x, float y)

vec2 mod(vec2 x, vec2 y)

vec3 mod(vec3 x, vec3 y)

vec4 mod(vec4 x, vec4 y)

MOD函数返回x减去y和地板(X / Y)的乘积。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

旁注:如果 x 和 y 是整数,则返回值是 x 除以 y 的余数,正如预期的那样。

float mod(float x, float y)

vec2 mod(vec2 x, float y)

vec3 mod(vec3 x, float y)

vec4 mod(vec4 x, float y)

mod函数还有一个变体,其中第二个参数始终是一个浮动标量。

最低限度

float min(float x, float y)

vec2 min(vec2 x, vec2 y)

vec3 min(vec3 x, vec3 y)

vec4 min(vec4 x, vec4 y)

函数返回两个参数中较小的。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

float min(float x, float y)

vec2 min(vec2 x, float y)

vec3 min(vec3 x, float y)

vec4 min(vec4 x, float y)

min函数还有一个变体,其中第二个参数始终是浮动标量。

最大值

float max(float x, float y)

vec2 max(vec2 x, vec2 y)

vec3 max(vec3 x, vec3 y)

vec4 max(vec4 x, vec4 y)

最大值函数返回两个参数的大。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

float max(float x, float y)vec2 max(vec2 x, float y)vec3 max(vec3 x, float y)vec4 max(vec4 x, float y)

max函数还有一个变体,其中第二个参数始终是浮动标量。

clamp:

float clamp(float x, float minVal, float maxVal)

vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal)

vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal)

vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal)

clamp函数返回x,如果它比MINVAL比MAXVAL更大和更小。如果 x 小于 minVal,则返回 minVal。如果 x 大于 maxVal,则返回 maxVal。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

float clamp(float x, float minVal, float maxVal)

vec2 clamp(vec2 x, float minVal, float maxVal)

vec3 clamp(vec3 x, float minVal, float maxVal)

vec4 clamp(vec4 x, flfloat minVal, float maxVal)

clamp函数还有一个变体,其中第二个和第三个参数始终是浮动标量。

混合

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

vec2 mix(vec2 x, vec2 y, vec2 a)

vec3 mix(vec3 x, vec3 y, vec3 a)

vec4 mix(vec4 x, vec4 y, vec4 a)

mix函数返回的线性混合的x和y的,即x的产物和(1 - A)加y和A中的产物。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

float mix(float x, float y, float a)vec2 mix(vec2 x, vec2 y, float a)vec3 mix(vec3 x, vec3 y, float a)vec4 mix(vec4 x, vec4 y, float a)

还有一个混合函数的变体,其中第三个参数始终是一个浮动标量。

step:

float step(float edge, float x)

vec2 step(vec2 edge, vec2 x)

vec3 step(vec3 edge, vec3 x)

vec4 step(vec4 edge, vec4 x)

如果x小于边缘较小,否则1.0函数返回0.0。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

float step(float edge, float x)vec2 step(float edge, vec2 x)vec3 step(float edge, vec3 x)vec4 step(float edge, vec4 x)

还有一种阶跃函数的变体,其中边缘参数始终是一个浮动标量。

平滑步

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

vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x)

vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x)

vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x)

smoothstep函数返回0.0,如果x大于EDGE0更小和1.0如果x大于EDGE1大。否则,使用 Hermite 多项式在 0.0 和 1.0 之间插入返回值。输入参数可以是浮动标量或浮动向量。在浮点向量的情况下,操作是按组件完成的。

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

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

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

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

还存在平滑步长函数的变体,其中 edge0 和 edge1 参数始终是浮动标量。

几何函数

长度

float length(float x)

float length(vec2 x)

float length(vec3 x)

float length(vec4 x)

length函数返回由欧几里德范数所定义的载体,即平方分量的总和的平方根的长度。输入参数可以是浮动标量或浮动向量。在浮动标量的情况下,长度函数是微不足道的,并返回绝对值。

distance:

float distance(float p0, float p1)

float distance(vec2 p0, vec2 p1)

float distance(vec3 p0, vec3 p1)

float distance(vec4 p0, vec4 p1)

distance函数返回两个点之间的距离。两点的距离是向量 d = p0 - p1 的长度,它从 p1 开始指向 p0。输入参数可以是浮动标量或浮动向量。在浮动标量的情况下,距离函数是微不足道的,并返回 d 的绝对值。

点积

float dot(float x, float y)

float dot(vec2 x, vec2 y)

float dot(vec3 x, vec3 y)

float dot(vec4 x, vec4 y)

函数返回两个输入参数的点积,即,逐个分量的乘积之和。如果 x 和 y 相同,则点积的平方根等于向量的长度。输入参数可以是浮动标量或浮动向量。在浮动标量的情况下,点函数是微不足道的,它返回 x 和 y 的乘积。

交叉产品

vec3 cross(vec3 x, vec3 y)

交叉函数返回两个输入参数的叉积,即载体,其是垂直于包含x和y的平面,并且具有大小等于平行四边形的面积,x和y跨度。输入参数只能是 3 分量浮动向量。叉积相当于向量的长度乘以 x 和 y 之间(较小)角度的正弦的乘积。

归一化

float normalize(float x)

vec2 normalize(vec2 x)

vec3 normalize(vec3 x)

vec4 normalize(vec4 x)

归一化函数返回与长度1.0的载体,其是平行于x,即,X由其长度划分。输入参数可以是浮动标量或浮动向量。在浮动标量的情况下, normalize 函数很简单并返回 1.0。

float faceforward(float N, float I, float Nref)

vec2 faceforward(vec2 N, vec2 I, vec2 Nref)

vec3 faceforward(vec3 N, vec3 I, vec3 Nref)

vec4 faceforward(vec4 N, vec4 I, vec4 Nref)

所述faceforward函数返回一个向量,在相同的方向作为参考矢量点。该函数具有三个浮动标量或浮点向量类型的输入参数:N,要定向的向量,I,入射向量和 Nref,参考向量。如果 I 和 Nref 的点积小于零,则返回值为 N。否则返回 -N。

反映

float reflect(float I, float N)

vec2 reflect(vec2 I, vec2 N)

vec3 reflect(vec3 I, vec3 N)

vec4 reflect(vec4 I, vec4 N)

反映函数返回一个向量,在反射方向的点。该函数有两个浮动标量或浮动向量类型的输入参数:I,入射向量,N,反射面的法向量。

旁注:要获得所需的结果,必须对向量 N 进行归一化。反射向量总是与入射向量具有相同的长度。由此可知,如果 N 和 I 都被归一化,则反射向量被归一化。

折射

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

vec2 refract(vec2 I, vec2 N, float eta)

vec3 refract(vec3 I, vec3 N, float eta)

vec4 refract(vec4 I, vec4 N, float eta)

折射函数返回一个向量,在折射的方向点。该函数有两个浮动标量或浮动向量类型的输入参数和一个浮动标量类型的输入参数:I,入射向量,N,折射表面的法向向量,和 eta,折射率比。

旁注:为了获得所需的结果,必须对向量 I 和 N 进行归一化。

矩阵函数

分量矩阵乘法

mat2 matrixCompMult(mat2 x, mat2 y)

mat3 matrixCompMult(mat3 x, mat3 y)

mat4 matrixCompMult(mat4 x, mat4 y)

所述matrixCompMult函数返回从逐个分量相乘而得到的矩阵。该函数有两个浮点矩阵类型的输入参数,并返回一个相同类型的矩阵。返回矩阵的索引计算如下: z[i][j] = x[i][j] * y[i][j]

旁注:这不是线性代数中已知的矩阵乘法。要获得“正常”矩阵乘法,使用普通乘法运算符符号:z = x * y

向量关系函数

小于比较

bvec2 lessThan(vec2 x, vec2 y)b

vec3 lessThan(vec3 x, vec3 y)b

vec4 lessThan(vec4 x, vec4 y)b

vec2 lessThan(ivec2 x, ivec2 y)b

vec3 lessThan(ivec3 x, ivec3 y)b

vec4 lessThan(ivec4 x, ivec4 y)

每种不超过函数返回一个布尔矢量在X [I] <值Y [i]的形式的逐个分量的比较结果。该函数有两个浮点向量或有符号整数向量类型的输入参数。

小于或等于比较

vec2 lessThanEqual(vec2 x, vec2 y)b

vec3 lessThanEqual(vec3 x, vec3 y)b

vec4 lessThanEqual(vec4 x, vec4 y)b

vec2 lessThanEqual(ivec2 x, ivec2 y)b

vec3 lessThanEqual(ivec3 x, ivec3 y)b

vec4 lessThanEqual(ivec4 x, ivec4 y)

所述lessThanEqual函数返回一个布尔矢量作为x的形式的逐个分量的比较结果[I] <=数据保存-HTML的节点=“真”值Y [i]。该函数有两个浮点向量或有符号整数向量类型的输入参数。

大于比较

bvec2 greaterThan(vec2 x, vec2 y)b

vec3 greaterThan(vec3 x, vec3 y)b

vec4 greaterThan(vec4 x, vec4 y)b

vec2 greaterThan(ivec2 x, ivec2 y)b

vec3 greaterThan(ivec3 x, ivec3 y)b

vec4 greaterThan(ivec4 x, ivec4 y)

所述GREATERTHAN函数返回一个布尔矢量作为x的形式[I]>值Y [i]一个逐个分量的比较结果。该函数有两个浮点向量或有符号整数向量类型的输入参数。

大于等于比较

bvec2 greaterThanEqual(vec2 x, vec2 y)b

vec3 greaterThanEqual(vec3 x, vec3 y)b

vec4 greaterThanEqual(vec4 x, vec4 y)b

vec2 greaterThanEqual(ivec2 x, ivec2 y)b

vec3 greaterThanEqual(ivec3 x, ivec3 y)b

vec4 greaterThanEqual(ivec4 x, ivec4 y)

所述greaterThanEqual函数返回一个布尔矢量在X [I]> = Y [I]的形式的逐个分量的比较结果。该函数有两个浮点向量或有符号整数向量类型的输入参数。

平等比较

bvec2 equal(vec2 x, vec2 y)b

vec3 equal(vec3 x, vec3 y)b

vec4 equal(vec4 x, vec4 y)b

vec2 equal(ivec2 x, ivec2 y)b

vec3 equal(ivec3 x, ivec3 y)b

vec4 equal(ivec4 x, ivec4 y)

等于函数返回一个布尔矢量在X [I] = Y [I]的形式的逐个分量的比较结果。该函数有两个浮点向量或有符号整数向量类型的输入参数。

不等比较

vec2 notEqual(vec2 x, vec2 y)b

vec3 notEqual(vec3 x, vec3 y)b

vec4 notEqual(vec4 x, vec4 y)b

vec2 notEqual(ivec2 x, ivec2 y)b

vec3 notEqual(ivec3 x, ivec3 y)b

vec4 notEqual(ivec4 x, ivec4 y)

所述notEqual函数返回一个布尔矢量作为x的形式[I]一个逐个分量的比较结果!= Y [i]中。该函数有两个浮点向量或有符号整数向量类型的输入参数。

任何评价

bool any(bvec2 x)

bool any(bvec3 x)

bool any(bvec4 x)

任何函数返回一个布尔值作为评价所述输入矢量的任何分量是否为TRUE的结果。该函数有一个布尔向量类型的输入参数。

所有评价

bool all(bvec2 x)

bool all(bvec3 x)

bool all(bvec4 x)

所有函数返回一个布尔值作为评价的结果,输入矢量的所有分量是否TRUE。该函数有一个布尔向量类型的输入参数。

不评价

vec2 not(bvec2 x)b

vec3 not(bvec3 x)b

vec4 not(bvec4 x)

所述函数返回一个布尔矢量作为逐个分量逻辑补运算的结果。该函数有一个布尔向量类型的输入参数。

纹理查找功能

2D 纹理查找

vec4 texture2D(sampler2D sampler, vec2 coord)

vec4 texture2D(sampler2D sampler, vec2 coord, float bias)

所述的Texture2D函数返回一个纹理像素,纹理对于给定的坐标即(彩色)值。该函数有一个类型为 sampler2D 的输入参数和一个类型为 vec2 的输入参数:采样器,纹理绑定到的统一,以及坐标,要查找的纹素的二维坐标。

有一个可选的 float 类型的第三个输入参数:bias。在使用 mipmap 计算纹理的适当细节级别后,在执行实际纹理查找操作之前添加偏差。

旁注:在 iOS 设备上,纹理查找功能仅在片段着色器中可用。

立方体贴图纹理查找

vec4 textureCube(samplerCube sampler, vec3 coord)

vec4 textureCube(samplerCube sampler, vec3 coord, float bias)

所述textureCube函数返回一个纹理像素,纹理对于给定的坐标即(彩色)值。该函数有一个类型为 samplerCube 的输入参数和一个类型为 vec3 的输入参数:采样器,纹理绑定到的统一,以及坐标,要查找的纹素的 3 维坐标。

有一个可选的 float 类型的第三个输入参数:bias。在使用 mipmap 计算纹理的适当细节级别后,在执行实际纹理查找操作之前添加偏差。

相关文章

  • OPENGL ES着色语言内置功能

    角度和三角函数 弧度 float radians(float degrees) vec2 radians(vec2...

  • OpenGL ES 3.0 subroutine问题

    本文档只是测试OpenGL ES着色器语言是否支持subroutine功能。结论是,OpenGL着色器语言支持,O...

  • OpenGL ES 3.0(二)着色器语言

    OpenGL ES 着色器语言:OpenGL ES Shading Language,下面简写为 ES SL 或 ...

  • 着色器

    着色器 OpenGL ES着色器语言之变量和数据类型(一) 我的OpenGL ES学习之路(一):GLSL着色器语言

  • OpenGL ES学习之着色器语言

    着色器语言 Open GL ES 着色器语言是一种高级的图形编辑语言,主要特性: OpenGL ES着色器语言是一...

  • OpenGL学习之着色器语言

    着色器语言 Open GL ES 着色器语言是一种高级的图形编辑语言,主要特性: OpenGL ES着色器语言是一...

  • OpenGL ES 图形管线解析

    OpenGL ES 3.0实现了具有可编程着色功能的图形管线,如下图所示顶点着色器和片元着色器是OpenGL ES...

  • OpenGL ES 图形管线解析

    OpenGL ES 3.0实现了具有可编程着色功能的图形管线,如下图所示顶点着色器和片元着色器是OpenGL ES...

  • 3d开发之opengl着色语言

    opengl着色语言基于c++,又完美的支持向量和矩阵的各种操作,拥有大量的内置函数来提供丰富的功能,opengl...

  • Opengl es shading language

    着色器语言学习推荐:3.0文档,对应opengl es 3.0(默认1.0 对应opengl es 2.0) 概述...

网友评论

      本文标题:OPENGL ES着色语言内置功能

      本文链接:https://www.haomeiwen.com/subject/zetrwltx.html