- C 72.6%
- C++ 26.8%
- CMake 0.6%
- Spectre audio : FFT Cooley-Tukey 512pt sur samples bytebeat ré-évalués localement (formule déterministe), 64 barres avec lissage attack/decay, texture 1D GL_R32F, shader dégradé bleu→cyan→magenta - Texte défilant : police bitmap 8x8 embarquée (font8x8.h, ASCII 32-127), atlas GL_R8 768x8, chaîne via usampler1D (GL_R8UI), double passe ombre+texte, chaque caractère suit un sinus individuel avec déphasage (u_phase_step) - CLAUDE.md : documentation architecture pour Claude Code - Sliders ImGui pour tous les paramètres des deux overlays Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .claude/memory | ||
| include | ||
| src | ||
| vendor | ||
| .gitignore | ||
| .gitmodules | ||
| CLAUDE.md | ||
| CMakeLists.txt | ||
| README.md | ||
plasma
Cube 3D rotatif dont chaque face affiche un effet shader procédural différent, avec accompagnement audio bytebeat en temps réel.
Effets
| Face | Effet | Description |
|---|---|---|
| 0 | plasma | Ondes sinusoïdales colorées |
| 1 | tunnel | Tunnel infini en perspective |
| 2 | stars | Champ d'étoiles multicouches |
| 3 | grid | Grille en perspective animée |
| 4 | fire | Feu procédural via FBM |
| 5 | noise | Terrain coloré via bruit fractal |
Les 6 effets sont rendus simultanément dans un atlas FBO 512×768, puis appliqués comme texture sur le cube.
Overlays premier plan
Spectre audio
Visualisation FFT du bytebeat en bas de l'écran. La formule est ré-évaluée localement (déterministe) pour extraire 512 samples par frame ; une FFT Cooley-Tukey radix-2 produit 64 barres spectrales avec lissage attack/decay. Dégradé bleu→cyan→magenta, rendu via blending alpha.
Texte défilant
Marquee bitmap 8×8 (police ASCII embarquée dans include/font8x8.h) qui défile de droite à gauche. Chaque caractère suit individuellement un sinus avec déphasage progressif, créant un effet de vague lettre par lettre. Double passe shader : ombre noire décalée puis texte en dégradé jaune→magenta.
Audio
Un bytebeat joue en fond via bb8 (PipeWire). La formule par défaut :
(t*(t>>5|t>>8))>>(t>>16)
Dépendances
- OpenGL 3.3+
- SDL3
- GLM
- PipeWire (
libpipewire-0.3) - ImGui (submodule
vendor/imgui) - bb8 (chemin local
/home/corecaps/src/bb8/lib)
Build
git clone --recurse-submodules <repo>
cd plasma
mkdir build && cd build
cmake ..
cmake --build .
Contrôles
| Touche / Widget | Action |
|---|---|
Escape |
Quitter |
| Slider rotation | Vitesse de rotation du cube |
| Slider speed | Vitesse globale des effets |
| Checkbox wireframe | Mode filaire |
| Slider spec height | Hauteur de la zone spectre (fraction écran) |
| Slider spec scale | Gain sur les magnitudes FFT |
| Slider text scale | Taille des glyphes (1–8×) |
| Slider text speed | Vitesse de défilement (px/s) |
| Slider sine amp | Amplitude de la vague de texte |
| Slider sine freq | Fréquence angulaire de la vague |
| Slider phase step | Déphasage sinus entre lettres (rad) |