Commit Graph

4 Commits

Author SHA1 Message Date
7cccedb5fb Extraer shaders a archivos .metal separados para mejor organización
- 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>
2025-09-28 18:40:28 +02:00
909635d76d Implementar shader CRT con post-processing: migración completa GLSL a MSL
- 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>
2025-09-28 18:30:01 +02:00
62dee3b2bb Ajustar proporciones: ventana 50% más grande y sprite proporcional
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>
2025-09-28 18:16:59 +02:00
eed0eeb747 Implementación inicial de vibe5_metal: sprites con alpha blending
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>
2025-09-28 18:07:52 +02:00