From eca95d5f187d66b5e6f2e089bac6189bc878ddaf Mon Sep 17 00:00:00 2001 From: klemek Date: Wed, 5 Nov 2025 22:41:20 +0100 Subject: [PATCH] docs: more docs --- DEVELOPMENT.md | 98 ++++++++++++++++++++++++ Makefile.dev | 4 - PKGBUILD | 2 +- README.md | 143 +++++++++++++++------------------- images/forge.drawio | 166 ++++++++++++++++++++++++++++++++++++++++ images/forge.drawio.png | Bin 0 -> 65509 bytes 6 files changed, 325 insertions(+), 88 deletions(-) create mode 100644 DEVELOPMENT.md create mode 100644 images/forge.drawio create mode 100644 images/forge.drawio.png diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 0000000..74a5cc8 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,98 @@ +# Working on this project + +## Makefile.dev targets + +```text +clean remove build folder +build build project into build/forge +run run project with test args +demo run project with demo mode +valgrind valgrind analysis +clean-release remove autoconf/automake files +test-release try to build release +release-% make full release of version % +release-arch make arch-linux release package +``` + +## Release guide + +```shell +# make full build +make -f Makefile.dev release-1.0.0 +# push release +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 + +- [x] Basics + - [x] Create GLSL Window + - [x] Load static fragment shader into GLSL + - [x] Add default uniforms + - [x] Read fragment shader from file + - [x] Handle compilation errors + - [x] Minimal working fragment sample + - [x] Hot-reload fragment shader (with arg) + - [x] Specify fragment shader path + - [x] Force fullscreen + - [x] Select screen as argument / config + - [x] fps in window title + - [x] Clean code +- [x] Multi-stage shaders + - [x] Test 2 stages with render to texture + - [x] 2 in 2 fx 1 mix 1 fx layout + - [x] Include common code + - [x] 16 input + 16 fx definition and selection (with const param) + - [x] Feedback texture + - [x] Shaders config file + - [x] uniform config + - [x] fragment config + - [x] subroutines config + - [x] demo mode + - [x] random seed injected into shaders + - [x] internal texture size for speed + - [x] pass state as uniform + - [x] debug shader (and in monitor) + - [x] random mode / demo mode with R/D key + - [x] Clean code and fix things +- [x] Midi + - [x] Read Midi events + - [x] Read midi mapping config file + - [x] Write Midi events + - [x] Send midi data to shaders + - [x] Save midi state + - [x] Load midi state from last save + - [x] State machine with A/B switch + - [x] Tap-tempo feature + - [x] Clean code and fix things +- [x] Video input + - [x] Fixed camera video + - [x] Pass video info to shaders + - [x] Sub process video reading + - [x] Shader based format mapping + - [x] Video mapping config file + - [x] Get first video size matching internal size + - [x] Other internal size for video + - [x] Pass input fps into shaders for debug + - [x] Clean code and fix things +- [x] Monitor screen + - [x] 2nd window + - [x] Use buffers as panels (INA A FXA / DEBUG A+B FXA+B / INB B FXB) + - [x] Clean code and fix things + - [x] Share openGL state between monitor and screen +- [ ] Other + - [ ] Update readme with usage documentation + - [ ] Documentation in default config file + - [x] Clone "shaders" and config in system path at setup + - [ ] Minimal sample shaders + - [ ] Find and fix opengl errors 0500 ? + - [ ] Investigate video device fps loss (bad unregister ?) + - explore libv4l directly [github](https://github.com/philips/libv4l) (with `-lv4l2`) +- [ ] Bonus + - [ ] Record show as text files + - [ ] Play from record text file + - [ ] Try to write NanoKontrol config \ No newline at end of file diff --git a/Makefile.dev b/Makefile.dev index 59dcd05..9fbc063 100644 --- a/Makefile.dev +++ b/Makefile.dev @@ -31,10 +31,6 @@ run: build demo: build ./build/$(TARGET) $(TEST_ARGS) --demo -.PHONY: install -install: build - cp -f build/$(TARGET) $(INSTALL_DIR)/$(TARGET) - .PHONY: valgrind valgrind: build valgrind \ diff --git a/PKGBUILD b/PKGBUILD index 836af2d..fb311ba 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,7 +3,7 @@ pkgver=0.0.0 pkgrel=1 pkgdesc="Fusion Of Real Time Generative Effects" arch=('i686' 'pentium4' 'x86_64' 'arm' 'armv7h' 'armv6h' 'aarch64' 'riscv64') -depends=('glfw>=1:3.0', 'v4l-utils>=1.30', 'alsa-lib>=1.2.14') +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/steel-v${pkgver}/${pkgname}-steel-${pkgver}.tar.gz") sha256sums=('71e2db98e1346b101d175535c30875f28eb21432f4147ecc2b40c9da3973f5fb') diff --git a/README.md b/README.md index 4b11780..52d499b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,33 @@ > **F**usion **O**f **R**eal **T**ime **G**enerative **E**ffects -*Steel version (linux executable)* +*Steel version (PC executable)* + +TODO cool image and youtube link + +## Table of Contents + +- [F.O.R.G.E. (Steel)](#forge-steel) + - [Table of Contents](#table-of-contents) + - [What is FORGE ?](#what-is-forge-) + - [Install](#install) + - [Prerequisites](#prerequisites) + - [From release](#from-release) + - [From repository (PKGBUILD)](#from-repository-pkgbuild) + - [From repository (dev version)](#from-repository-dev-version) + - [Usage](#usage) + - [CLI arguments](#cli-arguments) + - [Included Shaders and Config](#included-shaders-and-config) + - [Making your own FORGE config](#making-your-own-forge-config) + - [Working with `frag0.glsl`](#working-with-frag0glsl) + - [Frequently Asked Questions](#frequently-asked-questions) + - [Why "steel"?](#why-steel) + - [How do I report a bug?](#how-do-i-report-a-bug) + - [Help I got low FPS on my video device](#help-i-got-low-fps-on-my-video-device) + +## What is FORGE ? + +![](images/forge.drawio.png) TODO @@ -12,10 +38,12 @@ TODO ### Prerequisites -* libglfw -* libGL -* libasound2 -* libv4l +| 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 @@ -51,7 +79,9 @@ make make install ``` -## CLI arguments +## Usage + +### CLI arguments ```txt 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] @@ -82,83 +112,30 @@ options: --trace-fps print fps status of subsystems ``` -## Release guide +### Included Shaders and Config -```shell -# make full build -make -f Makefile.dev release-1.0.0 -# push release -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 -``` +TODO -## Roadmap +### Making your own FORGE config -- [x] Basics - - [x] Create GLSL Window - - [x] Load static fragment shader into GLSL - - [x] Add default uniforms - - [x] Read fragment shader from file - - [x] Handle compilation errors - - [x] Minimal working fragment sample - - [x] Hot-reload fragment shader (with arg) - - [x] Specify fragment shader path - - [x] Force fullscreen - - [x] Select screen as argument / config - - [x] fps in window title - - [x] Clean code -- [x] Multi-stage shaders - - [x] Test 2 stages with render to texture - - [x] 2 in 2 fx 1 mix 1 fx layout - - [x] Include common code - - [x] 16 input + 16 fx definition and selection (with const param) - - [x] Feedback texture - - [x] Shaders config file - - [x] uniform config - - [x] fragment config - - [x] subroutines config - - [x] demo mode - - [x] random seed injected into shaders - - [x] internal texture size for speed - - [x] pass state as uniform - - [x] debug shader (and in monitor) - - [x] random mode / demo mode with R/D key - - [x] Clean code and fix things -- [x] Midi - - [x] Read Midi events - - [x] Read midi mapping config file - - [x] Write Midi events - - [x] Send midi data to shaders - - [x] Save midi state - - [x] Load midi state from last save - - [x] State machine with A/B switch - - [x] Tap-tempo feature - - [x] Clean code and fix things -- [x] Video input - - [x] Fixed camera video - - [x] Pass video info to shaders - - [x] Sub process video reading - - [x] Shader based format mapping - - [x] Video mapping config file - - [x] Get first video size matching internal size - - [x] Other internal size for video - - [x] Pass input fps into shaders for debug - - [x] Clean code and fix things -- [x] Monitor screen - - [x] 2nd window - - [x] Use buffers as panels (INA A FXA / DEBUG A+B FXA+B / INB B FXB) - - [x] Clean code and fix things - - [x] Share openGL state between monitor and screen -- [ ] Other - - [ ] Update readme with usage documentation - - [ ] Documentation in default config file - - [x] Clone "shaders" and config in system path at setup - - [ ] Find and fix opengl errors 0500 ? - - [ ] Investigate video device fps loss (bad unregister ?) -- [ ] Bonus - - [ ] Record show as text files - - [ ] Play from record text file - - [ ] Try to write NanoKontrol config \ No newline at end of file +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 diff --git a/images/forge.drawio b/images/forge.drawio new file mode 100644 index 0000000..9822141 --- /dev/null +++ b/images/forge.drawio @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/forge.drawio.png b/images/forge.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..3dfba5b8cecfeb6354bded5d716634f5af69ffb0 GIT binary patch literal 65509 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 KKIP>1&Hn>L`AoI| literal 0 HcmV?d00001