Files
forge-steel/DEVELOPMENT.md
T
2025-11-10 19:17:35 +01:00

124 lines
4.0 KiB
Markdown

# 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
- [x] Default project
- [x] split with includes
- [x] src 9 : sentences repeat h
- [x] src 10 : isometric grid
- [x] src 12 : pattern in my kitchen
- [x] src 13 : another pattern in my kitchen
- [x] src 14 : cursor with select
- [x] src 15 : random source
- [x] fx 11 : spill
- [x] fx 12 : game of life
- [x] fx 13 : sobel
- [x] fx 14 : colorize range (pretty color ranges)
- [x] fx 15 : random fx
- [x] frag 10 : move debug screen here
- [x] debug : add src/fx/A/B indicators
- [ ] Other
- [x] `forge_project.cfg`
- [x] Define frag prefix in config
- [x] Use custom `#include xxx.glsl` preprocessor
- [x] Use snprintf isntead of sprintf (and strlcpy instand of strncpy)
- [x] Pass "heavy" struct as pointer to avoid stack overload
- [x] Clean and sort args
- [x] `--auto-random` / `--no-auto-random`
- [x] Dump failed compilation into tmp file
- [x] Update readme with usage documentation
- [ ] Sample gif in README
- [x] Documentation in default config file
- [x] Clone "shaders" and config in system path at setup
- [ ] Minimal sample shaders
- [ ] Hotkey `0` to reset everything
- [x] Add NanoKontrol setup file
- [x] Find and fix opengl errors 0500 ?
- [ ] Bonus
- [ ] Record show as text files
- [ ] Play from record text file
- [ ] Try to write NanoKontrol config
- [ ] Investigate video device fps loss (bad unregister ?)
- explore libv4l directly [github](https://github.com/philips/libv4l) (with `-lv4l2`)