Actualizar MIGRATION_PLAN.md tras cerrar Fase 9
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+30
-35
@@ -38,50 +38,45 @@ Tag de seguridad: **`beta-3.0`** (snapshot de `main` antes de empezar).
|
||||
| 6d — Migrar Enemy | ✅ | `27242f5` |
|
||||
| 6e — Migrar Bullet | ✅ | `9993b2d` |
|
||||
| 7a — Infra GPU (shaders + wrappers, runtime dormido) | ✅ | `ba6fd00` |
|
||||
| **7b+c — Swap atómico a SDL3 GPU + line_renderer al pipeline** | ✅ | `fa7da4c` |
|
||||
| 7d — Validación visual del usuario en hardware real | ⏳ pendiente | — |
|
||||
| 8 — Postprocesado, color, paleta por tipo | 🔲 | — |
|
||||
| 9 — Refactor de GameScene (2.877 LOC → módulos) | 🔲 | — |
|
||||
| 7b+c — Swap atómico a SDL3 GPU + line_renderer al pipeline | ✅ | `fa7da4c` |
|
||||
| 7d — Validación visual del usuario en hardware Vulkan | ✅ | — |
|
||||
| 9a — Extraer `Systems::Collision` | ✅ | `896a899` |
|
||||
| 9b — Extraer `Systems::ContinueScreen` | ✅ | `816bc02` |
|
||||
| 9c — Extraer `Systems::InitHud` | ✅ | `a4942fc` |
|
||||
| 9d — Descomponer `GameScene::update` (339→18 LOC) | ✅ | `808abb2` |
|
||||
| **8 — Postprocesado + paleta de colores por entidad** | 🔲 **siguiente** | — |
|
||||
| 10 — Tuning final de masa/restitución/damping | 🔲 | — |
|
||||
| Mac/Metal — shaders MSL en build | 🔲 | — |
|
||||
| 8 — Postprocesado, color, paleta por tipo | 🔲 | — |
|
||||
| 9 — Refactor de GameScene (2.877 LOC → módulos) | 🔲 | — |
|
||||
| 10 — Tuning final de masa/restitución/damping | 🔲 | — |
|
||||
|
||||
## Lo que queda inmediato (Fase 7d — validación del usuario)
|
||||
## Lo que queda inmediato (Fase 8 — postprocesado + paleta de colores)
|
||||
|
||||
**El proyecto ya no contiene `SDL_Renderer` ni una sola línea.**
|
||||
Todo el rendering pasa por SDL3 GPU.
|
||||
Fase 7 y Fase 9 cerradas. Validación visual SDL3 GPU OK (`Backend GPU: vulkan`).
|
||||
`GameScene.cpp` 1429 → 1015 LOC; `update()` 339 → 18 LOC, complexity baja a
|
||||
< 10 por sub-paso. Tres sistemas extraídos a `source/game/systems/`:
|
||||
- `Systems::Collision` (~210 LOC propios)
|
||||
- `Systems::ContinueScreen` (~160 LOC propios)
|
||||
- `Systems::InitHud` (~155 LOC propios)
|
||||
|
||||
Estado tras `fa7da4c`:
|
||||
- Backend: Vulkan en Linux/Windows, Metal pendiente en macOS (shaders MSL
|
||||
todavía no se generan en build, solo SPIR-V).
|
||||
- `SDLManager` posee un `Rendering::Renderer` (alias de `GpuFrameRenderer`).
|
||||
`clear()` → `beginFrame()`, `present()` → `endFrame()`. Letterbox vía
|
||||
`setViewport` mid-frame. VSync vía `SDL_SetGPUSwapchainParameters`.
|
||||
- `linea(renderer, x1,y1,x2,y2, brightness, thickness)`: la implementación
|
||||
empuja la línea como quad extrudido (`pushLine`) al batch del frame.
|
||||
El grosor es configurable por línea o global (default 1.5 px).
|
||||
- Todo el resto del juego (entities, effects, scenes, title, vector_text,
|
||||
starfield, shape_renderer) pasa `Rendering::Renderer*` opaco. Solo
|
||||
`line_renderer.cpp` toca métodos del backend.
|
||||
**Fase 8 — siguientes pasos**:
|
||||
1. Color por entidad (paleta semántica): naves blancas, balas verdes,
|
||||
pentagons azules, quadrats rojos, molinillos magenta, debris hereda
|
||||
color del padre. Hoy todo se pinta con el color global del oscilador
|
||||
(`g_current_line_color`). Hay que pasar el color al `pushLine` desde
|
||||
las entidades (cada entity expone un `getColor()`).
|
||||
2. Postprocesado básico:
|
||||
- Bloom/glow: render-to-texture al swapchain real con fragment shader
|
||||
que aplique kernel separable de blur sobre los píxeles iluminados.
|
||||
Requiere un pipeline extra y un par de texturas off-screen.
|
||||
- Opcional: scanlines o leve aberración cromática para feel CRT.
|
||||
|
||||
Smoke test xvfb: ✅ compila, arranca con `Backend GPU: vulkan`, carga shapes
|
||||
y termina limpio. La pantalla del xvfb sale negra porque el host no tiene
|
||||
aceleración 3D (VMware), pero eso no es un bug del juego — es xvfb que no
|
||||
muestra el swapchain Vulkan.
|
||||
**Fase 10** (tras 8): tuning de mass/restitution/damping con feedback
|
||||
visual de los colores.
|
||||
|
||||
**Acción pendiente del usuario**: probar el binario en hardware real con
|
||||
Vulkan nativo para validar que las líneas se dibujan correctamente. Si hay
|
||||
problemas visuales, los ajustes que más probablemente harán falta son:
|
||||
1. Convención de orientación de los triángulos (FRONTFACE_COUNTER_CLOCKWISE
|
||||
está en el pipeline; si se ven invertidos, cambiar a CLOCKWISE).
|
||||
2. Si las líneas se ven demasiado finas o gruesas: `setLineThickness(N)`
|
||||
global o pasar `thickness` por llamada.
|
||||
3. Si hay flicker o screen tearing: revisar `Options::rendering.vsync`.
|
||||
|
||||
Tras la validación visual, la migración técnica de SDL3 GPU está cerrada y
|
||||
podemos pasar a **Fase 8** (postprocesado / paleta de colores por tipo de
|
||||
entidad) o **Fase 9** (refactor de GameScene).
|
||||
**Mac/Metal**: cuando vayamos a release de macOS, añadir compilación
|
||||
de los shaders también a MSL (con `spirv-cross` o `glslangValidator`).
|
||||
|
||||
## Memoria del proyecto
|
||||
|
||||
|
||||
Reference in New Issue
Block a user