Files
forge-invar/project/inc_magic.glsl
T
2026-08-28 19:02:39 +02:00

78 lines
1.4 KiB
GLSL

#include inc_time.glsl
#ifndef INC_MAGIC
#define INC_MAGIC
vec2 magic_f(vec2 f, vec3 b, float i)
{
return vec2(
mix(f.x, randTime(i + 1.), min(1., b.z)),
mix(f.y, randTime(i + 2.), min(1., b.z))
);
}
vec2 magic_f(float i)
{
return magic_f(vec2(0.), vec3(0., 0., 1.), i);
}
vec3 magic_b(vec3 b, float i)
{
return vec3(
mix(b.x, step(.2, randTime(i + 3.)), min(1., b.z)),
mix(b.y, step(.5, randTime(i + 4.)), min(1., b.z)),
min(1., b.z)
);
}
vec3 magic_b(float i)
{
return magic_b(vec3(0., 0., 1.), i);
}
bool magic_trigger(vec3 b, float i)
{
return magic_b(b, i).x > 0.;
}
bool magic_trigger(float i)
{
return magic_b(i).x > 0.;
}
float magic(vec2 f, vec3 b, float i)
{
vec2 mf = magic_f(f, b, i);
vec3 mb = magic_b(b, i);
return mix(0., mf.x * mix(1. - modTime(mf.y), cosTime(mf.y) * .5 + .5, mb.y), mb.x);
}
float fmagic(vec2 f, vec3 b, float i)
{
vec2 mf = magic_f(f, b, i);
vec3 mb = magic_b(b, i);
return mf.x * mix(1. - modTime(mf.y), cosTime(mf.y) * .5 + .5, mb.y);
}
float magic(float i)
{
return magic(vec2(0.), vec3(0., 0., 1.), i);
}
float magic_reverse(vec2 f, vec3 b, float i)
{
vec2 mf = magic_f(f, b, i);
vec3 mb = magic_b(b, i);
return mix(0., mf.x * mix(1. - modTime(mf.y), modTime(mf.y), mb.y), mb.x);
}
float magic_reverse(float i)
{
return magic_reverse(vec2(0.), vec3(0., 0., 1.), i);
}
#endif