ed4e3e54d662b46bec3b0b8269e2e60728c75460
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] [-m=SCREEN] [-mo] [-f=DIR_PATH] [-fc=CFG_PATH] [-is=SIZE] [-mf=FACTOR] [-t=TEMPO] [--demo] [-w]
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)
-m, --monitor monitor screen number (default: none)
-mo, --monitor-only no output screen
-f, --frag fragment shaders directory (default: TODO)
-fc, --frag-config fragment shaders config file (default: TODO)
-is, --internal-size internal texture height (default: 720)
-mf, --monitor-factor monitor internal texture downscale factor (default: 3)
-t, --tempo base tempo (default: 60)
--demo demonstration mode
-w, --windowed not fullscreen
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
- Pass video info to shaders
- Sub process video reading
- Shader based format mapping
- 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
- Share openGL state between monitor and screen
- Other
- Clone "shaders" and config in system path at setup
- Find and fix opengl errors 0500 ?
Description
Discover an engine where user-defined fragment shaders collide to produce stunning visuals.
Releases
2
FORGE steel-1.0.1
Latest
Languages
C
89.7%
GLSL
9.7%
Makefile
0.2%
Python
0.2%