2025-11-09 22:57:14 +01:00
2025-11-09 22:57:14 +01:00
2025-09-18 18:14:28 +02:00
2025-11-05 23:55:40 +01:00
2025-09-13 15:41:31 +02:00
2025-07-17 19:34:00 +02:00
2025-11-08 23:18:19 +01:00
2025-09-21 17:46:19 +02:00
2025-11-01 20:39:24 +01:00
2025-11-09 22:57:14 +01:00
2025-11-08 18:24:52 +01:00
2025-11-05 22:41:20 +01:00
2025-11-09 22:50:09 +01:00

CI

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 b

Table of Contents

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
  • A: Auto Random mode On/Off

CLI arguments

usage: forge [-h] [-v] [-p=PROJECT_PATH] [-c=CFG_FILE] [-hr] [-s=SCREEN] [-m=SCREEN] [-mo] [-w] [-t=TEMPO] [-d] [-ar / -nar] [-v=FILE] [-vs=SIZE] [-is=SIZE] [-sf=STATE_PATH] [-ls / -nls] [-ss / -nss] [-tm] [-tf] 

Fusion Of Real-time Generative Effects.

options:
  -h, --help                show this help message and exit
  -v, --version             print version
  -p, --project             forge project directory (default: /usr/share/forge/default)
  -c, --config              config file name (default: forge_project.cfg)
  -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
  -w, --windowed            not fullscreen
  -t, --tempo               base tempo (default: 60)
  -d, --demo                demonstration mode (assume --no-save-state, --no-load-state, --auto-random)
  -ar, --auto-random        randomize state every 4 beats
  -nar, --no-auto-random    do not randomize state (default)
  -v, --video-in            path to video capture device (multiple allowed)
  -vs, --video-size         video capture desired height (default: internal texture height)
  -is, --internal-size      internal texture height (default: 720)
  -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
  -tm, --trace-midi         print midi code and values
  -tf, --trace-fps          print fps status of subsystems

Default Project

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 Sentences repeat X Shift Sentence Vertical repeat CP437 Zoom Charset Char. Delta
9 Isometric grid Zoom Scroll Elevation Lens Lens limit Lens power Pre Zoom
3 A Video In 2 + Thru Hue Saturation Light Spill Bottom limit Top Limit Rotation
B Scales Zoom Shape Ripples Game Of Life Pixel Size Ruleset/Threshold Feedback
C Credenza Zoom Shape Ripples Sobel Filter Horz. filter Vert. filter Filter Size
D Cursor Size Pos X Pos Y (same as 0)
E (Random source) --- --- --- (Random effect) --- --- ---

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 project

TODO

forge_project.cfg

TODO

Writing your fragment shaders

TODO

Working with #include

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

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%