feat(macos): suport Metal per GpuShaderPreset via spirv-cross

- CMakeLists: bloc if(APPLE) que transpila .spv → .spv.msl amb spirv-cross
- gpu_shader_preset: carrega MSL (main0) a macOS, SPIR-V (main) a la resta
- Afegeix null-terminator als buffers MSL (SDL3 els tracta com C-string)
- README: secció de dependències de shaders per plataforma (Vulkan SDK, spirv-cross)
- Inclou .spv.msl generats per ntsc-md-rainbows

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-20 13:54:05 +01:00
parent f272bab296
commit 5b4a970157
7 changed files with 611 additions and 27 deletions

View File

@@ -531,49 +531,92 @@ vibe3_physics/
## 🔧 Requisitos del Sistema
- **SDL3** (Simple DirectMedia Layer 3)
- **SDL3_ttf** (fuentes TTF para SDL3)
- **C++20** compatible compiler (GCC 10+, Clang 12+, MSVC 2019+)
- **CMake 3.20+** o **Make**
- **CMake 3.20+**
- **Plataforma**: Windows, Linux, macOS
### Instalación de SDL3
### Dependencias de shaders
El proyecto compila shaders GLSL a SPIR-V en todas las plataformas usando `glslc` (incluido en el Vulkan SDK). En macOS, adicionalmente transpila los `.spv` a MSL (Metal) con `spirv-cross`.
| Plataforma | Backend GPU | Herramienta de shaders | Resultado |
|------------|-------------|------------------------|-----------|
| Linux | Vulkan | `glslc` (Vulkan SDK) | `.spv` |
| Windows | Vulkan | `glslc` (Vulkan SDK) | `.spv` |
| macOS | Metal | `glslc` + `spirv-cross`| `.spv.msl`|
---
### Instalación de dependencias
#### macOS
#### Windows (MinGW)
```bash
# Usando vcpkg
vcpkg install sdl3
# SDL3 + SDL3_ttf
brew install sdl3 sdl3_ttf
# O compilar desde fuente
git clone https://github.com/libsdl-org/SDL
cd SDL
mkdir build && cd build
cmake ..
make
sudo make install
# Vulkan SDK (incluye glslc para compilar shaders)
# Descargar desde https://vulkan.lunarg.com/ o via Homebrew:
brew install --cask vulkan-sdk
# spirv-cross (transpilación SPIR-V → MSL para Metal)
brew install spirv-cross
```
Tras instalar el Vulkan SDK es posible que necesites añadir `glslc` al PATH:
```bash
# Añadir a ~/.zshrc o ~/.bash_profile (ajusta la versión):
export PATH="$HOME/VulkanSDK/<version>/macOS/bin:$PATH"
source ~/.zshrc
```
#### Linux (Ubuntu/Debian)
```bash
sudo apt update
sudo apt install libsdl3-dev
# Si no está disponible, compilar desde fuente
```bash
# SDL3 + SDL3_ttf
sudo apt update
sudo apt install libsdl3-dev libsdl3-ttf-dev
# Vulkan SDK (incluye glslc)
# Opción A: paquete del sistema
sudo apt install glslc
# Opción B: Vulkan SDK completo (recomendado para versión reciente)
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan.list \
https://packages.lunarg.com/vulkan/lunarg-vulkan-focal.list
sudo apt update
sudo apt install vulkan-sdk
```
#### Linux (Arch)
```bash
sudo pacman -S sdl3
sudo pacman -S sdl3 sdl3_ttf vulkan-devel glslang shaderc
```
#### macOS
#### Windows (MinGW / MSYS2)
```bash
brew install sdl3
# En MSYS2 shell:
pacman -S mingw-w64-x86_64-SDL3 mingw-w64-x86_64-SDL3_ttf
# Vulkan SDK: descargar el instalador desde https://vulkan.lunarg.com/
# El instalador añade glslc al PATH automáticamente.
```
Con Visual Studio + vcpkg:
```bash
vcpkg install sdl3 sdl3-ttf
# Instalar Vulkan SDK desde https://vulkan.lunarg.com/ (incluye glslc)
```
---
## 🚀 Compilación
### Opción 1: CMake (Recomendado)
### CMake (todas las plataformas)
```bash
mkdir -p build && cd build
@@ -581,7 +624,9 @@ cmake ..
cmake --build .
```
### Opción 2: Make directo
En macOS, CMake detecta automáticamente `spirv-cross` y genera los `.spv.msl` necesarios. Si no está instalado, los shaders de preset externos no funcionarán (el resto de la app sí).
### Make directo (Linux/macOS)
```bash
make