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