src/fx 15 : random

This commit is contained in:
2025-11-09 22:57:14 +01:00
parent 916c816102
commit 94d1593e8e
4 changed files with 69 additions and 60 deletions
+2 -2
View File
@@ -91,12 +91,12 @@ make -f Makefile.dev release-arch
- [x] src 12 : pattern in my kitchen - [x] src 12 : pattern in my kitchen
- [x] src 13 : another pattern in my kitchen - [x] src 13 : another pattern in my kitchen
- [x] src 14 : cursor with select - [x] src 14 : cursor with select
- [ ] src 15 : random source - [x] src 15 : random source
- [x] fx 11 : spill - [x] fx 11 : spill
- [x] fx 12 : game of life - [x] fx 12 : game of life
- [x] fx 13 : sobel - [x] fx 13 : sobel
- [ ] fx 14 : colorize range (pretty color ranges) - [ ] fx 14 : colorize range (pretty color ranges)
- [ ] fx 15 : random fx - [x] fx 15 : random fx
- [x] frag 10 : move debug screen here - [x] frag 10 : move debug screen here
- [ ] debug : add src/fx/A/B indicators - [ ] debug : add src/fx/A/B indicators
- [ ] Other - [ ] Other
+31 -15
View File
@@ -507,24 +507,40 @@ subroutine(fx_stage_sub) vec4 fx_14(vec2 vUV, sampler2D previous, sampler2D feed
return fx_master(c0, c, seed, m0); return fx_master(c0, c, seed, m0);
} }
// TODO FX 15 // FX 15 : Random
subroutine(fx_stage_sub) vec4 fx_15(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) subroutine(fx_stage_sub) vec4 fx_15(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0)
{ {
int fx = int(randTime(seed + 100, 16) * 14);
if (fx == 0) {
return fx_1(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
} else if (fx == 1) {
return fx_2(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); return fx_2(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
// start } else if (fx == 2) {
return fx_3(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
vec2 uv0 = vUV.st; } else if (fx == 3) {
float ratio = iResolution.x / iResolution.y; return fx_4(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1); } else if (fx == 4) {
return fx_5(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
// controls } else if (fx == 5) {
return fx_6(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
// logic } else if (fx == 6) {
return fx_7(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
vec3 c0 = texture(previous, uv0).xyz; } else if (fx == 7) {
vec3 c = c0; return fx_8(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
} else if (fx == 8) {
return fx_master(c0, c, seed, m0); return fx_9(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
} else if (fx == 9) {
return fx_10(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
} else if (fx == 10) {
return fx_11(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
} else if (fx == 11) {
return fx_12(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
} else if (fx == 12) {
return fx_13(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
} else {
return fx_14(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0);
}
} }
#endif #endif
+31 -42
View File
@@ -457,51 +457,40 @@ subroutine(src_stage_sub) vec4 src_14(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3
return vec4(f); return vec4(f);
} }
// TODO SRC 15 // SRC 15 : Random
subroutine(src_stage_sub) vec4 src_15(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3) subroutine(src_stage_sub) vec4 src_15(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{ {
int src = int(randTime(seed + 100, 16) * 14);
if (src == 0) {
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 1) {
return src_2(vUV, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 2) {
return src_3(vUV, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 3) {
return src_4(vUV, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 4) {
return src_5(vUV, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 5) {
return src_6(vUV, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 6) {
return src_7(vUV, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 7) {
return src_8(vUV, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 8) {
return src_9(vUV, seed, b1, f1, b2, f2, b3, f3); return src_9(vUV, seed, b1, f1, b2, f2, b3, f3);
// start } else if (src == 9) {
return src_10(vUV, seed, b1, f1, b2, f2, b3, f3);
vec2 uv0 = vUV.st; } else if (src == 10) {
float ratio = iResolution.x / iResolution.y; return src_11(vUV, seed, b1, f1, b2, f2, b3, f3);
vec2 uv1 = (uv0 - .5) * vec2(ratio, 1); } else if (src == 11) {
return src_12(vUV, seed, b1, f1, b2, f2, b3, f3);
// controls } else if (src == 12) {
return src_13(vUV, seed, b1, f1, b2, f2, b3, f3);
float circle = magic(f1, b1, seed + 10); } else {
float x_shift = magic(f2, b2, seed + 20); return src_14(vUV, seed, b1, f1, b2, f2, b3, f3);
float grid_size = 0.1 + magic(f3, b3, seed + 30) * 0.9; }
bool show_grid = magic_trigger(b3, seed + 30);
// logic
float f = 0;
f += istep(circle * 0.5, length(uv1));
float txt = 0;
float txt_rect = rect(uv1 * 10, vec2(0), vec2(2, 1));
txt += write_int(uv1 * 10, vec2(-1.33,-0.5), int(mod(iBeats, 4) + 1), 1);
txt += char_at(uv1 * 10, vec2(-0.33, -0.5), 0x2E);
txt += write_int(uv1 * 10, vec2(0.66,-0.5), int((mod(iBeats, 4) + 1) * 10), 1);
float grid = 0;
grid = istep(grid_size * 0.1, mod(uv1.x + grid_size * 0.05, grid_size)) + istep(grid_size * 0.1, mod(uv1.y + grid_size * 0.05, grid_size));
grid = mix(grid, 0, show_grid ? min(1, f + txt_rect) : 1);
vec3 c = vec3(istep(0.25, mod(uv0.x + x_shift, 0.5)), istep(0.25, mod(uv0.x + 0.125 + x_shift, 0.5)), istep(0.5, mod(uv0.x + x_shift, 1.0)));
c = mix(c, 1 - c, f);
c = mix(c, vec3(txt), txt_rect);
c = mix(c, vec3(grid) * 0.5, grid);
return vec4(c, 1);
} }
#endif #endif
+5 -1
View File
@@ -11,8 +11,12 @@ uniform float iTime;
uniform float iTempo; uniform float iTempo;
uniform float iBeats; uniform float iBeats;
float randTime(float seed, int beats){
return rand(seed + floor(iBeats / beats));
}
float randTime(float seed){ float randTime(float seed){
return rand(seed + floor(iBeats / 4)); return randTime(seed, 4);
} }
float divider(float x) float divider(float x)