feat: new src

This commit is contained in:
2026-11-10 00:26:59 +01:00
parent e27a3fc8a3
commit c449918b82
3 changed files with 75 additions and 36 deletions
+2 -1
View File
@@ -12,7 +12,8 @@ out vec4 fragColor;
uniform int iSeed1;
uniform int iState1;
uniform vec3 iGroup1_1[6];
uniform sampler2D iTex1;
void main() {
fragColor = src_stage(iState1, vUV, iSeed1, iGroup1_1[0], iGroup1_1[1].xy, iGroup1_1[2], iGroup1_1[3].xy, iGroup1_1[4], iGroup1_1[5].xy);
fragColor = src_stage(iState1, vUV, iTex1, iSeed1, iGroup1_1[0], iGroup1_1[1].xy, iGroup1_1[2], iGroup1_1[3].xy, iGroup1_1[4], iGroup1_1[5].xy);
}
+2 -1
View File
@@ -12,7 +12,8 @@ out vec4 fragColor;
uniform int iSeed2;
uniform int iState2;
uniform vec3 iGroup1_2[6];
uniform sampler2D iTex2;
void main() {
fragColor = src_stage(iState2, vUV, iSeed2, iGroup1_2[0], iGroup1_2[1].xy, iGroup1_2[2], iGroup1_2[3].xy, iGroup1_2[4], iGroup1_2[5].xy);
fragColor = src_stage(iState2, vUV, iTex2, iSeed2, iGroup1_2[0], iGroup1_2[1].xy, iGroup1_2[2], iGroup1_2[3].xy, iGroup1_2[4], iGroup1_2[5].xy);
}
+71 -34
View File
@@ -39,13 +39,13 @@ vec4 src_thru(vec2 vUV, sampler2D tex, int seed, vec3 b1, vec2 f1, vec3 b2, vec2
}
// SRC 1: feedback + thru
vec4 src_1(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_1(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
return src_thru(vUV, iTex0, seed, b1, f1, b2, f2, b3, f3);
}
// SRC 2 : lines
vec4 src_2(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_2(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -72,7 +72,7 @@ vec4 src_2(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
}
// SRC 3 : dots
vec4 src_3(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_3(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -102,7 +102,7 @@ vec4 src_3(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
// SRC 4 : bacteria
vec4 src_4(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_4(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -130,7 +130,7 @@ vec4 src_4(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
}
// SRC 5 : noise
vec4 src_5(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_5(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -168,7 +168,7 @@ vec4 src_5(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
}
// SRC 6 : cp437
vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_6(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -202,8 +202,7 @@ vec4 src_6(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
}
// SRC 7 : sentences
vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_7(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -232,7 +231,7 @@ vec4 src_7(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
}
// SRC 8 : sentences repeat
vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_8(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -267,7 +266,7 @@ vec4 src_8(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
}
// SRC 9 : dungeon
vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_9(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -301,14 +300,14 @@ vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2
}
// SRC 10 :
vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_10(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// TODO
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_1(vUV, self, seed, b1, f1, b2, f2, b3, f3);
}
// SRC 11 : isometric grid
vec4 src_11(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_11(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -360,7 +359,7 @@ vec4 src_11(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
}
// SRC 12 : Scales
vec4 src_12(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_12(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -403,7 +402,7 @@ vec4 src_12(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
}
// SRC 13 : Credenza
vec4 src_13(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_13(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// start
@@ -434,47 +433,85 @@ vec4 src_13(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec
return vec4(f);
}
// SRC 14 :
vec4 src_14(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
// SRC 14 : Fire
vec4 src_14(vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
// TODO
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
// start
vec2 uv0 = vUV.st;
float ratio = iResolution.x / iResolution.y;
vec2 uv1 = uv0 * vec2(ratio, 1.);
// controls
float zoom = magic(f1, b1, seed + 10.) * 200. + 50.;
float cooling = (magic(f2, b2, seed + 20.) * 3. + 1.) * 4. / zoom;
float ball_size = magic(f3, b3, seed + 30.) * 0.8 / ratio + 0.05;
float ball_trigger = magic_b(b3, seed + 30.).x;
// logic
vec2 uv2 = uv1 * zoom;
uv2 = vec2(ivec2(uv1 * zoom));
float rand_pos = rand(uv2 + seed);
vec2 src_uv = uv2 - vec2(round(rand_pos), 1) + 0.5;
float src = mix(
1.,
mix(
0.,
texture(self, (src_uv / zoom) * vec2(iResolution.y / iResolution.x, 1.)).x,
mix(1., step(0, src_uv.x) * step(0, src_uv.y), ball_trigger)
),
mix(
step(0, src_uv.y),
1. - h_circle(uv2, vec2(0.5 * ratio, 0.5) * zoom, ball_size * zoom, 0.05 * zoom),
ball_trigger
)
);
float f = max(0., src - cooling * (rand(uv2 + int(iBeats * 16.) + seed + 10) - 0.33));
return vec4(f);
}
vec4 src_stage(int src, vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
vec4 src_stage(int src, vec2 vUV, sampler2D self, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
{
if (src >= 15) {
src = int(randTime(seed + 100.) * 14.) + 1;
}
if (src == 1) {
return src_1(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_1(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 2) {
return src_2(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_2(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 3) {
return src_3(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_3(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 4) {
return src_4(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_4(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 5) {
return src_5(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_5(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 6) {
return src_6(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_6(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 7) {
return src_7(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_7(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 8) {
return src_8(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_8(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 9) {
return src_9(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_9(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 10) {
return src_10(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_10(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 11) {
return src_11(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_11(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 12) {
return src_12(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_12(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else if (src == 13) {
return src_13(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_13(vUV, self, seed, b1, f1, b2, f2, b3, f3);
} else {
return src_14(vUV, seed, b1, f1, b2, f2, b3, f3);
return src_14(vUV, self, seed, b1, f1, b2, f2, b3, f3);
}
}