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] Add NanoKontrol setup file
- [x] Find and fix opengl errors 0500 ?
- [ ] Bonus
- [ ] Improvements
- [ ] Record show as text files
- [ ] Play from record text file
- [ ] Key codes as inputs
- [ ] Mouse position and scroll as inputs
- [ ] Fixes
- [ ] Try to write NanoKontrol config
- [ ] Investigate video device fps loss (bad unregister ?)
- explore libv4l directly [github](https://github.com/philips/libv4l) (with `-lv4l2`)
+1
View File
@@ -54,6 +54,7 @@ clean-release:
configure~ \
depcomp \
**/.deps \
**/**/.deps \
$(TARGET) \
$(TARGET)-*.tar.gz \
$(TARGET)-*.pkg.tar.zst \
+2 -2
View File
@@ -1,12 +1,12 @@
pkgname=forge-steel
pkgver=1.0.0
pkgver=1.0.1
pkgrel=1
pkgdesc="Fusion Of Real Time Generative Effects"
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')
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")
sha256sums=('da61207bc8af1b71544f5e35e99e7ea8dbbb72b77c0c7dc21f05ba694c28cdfa')
sha256sums=('b2345c1a87f6b5b13dcce6a237a3f9a9ddb7fa9c3e982f5e164e7d7fef5725f3')
srcdir=build
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 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.
+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
AC_PROG_CC
+2 -1
View File
@@ -12,6 +12,7 @@ out vec4 fragColor;
#include inc_magic.glsl
#include inc_functions.glsl
uniform int iDemo;
uniform sampler2D iTex7;
uniform sampler2D iTex8;
uniform int iSeed7;
@@ -26,7 +27,7 @@ void main() {
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);
}
+2
View File
@@ -13,6 +13,7 @@ uniform vec2 iInputResolution2;
uniform int iInputFormat1;
uniform int iInputFormat2;
uniform int iDemo;
uniform int iAutoRand;
uniform int iPage;
uniform int iSelected;
@@ -99,6 +100,7 @@ vec4 debug(vec2 vUV)
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);
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);
// logic
+5 -7
View File
@@ -3,13 +3,11 @@
#ifndef INC_MAGIC
#define INC_MAGIC
uniform int iDemo;
vec2 magic_f(vec2 F, vec3 B, float i)
{
return vec2(
mix(F.x, randTime(i + 1), min(1, B.z + iDemo)),
mix(F.y, randTime(i + 2), 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))
);
}
@@ -21,9 +19,9 @@ vec2 magic_f(float i)
vec3 magic_b(vec3 B, float i)
{
return vec3(
mix(B.x, step(0.2, randTime(i + 3)), min(1, B.z + iDemo)),
mix(B.y, step(0.5, randTime(i + 4)), min(1, B.z + iDemo)),
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)),
min(1, B.z)
);
}
+2
View File
@@ -5,6 +5,8 @@
#ifndef INC_SRC
#define INC_SRC
uniform int iDemo;
uniform sampler2D iTex0;
uniform sampler2D iTex3;
uniform sampler2D iTex4;