upgrade glsl code
This commit is contained in:
+85
-85
@@ -6,14 +6,14 @@
|
||||
#define INC_FX
|
||||
|
||||
vec4 fx_master(vec3 c0, vec3 c, int seed, vec3 m0) {
|
||||
float fx = magic(m0.xy, vec3(1,0,0), seed);
|
||||
bool invert = magic_trigger(vec3(m0.z, 0, 0), seed);
|
||||
float fx = magic(m0.xy, vec3(1., 0., 0.), seed);
|
||||
bool invert = magic_trigger(vec3(m0.z, 0., 0.), seed);
|
||||
|
||||
vec3 c_out = mix(c0, c, fx);
|
||||
|
||||
c_out = mix(c_out, 1 - c_out, invert ? 1 : 0);
|
||||
c_out = mix(c_out, 1. - c_out, invert ? 1. : 0.);
|
||||
|
||||
return vec4(c_out, 1.0);
|
||||
return vec4(c_out, 1.);
|
||||
}
|
||||
|
||||
// FX 1 : thru
|
||||
@@ -25,17 +25,17 @@ vec4 fx_1(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
||||
|
||||
// controls
|
||||
|
||||
float hue = magic(f1, b1, seed + 10);
|
||||
float saturation = magic(f2, b2, seed + 20);
|
||||
float light = magic(f3, b3, seed + 30);
|
||||
float hue = magic(f1, b1, seed + 10.);
|
||||
float saturation = magic(f2, b2, seed + 20.);
|
||||
float light = magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
vec3 c0 = texture(previous, uv0).xyz;
|
||||
vec3 c = c0;
|
||||
c = shift3(c, hue);
|
||||
c *= 1 + saturation;
|
||||
c = mix(c + light * 2.0, c - (1 - light) * 2.0, step(.5, light));
|
||||
c *= 1. + saturation;
|
||||
c = mix(c + light * 2., c - (1. - light) * 2., step(.5, light));
|
||||
|
||||
return fx_master(c0, c, seed, m0);
|
||||
}
|
||||
@@ -47,7 +47,7 @@ vec4 fx_shift(vec2 vUV, sampler2D src0, sampler2D src1, int seed, vec3 b1, vec2
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
@@ -111,24 +111,24 @@ vec4 fx_5(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float pixel_size = magic(f1, b1, seed + 10);
|
||||
float quantize = magic(f2, b2, seed + 20);
|
||||
bool quantize_trigger = magic_trigger(b2, seed + 20);
|
||||
float blur = magic(f3, b3, seed + 30);
|
||||
float pixel_size = magic(f1, b1, seed + 10.);
|
||||
float quantize = magic(f2, b2, seed + 20.);
|
||||
bool quantize_trigger = magic_trigger(b2, seed + 20.);
|
||||
float blur = magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
vec3 c0 = texture(previous, uv0).xyz;
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
float pixel = (1 - pixel_size) * 250 + 25;
|
||||
float pixel = (1., - pixel_size) * 250. + 25.;
|
||||
uv2 = round(uv2 * pixel) / pixel;
|
||||
vec3 c = gauss(previous, uv2 * vec2(1 / ratio, 1) + .5, 3, .005 * blur).xyz;
|
||||
float colors = (1 - quantize) * 10 + 1;
|
||||
vec3 c = gauss(previous, uv2 * vec2(1. / ratio, 1.) + .5, 3, .005 * blur).xyz;
|
||||
float colors = (1. - quantize) * 10. + 1.;
|
||||
if (quantize_trigger) {
|
||||
c = round(c * colors) / colors;
|
||||
}
|
||||
@@ -144,7 +144,7 @@ vec4 fx_6(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
@@ -186,13 +186,13 @@ vec4 fx_7(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float lens_v = magic(f1, b1, seed + 10);
|
||||
float horizontal_noise = magic(f2, b2, seed + 20);
|
||||
float zoom = magic(f3, b3, seed + 30);
|
||||
float lens_v = magic(f1, b1, seed + 10.);
|
||||
float horizontal_noise = magic(f2, b2, seed + 20.);
|
||||
float zoom = magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
@@ -200,12 +200,12 @@ vec4 fx_7(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
float k1 = lens_v * .5;
|
||||
uv2 *= 1 + zoom * 2;
|
||||
uv2 *= 1. + zoom * 2.;
|
||||
uv2 = lens(uv2, -k1, k1);
|
||||
float k = horizontal_noise;
|
||||
vec3 c = vec3(
|
||||
reframe_b(previous, uv2 + vec2((rand(uv0.y * 1000 + iTime) - .5) * k * .1)).x,
|
||||
reframe_b(previous, uv2 + vec2((rand(uv0.y * 1100 + iTime) - .5) * k * .1)).y,
|
||||
reframe_b(previous, uv2 + vec2((rand(uv0.y * 1000. + iTime) - .5) * k * .1)).x,
|
||||
reframe_b(previous, uv2 + vec2((rand(uv0.y * 1100. + iTime) - .5) * k * .1)).y,
|
||||
reframe_b(previous, uv2).z
|
||||
);
|
||||
|
||||
@@ -219,23 +219,23 @@ vec4 fx_8(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float axes = magic(f1, b1, seed + 10);
|
||||
float axes_trigger = magic_b(b1, seed + 10).x;
|
||||
float rotation = magic(f2, b2, seed + 20);
|
||||
float h_scroll = magic(f3, b3, seed + 30);
|
||||
float axes = magic(f1, b1, seed + 10.);
|
||||
float axes_trigger = magic_b(b1, seed + 10.).x;
|
||||
float rotation = magic(f2, b2, seed + 20.);
|
||||
float h_scroll = magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
vec3 c0 = texture(previous, uv0).xyz;
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
uv2 = mix(uv2, kal2(uv2 * rot(.25), floor(axes * 9 + 1)) * vec2(1, -2) + vec2(0, -.5), axes_trigger);
|
||||
uv2 = mix(uv2, kal2(uv2 * rot(.25), floor(axes * 9. + 1.)) * vec2(1., -2.) + vec2(0., -.5), axes_trigger);
|
||||
uv2 *= rot(rotation);
|
||||
uv2.x = (saw(uv2.x / ratio + .5 + h_scroll * 2) - .5) * ratio;
|
||||
uv2.x = (saw(uv2.x / ratio + .5 + h_scroll * 2.) - .5) * ratio;
|
||||
vec3 c = reframe(previous, uv2).xyz;
|
||||
|
||||
return fx_master(c0, c, seed, m0);
|
||||
@@ -250,35 +250,35 @@ vec4 fx_9(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, v
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float zoom = magic(f1, b1, seed + 10);
|
||||
vec2 charset = magic_f(f2, b2, seed + 20);
|
||||
vec3 charset_ctrl = magic_b(b2, seed + 20);
|
||||
float char_delta = magic(f3, b3, seed + 30);
|
||||
float t = magic(seed + 40);
|
||||
float zoom = magic(f1, b1, seed + 10.);
|
||||
vec2 charset = magic_f(f2, b2, seed + 20.);
|
||||
vec3 charset_ctrl = magic_b(b2, seed + 20.);
|
||||
float char_delta = magic(f3, b3, seed + 30.);
|
||||
float t = magic(seed + 40.);
|
||||
|
||||
// logic
|
||||
|
||||
vec3 c0 = texture(previous, uv0).xyz;
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
float k1 = 100 * (1 - zoom) + 10;
|
||||
float inv_k = 1 / k1;
|
||||
float k1 = 100. * (1. - zoom) + 10.;
|
||||
float inv_k = 1. / k1;
|
||||
uv2 = floor(uv2 * k1) * inv_k;
|
||||
int start_char = charset_ctrl.x > 0 ? charsets[int(charset.x * CHARSETS) * 2] : 0x01;
|
||||
int char_span = int((charset_ctrl.x > 0 ? charsets[int(charset.x * CHARSETS) * 2 + 1] : 255));
|
||||
char_span = int(char_span * max(1 - charset.y, 1 / (char_span * .75)));
|
||||
int start_char = charset_ctrl.x > 0. ? charsets[int(charset.x * CHARSETS) * 2] : 0x01;
|
||||
int char_span = int((charset_ctrl.x > 0. ? charsets[int(charset.x * CHARSETS) * 2 + 1] : 255));
|
||||
char_span = int(char_span * max(1. - charset.y, 1. / (char_span * .75)));
|
||||
ivec2 uv2i = ivec2(uv2 * k1);
|
||||
int code = ((charset_ctrl.y < 1 || (uv2i.x % 2 ^ uv2i.y % 2) > 0) ? 1 : 0) * (start_char + int((rand(uv2i) + char_delta) * char_span) % char_span);
|
||||
vec3 c = reframe(previous, uv2 + vec2(0, 0) * inv_k * .125).xyz * .2
|
||||
+ reframe(previous, uv2 + vec2(1, 0) * inv_k * .125).xyz * .2
|
||||
+ reframe(previous, uv2 + vec2(1, 1) * inv_k * .125).xyz * .2
|
||||
+ reframe(previous, uv2 + vec2(0, 1) * inv_k * .125).xyz * .2
|
||||
int code = ((charset_ctrl.y < 1. || (uv2i.x % 2 ^ uv2i.y % 2) > 0) ? 1 : 0) * (start_char + int((rand(uv2i) + char_delta) * char_span) % char_span);
|
||||
vec3 c = reframe(previous, uv2 + vec2(0., 0.) * inv_k * .125).xyz * .2
|
||||
+ reframe(previous, uv2 + vec2(1., 0.) * inv_k * .125).xyz * .2
|
||||
+ reframe(previous, uv2 + vec2(1., 1.) * inv_k * .125).xyz * .2
|
||||
+ reframe(previous, uv2 + vec2(0., 1.) * inv_k * .125).xyz * .2
|
||||
+ reframe(previous, uv2 + vec2(.5, .5) * inv_k * .125).xyz * .2;
|
||||
c = char(mod(uv1 * k1, 1), code) ? c : vec3(0);
|
||||
c = char(mod(uv1 * k1, 1.), code) ? c : vec3(0.);
|
||||
|
||||
return fx_master(c0, c, seed, m0);
|
||||
}
|
||||
@@ -290,22 +290,22 @@ vec4 fx_10(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float lens_v1 = magic(f1, b1, seed + 10);
|
||||
float lens_v2 = magic(f2, b2, seed + 20);
|
||||
float zoom = magic(f3, b3, seed + 30);
|
||||
float k = magic(seed + 40);
|
||||
float lens_v1 = magic(f1, b1, seed + 10.);
|
||||
float lens_v2 = magic(f2, b2, seed + 20.);
|
||||
float zoom = magic(f3, b3, seed + 30.);
|
||||
float k = magic(seed + 40.);
|
||||
|
||||
// logic
|
||||
|
||||
vec3 c0 = texture(previous, uv0).xyz;
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
uv2 *= 1 + zoom * 2;
|
||||
uv2 = lens(uv2, -lens_v2 * 10, lens_v1 * 10);
|
||||
uv2 *= 1. + zoom * 2.;
|
||||
uv2 = lens(uv2, -lens_v2 * 10., lens_v1 * 10.);
|
||||
vec3 c = reframe(previous, uv2).xyz;
|
||||
|
||||
return fx_master(c0, c, seed, m0);
|
||||
@@ -318,13 +318,13 @@ vec4 fx_11(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float wall1 = magic(f1, b1, seed + 10);
|
||||
float wall2 = magic(f2, b2, seed + 20);
|
||||
float angle = magic(f3, b3, seed + 30);
|
||||
float wall1 = magic(f1, b1, seed + 10.);
|
||||
float wall2 = magic(f2, b2, seed + 20.);
|
||||
float angle = magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
@@ -332,8 +332,8 @@ vec4 fx_11(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
uv2 *= rot(angle);
|
||||
uv2.y = min(uv2.y, 1 - wall1);
|
||||
uv2.y = -min(-uv2.y, 1 - wall2);
|
||||
uv2.y = min(uv2.y, 1. - wall1);
|
||||
uv2.y = -min(-uv2.y, 1. - wall2);
|
||||
uv2 *= rot(-angle);
|
||||
vec3 c = reframe(previous, uv2).xyz;
|
||||
|
||||
@@ -347,24 +347,24 @@ vec4 fx_12(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float pixel_size = magic(f1, b1, seed + 10);
|
||||
bool pixel_size_trigger = magic_trigger(b1, seed + 10);
|
||||
f2 = magic_f(f2, b2, seed + 20);
|
||||
int rule = int(f2.x * 12);
|
||||
float pixel_size = magic(f1, b1, seed + 10.);
|
||||
bool pixel_size_trigger = magic_trigger(b1, seed + 10.);
|
||||
f2 = magic_f(f2, b2, seed + 20.);
|
||||
int rule = int(f2.x * 12.);
|
||||
float threshold = f2.y * .9 + .05;
|
||||
float fb = magic(f3, b3, seed + 30);
|
||||
float fb = magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
vec3 c0 = texture(previous, uv0).xyz;
|
||||
|
||||
vec2 uv2 = uv1;
|
||||
float k1 = pow(2, 9 - floor(pixel_size * 5));
|
||||
float p = 1 / k1;
|
||||
float k1 = pow(2., 9. - floor(pixel_size * 5.));
|
||||
float p = 1. / k1;
|
||||
uv2 = round(uv2 * k1) / k1;
|
||||
vec3 c1 = mix(
|
||||
reframe(previous, uv2 + vec2(.5, .5) * p).xyz,
|
||||
@@ -449,7 +449,7 @@ vec4 fx_12(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
alive = n >= 6 || !alive && n == 4 || alive && (n == 3 || n == 5);
|
||||
}
|
||||
|
||||
vec3 cout = vec3(alive ? 1 : 0);
|
||||
vec3 cout = vec3(alive ? 1. : 0.);
|
||||
|
||||
return fx_master(c0, cout, seed, m0);
|
||||
}
|
||||
@@ -461,20 +461,20 @@ vec4 fx_13(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float sx = magic(f1, b1, seed + 10) * 2;
|
||||
float sy = magic(f2, b2, seed + 20) * 2;
|
||||
float disp = .005 * magic(f3, b3, seed + 30);
|
||||
float sx = magic(f1, b1, seed + 10.) * 2.;
|
||||
float sy = magic(f2, b2, seed + 20.) * 2.;
|
||||
float disp = .005 * magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
vec3 c0 = texture(previous, uv0).xyz;
|
||||
|
||||
const mat3x3 sobelx = mat3x3(-1, -2, -1, 0, 0, 0, 1, 2, 1);
|
||||
const mat3x3 sobely = mat3x3(-1, 0, 1, -2, 0, 2, -1, 0, 1);
|
||||
const mat3x3 sobelx = mat3x3(-1., -2., -1., 0., 0., 0., 1., 2., 1.);
|
||||
const mat3x3 sobely = mat3x3(-1., 0., 1., -2., 0., 2., -1., 0., 1.);
|
||||
|
||||
mat3x3 sobel = sobelx * sx + sobely * sy;
|
||||
|
||||
@@ -490,13 +490,13 @@ vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
|
||||
vec2 uv0 = vUV.st;
|
||||
float ratio = iResolution.x / iResolution.y;
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1);
|
||||
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1.);
|
||||
|
||||
// controls
|
||||
|
||||
float zoom = 1 + magic(f1, b1, seed + 10) * 9;
|
||||
float h_scroll = magic(f2, b2, seed + 20);
|
||||
float angle = magic(f3, b3, seed + 30);
|
||||
float zoom = 1 + magic(f1, b1, seed + 10.) * 9.;
|
||||
float h_scroll = magic(f2, b2, seed + 20.);
|
||||
float angle = magic(f3, b3, seed + 30.);
|
||||
|
||||
// logic
|
||||
|
||||
@@ -508,11 +508,11 @@ vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
|
||||
uv3 *= rot(angle);
|
||||
|
||||
uv3 += vec2(h_scroll, 0);
|
||||
uv3 += vec2(h_scroll, 0.);
|
||||
|
||||
uv3 *= round(zoom);
|
||||
|
||||
vec2 umax = vec2(round(zoom), 300);
|
||||
vec2 umax = vec2(round(zoom), 300.);
|
||||
|
||||
vec3 c = reframe(previous, mod(uv3, umax)).xyz;
|
||||
|
||||
@@ -521,7 +521,7 @@ vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1,
|
||||
|
||||
vec4 fx_stage(int fx, vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) {
|
||||
if (fx >= 15) {
|
||||
fx = int(randTime(seed + 100) * 14) + 1;
|
||||
fx = int(randTime(seed + 100.) * 14.) + 1;
|
||||
}
|
||||
|
||||
if (fx == 1) {
|
||||
|
||||
Reference in New Issue
Block a user