7.7 KiB
F.O.R.G.E. (Steel)
Fusion Of Real-time Generative Effects
Steel version (PC executable)
Discover an engine where user-defined fragment shaders collide to produce stunning visuals.
See Demo #1 - 1H and Demo #2 - Monitor View on YouTube
Table of Contents
- What is FORGE ?
- Install
- Usage
- Default Shaders and Config
- Making your own FORGE config
- Frequently Asked Questions
What is FORGE ?
TODO
Install
Prerequisites
| library | apt | pacman |
|---|---|---|
| libglfw | libglfw3-dev | extra/glfw |
| libGL | libgl-dev | extra/libglvnd |
| libasound | libasound2-dev | extra/alsa-lib |
| libv4l2 | libv4l-dev | extra/v4l-utils |
From release
See Releases
tar xvzf forge-steel-x.y.z.tar.gz
cd forge-steel-x.y.z
./configure
make
make install
From repository (PKGBUILD)
git clone --recursive https://github.com/klemek/forge-steel
cd forge
makepkg -si
From repository (dev version)
git clone --recursive https://github.com/klemek/forge-steel
cd forge
aclocal
autoconf
automake --add-missing
./configure
make
make install
Usage
Runtime keybindings
When running, the following keybindings are available:
- Esc: Exit window
- R: Randomize shader state
- D: Demo mode On/Off
CLI arguments
usage: forge [-h] [-v] [-hr] [-s=SCREEN] [-m=SCREEN] [-mo] [-f=DIR_PATH] [-c=CFG_PATH] [-sf=STATE_PATH] [-ls / -nls] [-ss / -nss] [-is=SIZE] [-v=FILE] [-vs=SIZE] [-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: /usr/share/forge/shaders)
-c, --config fragment shaders config file (default: /usr/share/forge/default.cfg)
-sf, --state-file saved state file (default: forge_saved_state.txt)
-ls, --load-state load saved state (default)
-nls, --no-load-state do not load saved state
-ss, --save-state save state (default)
-nss, --no-save-state do not save state
-is, --internal-size internal texture height (default: 720)
-v, --video-in path to video capture device (multiple allowed)
-vs, --video-size video capture desired height (default: internal texture height)
-t, --tempo base tempo (default: 60)
--demo demonstration mode (assume --no-save-state and --no-load-state)
-w, --windowed not fullscreen
--trace-midi print midi code and values
--trace-fps print fps status of subsystems
Default Shaders and Config
A.K.A Kleπek's shaders
Sources and Effects
| P | # | SRC | COL2 | COL3 | COL4 | FX | COL6 | COL7 | COL8 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | Feedback + Thru | Hue | Saturation | Light | Thru | Hue | Saturation | _Light |
| 1 | Lines | Thick. / Dezoom | Rotation | Distortion | Feedback + Shift | Zoom / Dezoom | X Shift | Y Shift | |
| 2 | Dots | Zoom | Rotation | Lens | Shift | Zoom / Dezoom | X Shift | Y Shift | |
| 3 | Waves | Spacing | Thickness | Vert. Scroll (R) | Colorize | Black Color | White Color | Shift | |
| 4 | Noise | Zoom | Voronoi dist. | Details | Quantize | Pixel Size | Bit Depth | Blur | |
| 2 | 5 | Video In 1 + Thru | Hue | Saturation | Light | Dithering | Pixel Size | Bit Depth | Blur |
| 6 | CP437 | Zoom | Charset | Char. Delta | TV | Lens | Horz. Noise | Dezoom | |
| 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 | ||||
| B | |||||||||
| C | |||||||||
| D | |||||||||
| E | Debug | --- | --- | --- |
TODO update
Debug View
NanoKontrol2 Controller mapping
In blue is a sample "stage" as most sources/effects use a combination of 4 stages (see table above)
⚠️ you'll need to change your NanoKontrol2 settings to remove the "toggle" behavior of the buttons and use "external" led control
Making your own FORGE config
TODO
Working with frag0.glsl
TODO
Frequently Asked Questions
Why "steel"?
FORGE is a concept which is intended to be derived onto other forms (like Raspberry PI). In order to differentiate between them each would be name after a different alloy.
FORGE (steel) describe the linux version.
How do I report a bug?
TODO
Help I got low FPS on my video device
TODO



