GlSL常用函数算法
GlSL常用函数算法
常用函数算法
- 一些平时自己经常用的函数算法
淡入淡出函数
1
2
3
4
lowp float fadeInOut(lowp float t) {
// 淡入淡出效果
return smoothstep(0.0, 0.5, t) * (1.0 - smoothstep(0.5, 1.0, t));
}
UV旋转
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//弧度
void Rotate_Radians(vec2 UV, vec2 Center, float Rotation, out vec2 Out)
{
UV -= Center;
float s = sin(Rotation);
float c = cos(Rotation);
mat2 rMatrix = mat2(vec2(c, -s), vec2(s, c));
rMatrix *= 0.5;
rMatrix += 0.5;
rMatrix = rMatrix * 2.0 - 1.0;
UV.xy = UV.xy*rMatrix;
UV += Center;
Out = UV;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//角度
void Rotate_Degrees(vec2 UV, vec2 Center, float Rotation, out vec2 Out)
{
Rotation = Rotation * (3.1415926f/180.0f);//转角度
UV -= Center;
float s = sin(Rotation);
float c = cos(Rotation);
mat2 rMatrix = mat2(vec2(c, -s), vec2(s, c));
rMatrix *= 0.5;
rMatrix += 0.5;
rMatrix = rMatrix * 2.0 - 1.0;
UV.xy = UV.xy*rMatrix;
UV += Center;
Out = UV;
}
UV中心缩放
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 顶点着色器
vertex shader
in vec2 uv; // 输入的 UV 坐标
out vec2 scaled_uv; // 缩放后的 UV 坐标
void main() {
vec2 center_uv = vec2(0.5, 0.5); // UV 中心的坐标(可以根据需要调整)
vec2 relative_uv = uv - center_uv; // 相对 UV 坐标
relative_uv *= 2.0; // 进行缩放操作(可以根据需要调整缩放因子)
scaled_uv = relative_uv + center_uv; // 加上中心坐标得到最终的缩放后的 UV 坐标
}
本文由作者按照 CC BY 4.0 进行授权