feat: isometrc grid
This commit is contained in:
+3
-2
@@ -87,9 +87,10 @@ make -f Makefile.dev release-arch
|
|||||||
- [ ] Default project
|
- [ ] Default project
|
||||||
- [x] split with includes
|
- [x] split with includes
|
||||||
- [x] src 9 : sentences repeat h
|
- [x] src 9 : sentences repeat h
|
||||||
- [ ] src 11 : isometric grid
|
- [x] src 10 : isometric grid
|
||||||
- [ ] src 12 : pattern in my kitchen
|
- [ ] src 12 : pattern in my kitchen
|
||||||
- [ ] src 13 : ?
|
- [ ] src 13 : cursor with select
|
||||||
|
- [ ] src 14 : ?
|
||||||
- [ ] src 15 : ?
|
- [ ] src 15 : ?
|
||||||
- [x] fx 11 : spill
|
- [x] fx 11 : spill
|
||||||
- [ ] fx 12 : colorize range (pretty color ranges)
|
- [ ] fx 12 : colorize range (pretty color ranges)
|
||||||
|
|||||||
@@ -201,6 +201,51 @@ float h_rect(vec2 uv, vec2 c, vec2 size, float k) {
|
|||||||
return rect(uv, c, size + k * 0.5) - rect(uv, c, size - k * 0.5);
|
return rect(uv, c, size + k * 0.5) - rect(uv, c, size - k * 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float line(vec2 uv, vec2 p1, vec2 p2, float thick) {
|
||||||
|
vec2 p = p2 - p1;
|
||||||
|
uv -= p1;
|
||||||
|
vec2 k;
|
||||||
|
|
||||||
|
if (abs(p.y) > abs(p.x)) {
|
||||||
|
k = vec2(
|
||||||
|
uv.x - p.x * uv.y / p.y,
|
||||||
|
uv.y / p.y
|
||||||
|
);
|
||||||
|
|
||||||
|
return step(k.x, thick * 0.5)
|
||||||
|
* step(-k.x, thick * 0.5)
|
||||||
|
* step(k.y, 1)
|
||||||
|
* (1 - step(k.y, 0));
|
||||||
|
} else {
|
||||||
|
k = vec2(
|
||||||
|
uv.x / p.x,
|
||||||
|
uv.y - p.y * uv.x / p.x
|
||||||
|
);
|
||||||
|
|
||||||
|
return step(k.y, thick * 0.5)
|
||||||
|
* step(-k.y, thick * 0.5)
|
||||||
|
* step(k.x, 1)
|
||||||
|
* (1 - step(k.x, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const mat2x2 ISOMETRIC_MATRIX = {{0.5, 1}, {0.5, -1}};
|
||||||
|
|
||||||
|
vec2 iso(vec2 p) {
|
||||||
|
return p * ISOMETRIC_MATRIX;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 iso_z(float z) {
|
||||||
|
return vec2(
|
||||||
|
-z,
|
||||||
|
z
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec2 iso(vec3 uv) {
|
||||||
|
return iso(uv.xy) + iso_z(uv.z);
|
||||||
|
}
|
||||||
|
|
||||||
// INPUTS
|
// INPUTS
|
||||||
|
|
||||||
vec4 reframe(sampler2D tex, vec2 uv)
|
vec4 reframe(sampler2D tex, vec2 uv)
|
||||||
|
|||||||
+38
-3
@@ -280,10 +280,9 @@ subroutine(src_stage_sub) vec4 src_9(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3
|
|||||||
return vec4(f);
|
return vec4(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO SRC 10
|
// SRC 10 : isometric grid
|
||||||
subroutine(src_stage_sub) vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
subroutine(src_stage_sub) vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3)
|
||||||
{
|
{
|
||||||
return src_3(vUV, seed, b1, f1, b2, f2, b3, f3);
|
|
||||||
// start
|
// start
|
||||||
|
|
||||||
vec2 uv0 = vUV.st;
|
vec2 uv0 = vUV.st;
|
||||||
@@ -292,9 +291,45 @@ subroutine(src_stage_sub) vec4 src_10(vec2 vUV, int seed, vec3 b1, vec2 f1, vec3
|
|||||||
|
|
||||||
// controls
|
// controls
|
||||||
|
|
||||||
|
float zoom = 5 + magic(f1, b1, seed + 10) * 15;
|
||||||
|
float h_scroll = magic(f2, b2, seed + 20);
|
||||||
|
float max_elevation = magic(f3, b3, seed + 30) * 0.5;
|
||||||
|
float thick = 0.1;
|
||||||
|
|
||||||
// logic
|
// logic
|
||||||
|
|
||||||
return texture(iTex0, vUV);
|
vec2 uv2 = uv1;
|
||||||
|
|
||||||
|
vec2 uv3 = iso(uv2);
|
||||||
|
|
||||||
|
uv3 += vec2(h_scroll, 0);
|
||||||
|
|
||||||
|
uv3 *= round(zoom);
|
||||||
|
|
||||||
|
vec2 umax = vec2(round(zoom), 300);
|
||||||
|
|
||||||
|
vec2 u0 = mod(floor(uv3), umax);
|
||||||
|
vec2 u1 = mod(floor(uv3 + vec2(1, 0)), umax);
|
||||||
|
vec2 u2 = mod(floor(uv3 + vec2(0, 1)), umax);
|
||||||
|
vec2 u3 = mod(floor(uv3 + vec2(-1, 0)), umax);
|
||||||
|
vec2 u4 = mod(floor(uv3 + vec2(0, -1)), umax);
|
||||||
|
|
||||||
|
float e0 = (rand(floor(u0)) * 2 - 1) * max_elevation;
|
||||||
|
float e1 = (rand(floor(u1)) * 2 - 1) * max_elevation;
|
||||||
|
float e2 = (rand(floor(u2)) * 2 - 1) * max_elevation;
|
||||||
|
float e3 = (rand(floor(u3)) * 2 - 1) * max_elevation;
|
||||||
|
float e4 = (rand(floor(u4)) * 2 - 1) * max_elevation;
|
||||||
|
|
||||||
|
uv3 = mod(uv3, 1.0) - 0.5;
|
||||||
|
|
||||||
|
float f = 0;
|
||||||
|
|
||||||
|
f = line(uv3, vec2(0, 0) - iso_z(e0), vec2(1, 0) - iso_z(e1), thick)
|
||||||
|
+ line(uv3, vec2(0, 0) - iso_z(e0), vec2(0, 1) - iso_z(e2), thick)
|
||||||
|
+ line(uv3, vec2(0, 0) - iso_z(e0), vec2(-1, 0) - iso_z(e3), thick)
|
||||||
|
+ line(uv3, vec2(0, 0) - iso_z(e0), vec2(0, -1) - iso_z(e4), thick);
|
||||||
|
|
||||||
|
return vec4(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SRC 11 : video in 2 + thru
|
// SRC 11 : video in 2 + thru
|
||||||
|
|||||||
Reference in New Issue
Block a user