Radians
示例 :
radians(360);
radians(vec2(360,90));
//PI
//vec2(PI,PI/4)
语法 :
float radians(float degrees)
vec2 radians(vec2 degrees)
vec3 radians(vec3 degrees)
vec4 radians(vec4 degrees)
Degrees
示例 :
degrees(PI);
//360
语法 :
float degrees(float radians)
vec2 degrees(vec2 radians)
vec3 degrees(vec3 radians)
vec4 degrees(vec4 radians)
Sine
示例 :
sin(PI/2);
//1
语法 :
float sin(float angle)
vec2 sin(vec2 angle)
vec3 sin(vec3 angle)
vec4 sin(vec4 angle)
Cosine
示例 :
cos(PI/2);
//0
语法 :
float cos(float angle)
vec2 cos(vec2 angle)
vec3 cos(vec3 angle)
vec4 cos(vec4 angle)
Tangent
示例 :
tan(PI/4);
//1
语法 :
float tan(float angle)
vec2 tan(vec2 angle)
vec3 tan(vec3 angle)
vec4 tan(vec4 angle)
Arcsine
示例 :
asin(1);
//PI/2
语法 :
float asin(float angle)
vec2 asin(vec2 angle)
vec3 asin(vec3 angle)
vec4 asin(vec4 angle)
Arccosine
示例 :
acos(0);
//PI/2
语法 :
float acos(float angle)
vec2 acos(vec2 angle)
vec3 acos(vec3 angle)
vec4 acos(vec4 angle)
Arctangent
示例 :
atan(1);
//PI/4
语法 :
//第二象限 (b>0, a>0)或 第三象限(b>0, a<0)
float atan(float y_over_x)
vec2 atan(vec2 y_over_x)
vec3 atan(vec3 y_over_x)
vec4 atan(vec4 y_over_x)
//第一象限 (b>0, a>0)或 第四象限(b>0, a<0)
float atan(float y, float x)
vec2 atan(vec2 y, vec2 x)
vec3 atan(vec3 y, vec3 x)
vec4 atan(vec4 y, vec4 x)
pow
示例 :
pow(2,3);
// 2^3 = 8
语法 :
float pow(float x, float y)
vec2 pow(vec2 x, vec2 y)
vec3 pow(vec3 x, vec3 y)
vec4 pow(vec4 x, vec4 y)
exp
示例 :
exp(4);
//54.59815003314423
语法 :
float exp(float x)
vec2 exp(vec2 x)
vec3 exp(vec3 x)
vec4 exp(vec4 x)
//e^x
exp2
示例 :
exp2(4);
//16
语法 :
float exp2(float x)
vec2 exp2(vec2 x)
vec3 exp2(vec3 x)
vec4 exp2(vec4 x)
//2^x
log
示例 :
log(4);
//1.3862943611198906
语法 :
float log(float x)
vec2 log(vec2 x)
vec3 log(vec3 x)
vec4 log(vec4 x)
//log(x) = ln(x) = y)
//e^y=x
log2
示例 :
log(4);
//2
语法 :
float log2(float x)
vec2 log2(vec2 x)
vec3 log2(vec3 x)
vec4 log2(vec4 x)
//log2(x) = y)
//2^y=x)
sqrt
示例 :
sqrt(4);
// 2
语法 :
float sqrt(float x)
vec2 sqrt(vec2 x)
vec3 sqrt(vec3 x)
vec4 sqrt(vec4 x)
√x
inversesqrt
示例 :
inversesqrt(4);
//0.5
语法 :
float inversesqrt(float x)
vec2 inversesqrt(vec2 x)
vec3 inversesqrt(vec3 x)
vec4 inversesqrt(vec4 x)
1/√x
abs
示例 :
abs(-4);
// 4
语法 :
float abs(float x)
vec2 abs(vec2 x)
vec3 abs(vec3 x)
vec4 abs(vec4 x)
//|x|
Sign
示例 :
Sign(-4);
// -1;
语法 :
float sign(float x)
vec2 sign(vec2 x)
vec3 sign(vec3 x)
vec4 sign(vec4 x)
//x/|x|
Floor
示例 :
floor(1.1);
floor(-1.1);
//1
//-2
语法 :
float floor(float x)
vec2 floor(vec2 x)
vec3 floor(vec3 x)
vec4 floor(vec4 x)
Ceil
示例 :
ceil(1.1);
ceil(-1.1);
//2
//-1
语法 :
float ceil(float x)
vec2 ceil(vec2 x)
vec3 ceil(vec3 x)
vec4 ceil(vec4 x)
Fractional
示例 :
fract(1.1);
fract(-1.1);
//0.1
//0.9
语法 :
float fract(float x)
vec2 fract(vec2 x)
vec3 fract(vec3 x)
vec4 fract(vec4 x)
//y = x - floor(x).
Modulo
示例 :
mod(3,1.2);
//2
语法 :
float mod(float x, float y)
vec2 mod(vec2 x, vec2 y)
vec3 mod(vec3 x, vec3 y)
vec4 mod(vec4 x, vec4 y)
//return floor(x/y);
Minimum
示例 :
min(3,1);
//1
语法 :
float min(float x, float y)
vec2 min(vec2 x, vec2 y)
vec3 min(vec3 x, vec3 y)
vec4 min(vec4 x, vec4 y)
Maximum
示例 :
max(3,1);
//3
语法 :
float max(float x, float y)
vec2 max(vec2 x, vec2 y)
vec3 max(vec3 x, vec3 y)
vec4 max(vec4 x, vec4 y)
Clamp
示例 :
clamp(0,1,3);
clamp(2,1,3);
clamp(4,1,3);
//1
//2
//3
语法 :
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)
//当minVal>x return minVal
//当maxVal<x return maxVal
//否则 return x
Mix
示例 :
mix(5,10,0.5);
mix(5,10,1);
//7.5
//10
语法 :
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)
//x*(1-a)+y*a 线性混合
Step
示例 :
step(1 , 2);
step(3 , 2);
//1
//0
语法 :
float step(float edge, float x)
vec2 step(vec2 edge, vec2 x)
vec3 step(vec3 edge, vec3 x)
vec4 step(vec4 edge, vec4 x)
//edge>x?0:1
Smoothstep
示例 :
smoothstep(1 , 2,0.5);
smoothstep(1 , 2,3);
smoothstep(1 , 2,1.3);
//0
//1
//0~1之间平滑
语法 :
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)
//当edge0 >x return 0
//当edge1 <1 return 1
//否则使用Hermite polynomials 在0~1之间插值
Length
示例 :
length(3);
length(vec2(3,4));
//3
//5
语法 :
float length(float x)
float length(vec2 x)
float length(vec3 x)
float length(vec4 x)
//返回各组件平方和之和的平方根
Distance
示例 :
distance(3,4);
distance(vec2(1,1),vec2(4,5));
//1
//5
语法 :
float distance(float p0, float p1)
float distance(vec2 p0, vec2 p1)
float distance(vec3 p0, vec3 p1)
float distance(vec4 p0, vec4 p1)
//returns the distance between two points
Dot
示例 :
dot(3,4);
dot(vec2(2,3),vec(,3,4))
//1
//5
语法 :
float dot(float p0, float p1)
float dot(vec2 p0, vec2 p1)
float dot(vec3 p0, vec3 p1)
float dot(vec4 p0, vec4 p1)
//p0x*p1x+p0y*p1y + ...
Cross
示例 :
cross(vec3(1,0,0),vec3(0,0,1));
//vec3(vec3(0,1,0));
语法 :
vec3 cross(vec3 p0, vec3 p1)
//vec3(p0y*p1z-p0z*p1y,p0z*p1x-p0x*p1z,p0x*p1y-p0y*p1x)
//向量叉积
//垂直于p0,p1所在平面的向量,大小为p0,p1组成的平行四边形面积
Normalize
示例 :
normalize(vec3(2,0,0));
//vec3(1,0,0);
语法 :
float normalize(float p)
vec2 normalize(vec2 p)
vec3 normalize(vec3 p)
vec4 normalize(vec4 p)
//l = length(p);
//if(l>0) l=1/l
//return vec3(px*l,py*l,pz*l)
Faceforward
示例 :
语法 :
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)
//r = dot(i,Nref)
//当 r<0 return N
//否则 return -N
Reflect
示例 :
reflect(vec3(1,1,0),vec3(0,1,0));
//vec3(-1,1,0)
语法 :
float reflect(float I, float N)
vec2 reflect(vec2 I, vec2 N)
vec3 reflect(vec3 I, vec3 N)
vec4 reflect(vec4 I, vec4 N)
//返回入射光对应的反射光
Refract
示例 :
语法 :
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)
//返回入射光对应的折射光
//eta 折射率
//入射光和法线必须是归一化的
MatrixCompMult
示例 :
语法 :
mat2 matrixCompMult(mat2 x, mat2 y)
mat3 matrixCompMult(mat3 x, mat3 y)
mat4 matrixCompMult(mat4 x, mat4 y)
//return z[i][j] = x[i][j] * y[i][j]
//和正常的矩阵乘法(z = x * y)不同
LessThan
示例 :
lessThan(vec3(1.0, 2.0, 0.0), vec3(0.5, 5.0, 3.0)) ;
//bvec3(false,true,true);
语法 :
bvec2 lessThan(vec2 x, vec2 y)
bvec3 lessThan(vec3 x, vec3 y)
bvec4 lessThan(vec4 x, vec4 y)
bvec2 lessThan(ivec2 x, ivec2 y)
bvec3 lessThan(ivec3 x, ivec3 y)
bvec4 lessThan(ivec4 x, ivec4 y)
//return bvec( x[i] < y[i],...)
LessThanEqual
示例 :
语法 :
bvec2 lessThanEqual(vec2 x, vec2 y)
bvec3 lessThanEqual(vec3 x, vec3 y)
bvec4 lessThanEqual(vec4 x, vec4 y)
bvec2 lessThanEqual(ivec2 x, ivec2 y)
bvec3 lessThanEqual(ivec3 x, ivec3 y)
bvec4 lessThanEqual(ivec4 x, ivec4 y)
//小于等于
GreaterThan
示例 :
语法 :
bvec2 greaterThan(vec2 x, vec2 y)
bvec3 greaterThan(vec3 x, vec3 y)
bvec4 greaterThan(vec4 x, vec4 y)
bvec2 greaterThan(ivec2 x, ivec2 y)
bvec3 greaterThan(ivec3 x, ivec3 y)
bvec4 greaterThan(ivec4 x, ivec4 y)
//大于
GreaterThanEqual
示例 :
语法 :
bvec2 greaterThanEqual(vec2 x, vec2 y)
bvec3 greaterThanEqual(vec3 x, vec3 y)
bvec4 greaterThanEqual(vec4 x, vec4 y)
bvec2 greaterThanEqual(ivec2 x, ivec2 y)
bvec3 greaterThanEqual(ivec3 x, ivec3 y)
bvec4 greaterThanEqual(ivec4 x, ivec4 y)
//大于等于
GreaterThanEqual
示例 :
语法 :
bvec2 greaterThanEqual(vec2 x, vec2 y)
bvec3 greaterThanEqual(vec3 x, vec3 y)
bvec4 greaterThanEqual(vec4 x, vec4 y)
bvec2 greaterThanEqual(ivec2 x, ivec2 y)
bvec3 greaterThanEqual(ivec3 x, ivec3 y)
bvec4 greaterThanEqual(ivec4 x, ivec4 y)
//大于等于
Equal
示例 :
语法 :
bvec2 equal(vec2 x, vec2 y)
bvec3 equal(vec3 x, vec3 y)
bvec4 equal(vec4 x, vec4 y)
bvec2 equal(ivec2 x, ivec2 y)
bvec3 equal(ivec3 x, ivec3 y)
bvec4 equal(ivec4 x, ivec4 y)
//等于
NotEqual
示例 :
语法 :
bvec2 notEqual(vec2 x, vec2 y)
bvec3 notEqual(vec3 x, vec3 y)
bvec4 notEqual(vec4 x, vec4 y)
bvec2 notEqual(ivec2 x, ivec2 y)
bvec3 notEqual(ivec3 x, ivec3 y)
bvec4 notEqual(ivec4 x, ivec4 y)
//等于
Any
示例 :
any(bvec3(false,true,false));
//true;
语法 :
bool any(bvec2 x)
bool any(bvec3 x)
bool any(bvec4 x)
//判断是否有一个组件是true
All
示例 :
all (bvecf3(false,true,false));
//false;
语法 :
bool all(bvec2 x)
bool all(bvec3 x)
bool all(bvec4 x)
//判断是否所有组件都是true
All
示例 :
all (bvecf3(false,true,false));
//false;
语法 :
bool all(bvec2 x)
bool all(bvec3 x)
bool all(bvec4 x)
//判断是否所有组件都是true
Not
示例 :
not(bvecf3(false,true,false));
//bvecf3(true,false,true);
语法 :
bvec2 not(bvec2 x)
bvec3 not(bvec3 x)
bvec4 not(bvec4 x)
//非操作
Texture2D
示例 :
语法 :
vec4 texture2D(sampler2D sampler, vec2 coord)
vec4 texture2D(sampler2D sampler, vec2 coord, float bias)
//bias 为带有mipmap的纹理查找添加 level 的偏差
Texture2D
示例 :
语法 :
vec4 textureCube(samplerCube sampler, vec3 coord)
vec4 textureCube(samplerCube sampler, vec3 coord, float bias)
来源:CSDN
作者:「已注销」
链接:https://blog.csdn.net/z1003290541/article/details/104704107