sdl3gpu
This commit is contained in:
40
CLAUDE.md
40
CLAUDE.md
@@ -11,14 +11,15 @@ Coffee Crisis is a C++20 arcade game built with SDL3. The player controls a char
|
||||
Dependencies: `libsdl3-dev` and `g++` (Linux) or `clang++` (macOS). Build system is CMake (driven by `Makefile` wrappers).
|
||||
|
||||
```bash
|
||||
make # Release build
|
||||
make debug # Debug build (defines DEBUG and PAUSE)
|
||||
make release # Empaqueta .tar.gz / .dmg / .zip segons SO
|
||||
make pack # Regenera resources.pack
|
||||
make controllerdb # Descarga gamecontrollerdb.txt
|
||||
make format # clang-format -i
|
||||
make tidy # clang-tidy
|
||||
make cppcheck # cppcheck
|
||||
make # Release build
|
||||
make debug # Debug build (defines DEBUG and PAUSE)
|
||||
make release # Empaqueta .tar.gz / .dmg / .zip segons SO
|
||||
make pack # Regenera resources.pack
|
||||
make compile_shaders # Compila shaders GLSL → headers SPIR-V (requereix glslc)
|
||||
make controllerdb # Descarga gamecontrollerdb.txt
|
||||
make format # clang-format -i
|
||||
make tidy # clang-tidy
|
||||
make cppcheck # cppcheck
|
||||
```
|
||||
|
||||
## Architecture
|
||||
@@ -33,6 +34,10 @@ source/
|
||||
│ ├── input/ input.*, mouse.*
|
||||
│ ├── locale/ lang.*
|
||||
│ ├── rendering/ screen, fade, text, writer, texture, sprite + animated/moving/smart
|
||||
│ │ ├── shader_backend.hpp (interfície abstracta de post-procesado)
|
||||
│ │ └── sdl3gpu/ (pipeline SDL3 GPU)
|
||||
│ │ ├── sdl3gpu_shader.* (implementació del backend GPU)
|
||||
│ │ └── spv/ (headers SPIR-V generats — protegits amb dummies `.clang-*`)
|
||||
│ ├── resources/ asset, resource, resource_pack, resource_loader, resource_helper
|
||||
│ └── system/ director
|
||||
├── game/
|
||||
@@ -66,6 +71,24 @@ Flux general controlat per la classe **Director** (`core/system/director.h`): in
|
||||
|
||||
**jail_audio** (`core/audio/jail_audio.hpp`): wrapper audio SDL3 first-party. Usa stb_vorbis per OGG. API `JA_*` per música i efectes amb mesclat per canals.
|
||||
|
||||
### GPU / shaders (post-procesado)
|
||||
|
||||
Pipeline SDL3 GPU portat de `coffee_crisis_arcade_edition`. El canvas 256×192 es pot passar per un backend GPU que aplica PostFX (vinyeta, scanlines, chroma, gamma, mask, curvatura, bleeding, flicker) o CrtPi (scanlines continues amb bloom). Fallback transparent al `SDL_Renderer` clàssic si la GPU falla o si es desactiva.
|
||||
|
||||
- **Interfície**: `core/rendering/shader_backend.hpp` (`Rendering::ShaderBackend`).
|
||||
- **Implementació**: `core/rendering/sdl3gpu/sdl3gpu_shader.*` + shaders GLSL a `data/shaders/` compilats a `spv/*_spv.h` via `glslc` (o precompilats si no hi ha `glslc`).
|
||||
- **Emscripten**: compile-time `NO_SHADERS` → sempre ruta clàssica.
|
||||
- **macOS**: shaders Metal (MSL) inline dins `sdl3gpu_shader.cpp`; no SPIR-V.
|
||||
- **Opcions persistents** a `config.txt` (migració a YAML pendent):
|
||||
- `videoGpuAcceleration` (bool)
|
||||
- `videoGpuPreferredDriver` (string, buit = auto)
|
||||
- `videoShaderEnabled` (bool)
|
||||
- `videoShaderType` (0=POSTFX, 1=CRTPI)
|
||||
- **Hotkeys** (provisionals fins que hi hagi menú d'opcions): `F9` toggle GPU · `F10` toggle shader · `F11` alterna POSTFX ↔ CRTPI.
|
||||
- **API** a `Screen`: `setGpuAcceleration`/`toggleGpuAcceleration`/`isGpuAccelerated`, `setShaderEnabled`/`toggleShaderEnabled`/`isShaderEnabled`, `setActiveShader`/`toggleActiveShader`/`getActiveShader`.
|
||||
|
||||
Presets PostFX/CrtPi i cicle de presets encara **no** estan implementats — arribaran amb la migració a YAML. Per ara, valors per defecte hardcoded.
|
||||
|
||||
## Data Directory
|
||||
|
||||
- `data/gfx/` — PNG spritesheets and `.ani` animation definition files
|
||||
@@ -74,6 +97,7 @@ Flux general controlat per la classe **Director** (`core/system/director.h`): in
|
||||
- `data/lang/` — language files (es_ES, ba_BA, en_UK)
|
||||
- `data/demo/` — demo recording data (gamecontrollerdb.txt vive en la raíz del proyecto, fuera del pack)
|
||||
- `data/menu/` — menu definition files
|
||||
- `data/shaders/` — fonts GLSL per al post-procesado SDL3 GPU (no van al pack; s'empotren al binari via headers SPIR-V)
|
||||
|
||||
## Language
|
||||
|
||||
|
||||
Reference in New Issue
Block a user