- Crear directorio data/shaders/ para organizar todos los shaders MSL
- Extraer shaders embebidos a archivos individuales:
* background.metal - Shader de fondo degradado
* triangle.metal - Shader de triángulo multicolor
* sprite.metal - Shader de sprites con vertex color tinting
* crt.metal - Shader CRT post-processing completo
- Modificar main.cpp para cargar shaders desde archivos:
* Usar stringWithContentsOfFile para leer código fuente
* Compilar dinámicamente con newLibraryWithSource
* Manejo robusto de errores de lectura y compilación
- Eliminar 351 líneas de strings embebidos de main.cpp
- Mantener funcionalidad completa: CRT + sprites + fondo + triángulo
Beneficios:
- Shaders editables sin recompilar ejecutable
- Mejor organización y mantenimiento del código
- Syntax highlighting completo en editores
- Reutilización de shaders en otros proyectos
- Desarrollo más ágil de efectos visuales
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Migrar shader CRT de GLSL a Metal Shading Language (MSL)
- Implementar renderizado de dos pasadas:
* Paso 1: Renderizar escena a textura offscreen
* Paso 2: Aplicar efecto CRT como post-procesamiento
- Añadir shaders CRT con scanlines, shadow mask y gamma correction
- Crear offscreen render target para renderizado intermedio
- Implementar fullscreen quad para post-procesamiento
- Configurar pipeline CRT con samplers linear y NEAREST
- Mantener compatibilidad con sprites multi-color existentes
- Resolución virtual CRT: 320x240 para apariencia retro auténtica
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cambios realizados:
- Ventana: 640x480 → 960x720 pixels (+50% tamaño)
- Sprite: 64px → 30px (mantiene proporción original de 10px en 320x240)
- Proporción matemática: 3.125% ancho, 4.167% alto (igual que referencia)
La pelota ahora se ve del tamaño correcto relativo a la ventana,
manteniendo la misma proporción visual que en la versión 320x240.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Motor de renderizado Metal completo con:
- Renderizado de fondo degradado (púrpura a cyan)
- Triángulo RGB con interpolación de colores
- Renderizado de sprites con alpha blending y filtro NEAREST
- Integración de Metal Performance HUD para métricas FPS/debug
- Integración SDL3 + Metal usando Objective-C++
Características implementadas:
✅ Múltiples pipelines de renderizado (fondo, triángulo, sprites)
✅ Carga de texturas con NSImage/CoreGraphics
✅ Configuración de alpha blending para sprites
✅ Muestreo de texturas anti-blur (MTLSamplerMinMagFilterNearest)
✅ Estructuras de vértices y shaders apropiados
✅ Metal HUD para monitoreo de rendimiento
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>