mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-06 05:35:53 +00:00
96 lines
No EOL
2.3 KiB
Text
96 lines
No EOL
2.3 KiB
Text
// helper functions ------------------------------------------
|
|
vec2 transform_uv(vec2 uv, vec2 scale, vec2 offset, bool fract_result)
|
|
{
|
|
uv = uv * scale + offset;
|
|
if (fract_result)
|
|
uv = fract(uv);
|
|
return uv;
|
|
}
|
|
|
|
vec2 uv_distortion(
|
|
vec2 uv,
|
|
sampler2D distortion_texture,
|
|
vec2 distortion_uv,
|
|
float distortion_amount,
|
|
vec2 distortion_speed,
|
|
bool fract_result)
|
|
{
|
|
distortion_uv += mod(TIME * distortion_speed, vec2(1.));
|
|
if (fract_result)
|
|
{
|
|
distortion_uv = fract(distortion_uv);
|
|
}
|
|
|
|
float distortAmount =
|
|
(texture(distortion_texture, distortion_uv).r - 0.5) * 0.2 * distortion_amount;
|
|
uv += vec2(1.) * distortAmount;
|
|
return uv;
|
|
}
|
|
|
|
vec2 uv_polar(vec2 uv, vec2 center)
|
|
{
|
|
vec2 dir = uv - center;
|
|
float radius = length(dir) * 2.;
|
|
float angle = atan(dir.y, dir.x) / (2. * PI);
|
|
vec2 polarUV = vec2(angle, radius);
|
|
//baseUV = mod(vec2(radius, angle), 1.0);
|
|
return polarUV;
|
|
}
|
|
|
|
vec2 rotate_vec2(vec2 vector, float angle)
|
|
{
|
|
float cosAngle = cos(angle);
|
|
float sinAngle = sin(angle);
|
|
vector = mat2(vec2(cosAngle, -sinAngle), vec2(sinAngle, cosAngle)) * vector;
|
|
return vector;
|
|
}
|
|
|
|
vec2 rotate_uvs(vec2 uv, float rotation, vec2 scale, vec2 offset)
|
|
{
|
|
vec2 center = vec2(0.5 * scale.x + offset.x, 0.5 * scale.y + offset.y);
|
|
uv -= center;
|
|
uv = rotate_vec2(uv, rotation);
|
|
uv += center;
|
|
return uv;
|
|
}
|
|
|
|
vec4 sample_texture_with_scroll(sampler2D tex, vec2 uv, vec2 scroll_speed, float time)
|
|
{
|
|
uv.x += mod(time * scroll_speed.x, 1);
|
|
uv.y += mod(time * scroll_speed.y, 1);
|
|
if (scroll_speed != vec2(0.))
|
|
uv = fract(uv);
|
|
return texture(tex, uv);
|
|
}
|
|
|
|
float rand(vec2 seed, float offset) {
|
|
return mod(fract(sin(dot(seed, vec2(12.9898, 78.233))) * 43758.5453) + offset, 1.0);
|
|
}
|
|
|
|
float rand_uncapped(vec2 seed, float offset) {
|
|
return fract(sin(dot(seed, vec2(12.9898, 78.233))) * 43758.5453) + offset;
|
|
}
|
|
|
|
float rand2(vec2 seed, float offset, float time) {
|
|
return mod(
|
|
fract(
|
|
sin(
|
|
dot(seed * floor(50. + mod(time, 1.0) * 12.), vec2(127.1, 311.7))
|
|
) * 43758.5453123
|
|
) + offset, 1.0);
|
|
}
|
|
|
|
float remap_float(float inValue, float inMin, float inMax, float outMin, float outMax){
|
|
return outMin + (inValue - inMin) * (outMax - outMin) / (inMax - inMin);
|
|
}
|
|
|
|
float ease_out_quint(float x) {
|
|
return 1. - pow(1. - x, 5.);
|
|
}
|
|
|
|
float get_color_luminance(vec4 color)
|
|
{
|
|
float luminance = 0.3 * color.r + 0.59 * color.g + 0.11 * color.b;
|
|
luminance *= color.a;
|
|
return luminance;
|
|
} |