diff --git a/.gitignore b/.gitignore index 3ef2023..b6661dd 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,5 @@ confdeps.* conftest.* forge_saved_state.txt *.py -error.glsl \ No newline at end of file +error.glsl +draft/ \ No newline at end of file diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index f739abc..65f0904 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -92,8 +92,8 @@ make -f Makefile.dev release-arch - [ ] src 12 : ? - [ ] src 13 : ? - [ ] src 15 : debug -> calibration screen - - [ ] fx 11 : colorize range (pretty color ranges) - - [ ] fx 12 : spill + - [ ] fx 10 : colorize range (pretty color ranges) + - [x] fx 11 : spill - [x] frag 10 : move debug screen here - [ ] debug : add src/fx/A/B indicators - [ ] Other diff --git a/README.md b/README.md index 8530722..39bb13d 100644 --- a/README.md +++ b/README.md @@ -151,7 +151,7 @@ options: | | **7** | Sentences | _Zoom_ | _Sentence_ | _Vertical repeat_ | Kaleidoscope | _Axes_ | _Rotation_ | _Horz. Scroll_ | | | **8** | | | | | CP437 | _Zoom_ | _Charset_ | _Char. Delta_ | | | **9** | | | | | Lens | _Lens limit_ | _Lens power_ | _Pre Zoom_ | -| **3** | **A** | Video In 2 + Thru | _Hue_ | _Saturation_ | _Light_ | | | | | +| **3** | **A** | Video In 2 + Thru | _Hue_ | _Saturation_ | _Light_ | Spill | _Bottom limit_ | _Top Limit_ | _Rotation_ | | | **B** | | | | | | | | | | | **C** | | | | | | | | | | | **D** | | | | | | | | | diff --git a/default/inc_fx.glsl b/default/inc_fx.glsl index 57120a7..64c8fec 100644 --- a/default/inc_fx.glsl +++ b/default/inc_fx.glsl @@ -315,10 +315,9 @@ subroutine(fx_stage_sub) vec4 fx_10(vec2 vUV, sampler2D previous, sampler2D feed return fx_master(c0, c, seed, m0); } -// TODO FX 11 +// FX 11 : spill subroutine(fx_stage_sub) vec4 fx_11(vec2 vUV, sampler2D previous, sampler2D feedback, int seed, vec3 b1, vec2 f1, vec3 b2, vec2 f2, vec3 b3, vec2 f3, vec3 m0) { - return fx_1(vUV, previous, feedback, seed, b1, f1, b2, f2, b3, f3, m0); // start vec2 uv0 = vUV.st; @@ -327,10 +326,20 @@ subroutine(fx_stage_sub) vec4 fx_11(vec2 vUV, sampler2D previous, sampler2D feed // controls + float wall1 = magic(f1, b1, seed + 10); + float wall2 = magic(f2, b2, seed + 20); + float angle = magic(f3, b3, seed + 30); + // logic vec3 c0 = texture(previous, uv0).xyz; - vec3 c = c0; + + vec2 uv2 = uv1; + uv2 *= rot(angle); + uv2.y = min(uv2.y, 1 - wall1); + uv2.y = -min(-uv2.y, 1 - wall2); + uv2 *= rot(-angle); + vec3 c = reframe(previous, uv2).xyz; return fx_master(c0, c, seed, m0); }