No description
  • C++ 99.5%
  • CMake 0.4%
  • Shell 0.1%
Find a file
Julien Mazari Garcia 0375b576f8 Initial commit: introforge demoscene project generator
Standalone CLI tool that scaffolds a fullscreen-triangle OpenGL 3.3 demo
project (SDL3, ImGui, GLM, GLAD, stb_image, PipeWire) from embedded templates.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 16:41:10 +02:00
include Initial commit: introforge demoscene project generator 2026-04-22 16:41:10 +02:00
src Initial commit: introforge demoscene project generator 2026-04-22 16:41:10 +02:00
.gitignore Initial commit: introforge demoscene project generator 2026-04-22 16:41:10 +02:00
build.sh Initial commit: introforge demoscene project generator 2026-04-22 16:41:10 +02:00
CMakeLists.txt Initial commit: introforge demoscene project generator 2026-04-22 16:41:10 +02:00
README.md Initial commit: introforge demoscene project generator 2026-04-22 16:41:10 +02:00

introforge

Demoscene project generator for Arch Linux.

Single binary, no runtime dependencies. Embeds all project templates.

Stack generated

Component Role
OpenGL 3.3 fullscreen triangle FST
SDL3 window + events
ImGui debug overlay
GLM math
GLAD OpenGL loader
stb_image texture loading
PipeWire real-time audio engine

Build introforge

# Dependencies (Arch Linux)
sudo pacman -S cmake clang sdl3 glm pipewire git

bash build.sh

Usage

./build/introforge my-demo
cd my-demo
bash build.sh
bash run.sh

Generated project keys

Key Action
ESC quit
F1 toggle ImGui
R reload shader
F11 fullscreen

Architecture

introforge/
├── src/
│   ├── main.cpp          — CLI entry point
│   └── generator.cpp     — file tree generator
├── include/
│   ├── generator.hpp     — Generator + ProjectConfig
│   └── templates.hpp     — all embedded file content
└── CMakeLists.txt

All generated content lives in templates.hpp as constexpr string_view. Adding a new template = adding a constant + one write_file() call.

Future flags

introforge my-demo --raymarch    # raymarch scaffold
introforge my-demo --audio       # audio-only project
introforge my-demo --minimal     # no ImGui / PipeWire

Flags are parsed but not yet dispatched — add a write_*_raymarch() method to Generator and branch on cfg_.enable_raymarch.

Notes on third_party

GLAD sources must be downloaded separately from https://glad.dav1d.de/ (OpenGL 3.3 core, C/C++ loader) and placed in third_party/glad/. The generator writes a README.md in that directory as a reminder.

stb_image.h: https://github.com/nothings/stb/blob/master/stb_image.h Place in third_party/stb/.