No description
  • C 72.6%
  • C++ 26.8%
  • CMake 0.6%
Find a file
Julien Mazari Garcia 9631338ca4 Add audio spectrum, bitmap text scroller, and CLAUDE.md
- 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>
2026-04-17 14:42:47 +02:00
.claude/memory Add audio spectrum, bitmap text scroller, and CLAUDE.md 2026-04-17 14:42:47 +02:00
include Add audio spectrum, bitmap text scroller, and CLAUDE.md 2026-04-17 14:42:47 +02:00
src Add audio spectrum, bitmap text scroller, and CLAUDE.md 2026-04-17 14:42:47 +02:00
vendor Added DearIMGui for debug and maybe more 2026-04-16 16:07:18 +02:00
.gitignore initial commit SDL/GLAD skeleton 2026-04-16 15:37:35 +02:00
.gitmodules Added DearIMGui for debug and maybe more 2026-04-16 16:07:18 +02:00
CLAUDE.md Add audio spectrum, bitmap text scroller, and CLAUDE.md 2026-04-17 14:42:47 +02:00
CMakeLists.txt Add bb8 bytebeat audio playback 2026-04-17 13:06:10 +02:00
README.md Add audio spectrum, bitmap text scroller, and CLAUDE.md 2026-04-17 14:42:47 +02:00

plasma

Cube 3D rotatif dont chaque face affiche un effet shader procédural différent, avec accompagnement audio bytebeat en temps réel.

plasma cube SDL3 PipeWire

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 (18×)
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)