4 Commits

Author SHA1 Message Date
klemek fcd829e79f forge (steel) v1.0.1 2025-11-12 23:41:47 +01:00
klemek a3d9baf18c fix: iDemo redundant with autorandom 2025-11-12 23:41:09 +01:00
klemek 3903149549 build: fix clean-release 2025-11-12 23:40:41 +01:00
klemek 4d984d1e28 docs: update README and DEVELOPMENT 2025-11-12 23:31:55 +01:00
9 changed files with 20 additions and 13 deletions
+4 -1
View File
@@ -117,9 +117,12 @@ make -f Makefile.dev release-arch
- [x] Printable PDF of default scr/fx - [x] Printable PDF of default scr/fx
- [x] Add NanoKontrol setup file - [x] Add NanoKontrol setup file
- [x] Find and fix opengl errors 0500 ? - [x] Find and fix opengl errors 0500 ?
- [ ] Bonus - [ ] Improvements
- [ ] Record show as text files - [ ] Record show as text files
- [ ] Play from record text file - [ ] Play from record text file
- [ ] Key codes as inputs
- [ ] Mouse position and scroll as inputs
- [ ] Fixes
- [ ] Try to write NanoKontrol config - [ ] Try to write NanoKontrol config
- [ ] Investigate video device fps loss (bad unregister ?) - [ ] Investigate video device fps loss (bad unregister ?)
- explore libv4l directly [github](https://github.com/philips/libv4l) (with `-lv4l2`) - explore libv4l directly [github](https://github.com/philips/libv4l) (with `-lv4l2`)
+1
View File
@@ -54,6 +54,7 @@ clean-release:
configure~ \ configure~ \
depcomp \ depcomp \
**/.deps \ **/.deps \
**/**/.deps \
$(TARGET) \ $(TARGET) \
$(TARGET)-*.tar.gz \ $(TARGET)-*.tar.gz \
$(TARGET)-*.pkg.tar.zst \ $(TARGET)-*.pkg.tar.zst \
+2 -2
View File
@@ -1,12 +1,12 @@
pkgname=forge-steel pkgname=forge-steel
pkgver=1.0.0 pkgver=1.0.1
pkgrel=1 pkgrel=1
pkgdesc="Fusion Of Real Time Generative Effects" pkgdesc="Fusion Of Real Time Generative Effects"
arch=('i686' 'pentium4' 'x86_64' 'arm' 'armv7h' 'armv6h' 'aarch64' 'riscv64') arch=('i686' 'pentium4' 'x86_64' 'arm' 'armv7h' 'armv6h' 'aarch64' 'riscv64')
depends=('glfw>=1:3', 'v4l-utils>=1.32', 'alsa-lib>=1.2', 'libglvnd>=1.7') depends=('glfw>=1:3', 'v4l-utils>=1.32', 'alsa-lib>=1.2', 'libglvnd>=1.7')
url="https://github.com/klemek/forge-steel" url="https://github.com/klemek/forge-steel"
source=("${pkgname}-steel-${pkgver}.tar.gz::https://github.com/klemek/forge-steel/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz") source=("${pkgname}-steel-${pkgver}.tar.gz::https://github.com/klemek/forge-steel/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz")
sha256sums=('da61207bc8af1b71544f5e35e99e7ea8dbbb72b77c0c7dc21f05ba694c28cdfa') sha256sums=('b2345c1a87f6b5b13dcce6a237a3f9a9ddb7fa9c3e982f5e164e7d7fef5725f3')
srcdir=build srcdir=build
backup=("usr/share/${pkgname}") backup=("usr/share/${pkgname}")
+1 -1
View File
@@ -89,7 +89,7 @@ Here are some pointers if you want to customize your FORGE experience:
![FORGE concept schema](./docs/forge.drawio.png) ![FORGE concept schema](./docs/forge.drawio.png)
FORGE is an engine rendering a project into visuals. FORGE is an graphical engine rendering a project into visuals.
Using OpenGL GLSL language, it talks to your graphic card to generate layers of textures defined by the fragment shaders and outputs it to your screen. Using OpenGL GLSL language, it talks to your graphic card to generate layers of textures defined by the fragment shaders and outputs it to your screen.
+1 -1
View File
@@ -1,4 +1,4 @@
AC_INIT([forge], [steel-1.0.0], [klemek.dev@proton.me]) AC_INIT([forge], [steel-1.0.1], [klemek.dev@proton.me])
AM_INIT_AUTOMAKE AM_INIT_AUTOMAKE
AC_PROG_CC AC_PROG_CC
+2 -1
View File
@@ -12,6 +12,7 @@ out vec4 fragColor;
#include inc_magic.glsl #include inc_magic.glsl
#include inc_functions.glsl #include inc_functions.glsl
uniform int iDemo;
uniform sampler2D iTex7; uniform sampler2D iTex7;
uniform sampler2D iTex8; uniform sampler2D iTex8;
uniform int iSeed7; uniform int iSeed7;
@@ -26,7 +27,7 @@ void main() {
float k = mean(color_a); float k = mean(color_a);
mix_value = mix(mix_value * 0.9 + 0.05, mix_value, 1 - iDemo); mix_value = mix(mix_value, mix_value * 0.9 + 0.05, iDemo);
fragColor = mix(color_b, color_a, mix_type ? step(mix_value, k) : mix_value); fragColor = mix(color_b, color_a, mix_type ? step(mix_value, k) : mix_value);
} }
+2
View File
@@ -13,6 +13,7 @@ uniform vec2 iInputResolution2;
uniform int iInputFormat1; uniform int iInputFormat1;
uniform int iInputFormat2; uniform int iInputFormat2;
uniform int iDemo;
uniform int iAutoRand; uniform int iAutoRand;
uniform int iPage; uniform int iPage;
uniform int iSelected; uniform int iSelected;
@@ -99,6 +100,7 @@ vec4 debug(vec2 vUV)
float mfx_value = magic(iMidi2_3[6].xy, vec3(1, 0, 0), iSeed8); float mfx_value = magic(iMidi2_3[6].xy, vec3(1, 0, 0), iSeed8);
bool mfx_invert = magic_trigger(vec3(iMidi2_3[6].z, 0, 0), iSeed8); bool mfx_invert = magic_trigger(vec3(iMidi2_3[6].z, 0, 0), iSeed8);
float mix_value = magic(iMidi3_1[1].xy, vec3(1, 0, 0), iSeed7); float mix_value = magic(iMidi3_1[1].xy, vec3(1, 0, 0), iSeed7);
mix_value = mix(mix_value, mix_value * 0.9 + 0.05, iDemo);
bool mix_type = magic_trigger(vec3(iMidi3_1[0].x, 0, 0), iSeed7 + 10); bool mix_type = magic_trigger(vec3(iMidi3_1[0].x, 0, 0), iSeed7 + 10);
// logic // logic
+5 -7
View File
@@ -3,13 +3,11 @@
#ifndef INC_MAGIC #ifndef INC_MAGIC
#define INC_MAGIC #define INC_MAGIC
uniform int iDemo;
vec2 magic_f(vec2 F, vec3 B, float i) vec2 magic_f(vec2 F, vec3 B, float i)
{ {
return vec2( return vec2(
mix(F.x, randTime(i + 1), min(1, B.z + iDemo)), mix(F.x, randTime(i + 1), min(1, B.z)),
mix(F.y, randTime(i + 2), min(1, B.z + iDemo)) mix(F.y, randTime(i + 2), min(1, B.z))
); );
} }
@@ -21,9 +19,9 @@ vec2 magic_f(float i)
vec3 magic_b(vec3 B, float i) vec3 magic_b(vec3 B, float i)
{ {
return vec3( return vec3(
mix(B.x, step(0.2, randTime(i + 3)), min(1, B.z + iDemo)), mix(B.x, step(0.2, randTime(i + 3)), min(1, B.z)),
mix(B.y, step(0.5, randTime(i + 4)), min(1, B.z + iDemo)), mix(B.y, step(0.5, randTime(i + 4)), min(1, B.z)),
min(1, B.z + iDemo) min(1, B.z)
); );
} }
+2
View File
@@ -5,6 +5,8 @@
#ifndef INC_SRC #ifndef INC_SRC
#define INC_SRC #define INC_SRC
uniform int iDemo;
uniform sampler2D iTex0; uniform sampler2D iTex0;
uniform sampler2D iTex3; uniform sampler2D iTex3;
uniform sampler2D iTex4; uniform sampler2D iTex4;