2025-09-18 18:34:48 +02:00
2025-09-20 20:02:29 +02:00
2025-09-18 18:14:28 +02:00
2025-09-18 18:14:28 +02:00
2025-09-13 15:41:31 +02:00
2025-07-17 19:34:00 +02:00
2025-09-12 23:29:04 +02:00
2025-09-18 18:14:28 +02:00
2025-09-13 15:38:52 +02:00
2025-09-18 18:33:45 +02:00
2025-09-20 17:40:42 +02:00
2025-09-20 20:31:51 +02:00
2025-09-11 00:31:34 +02:00

CI

F.O.R.G.E.

Fusion Of Real Time Generative Effects

TODO

Install

Prerequisites

  • libglfw
  • libGL

From release

See Releases

tar xvzf forge-x.y.z.tar.gz
cd forge-x.y.z
./configure
make
make install

From repository (PKGBUILD)

git clone --recursive https://github.com/klemek/forge
cd forge
makepkg -si

From repository (dev version)

git clone --recursive https://github.com/klemek/forge
cd forge
aclocal
autoconf
automake --add-missing
./configure
make
make install

CLI arguments

usage: forge [-h] [-v] [-hr] [-s=SCREEN] [-f=DIR_PATH] [-fc=CFG_PATH] [-t=TEMPO] [--demo] 

Fusion Of Real-time Generative Effects.

options:
  -h, --help          show this help message and exit
  -v, --version       print version
  -hr, --hot-reload   hot reload of shaders scripts
  -s, --screen        output screen number (default: primary)
  -f, --frag          fragment shaders directory (default: TODO)
  -fc, --frag-config  fragment shaders config file (default: TODO)
  -t, --tempo         base tempo (default: 120)
  --demo              demonstration mode

Release guide

# get latest version
git pull origin master
# update configure.ac with new version
$EDITOR configure.ac
# make full build
make -f Makefile.dev release
# update PKGBUILD with new version and sha256 sum
sha256sum build/forge-x.y.z.tar.gzx
$EDITOR PKGBUILD
# push to repo
git commit -am "forge vX.Y.Z"
git tag vX.Y.Z
git push origin master --tags
# create release from tag on github
# attach .tar.gz to the github release
make -f Makefile.dev release-arch
# attach .pkg.tar.zst to the github release

Roadmap

  • Basics
    • Create GLSL Window
    • Load static fragment shader into GLSL
    • Add default uniforms
    • Read fragment shader from file
    • Handle compilation errors
    • Minimal working fragment sample
    • Hot-reload fragment shader (with arg)
    • Specify fragment shader path
    • Force fullscreen
    • Select screen as argument / config
    • fps in window title
    • Clean code
  • Multi-stage shaders
    • Test 2 stages with render to texture
    • 2 in 2 fx 1 mix 1 fx layout
    • Include common code
    • 16 input + 16 fx definition and selection (with const param)
    • Feedback texture
    • Shaders config file
      • uniform config
      • fragment config
      • subroutines config
    • demo mode
    • random seed injected into shaders
    • internal texture size for speed
    • pass state as uniform
    • debug shader (and in monitor)
    • random mode / demo mode with R/D key
    • Clean code and fix things
  • Midi
    • Read Midi events
    • Read midi mapping config file
    • Write Midi events
    • Save midi state
    • State machine with A/B switch
    • Tap-tempo feature
    • Clean code and fix things
  • Video input
    • Fixed camera video
    • Video mapping config file
    • Clean code and fix things
  • Monitor screen
    • 2nd window
    • Use buffers as panels (INA A FXA / DEBUG A+B FXA+B / INB B FXB)
    • Clean code and fix things
  • Packaging & install
    • Clone "shaders" and config in system path at setup
S
Description
Discover an engine where user-defined fragment shaders collide to produce stunning visuals.
Readme 18 MiB
2025-11-12 23:41:47 +01:00
Languages
C 89.7%
GLSL 9.7%
Makefile 0.2%
Python 0.2%