Actualizar MIGRATION_PLAN.md: cerrar 7a/7b/7c, pendiente validacion visual
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+36
-30
@@ -37,45 +37,51 @@ Tag de seguridad: **`beta-3.0`** (snapshot de `main` antes de empezar).
|
|||||||
| 6c — Migrar Ship | ✅ | `2fe22ff` |
|
| 6c — Migrar Ship | ✅ | `2fe22ff` |
|
||||||
| 6d — Migrar Enemy | ✅ | `27242f5` |
|
| 6d — Migrar Enemy | ✅ | `27242f5` |
|
||||||
| 6e — Migrar Bullet | ✅ | `9993b2d` |
|
| 6e — Migrar Bullet | ✅ | `9993b2d` |
|
||||||
| **7a — Infra GPU (shaders + wrappers, runtime dormido)** | ✅ | (este commit) |
|
| 7a — Infra GPU (shaders + wrappers, runtime dormido) | ✅ | `ba6fd00` |
|
||||||
| 7b — Swap SDL_Renderer → SDL_GPUDevice (clear/present por GPU) | 🔲 | — |
|
| **7b+c — Swap atómico a SDL3 GPU + line_renderer al pipeline** | ✅ | `fa7da4c` |
|
||||||
| 7c — Pipeline de líneas (quads con thickness configurable) | 🔲 | — |
|
| 7d — Validación visual del usuario en hardware real | ⏳ pendiente | — |
|
||||||
| 7d — Refactor de firmas (SDL_Renderer* → FrameContext*) | 🔲 | — |
|
| 8 — Postprocesado, color, paleta por tipo | 🔲 | — |
|
||||||
| 7e — Cleanup + smoke test final | 🔲 | — |
|
| 9 — Refactor de GameScene (2.877 LOC → módulos) | 🔲 | — |
|
||||||
|
| 10 — Tuning final de masa/restitución/damping | 🔲 | — |
|
||||||
| 8 — Postprocesado, color, paleta por tipo | 🔲 | — |
|
| 8 — Postprocesado, color, paleta por tipo | 🔲 | — |
|
||||||
| 9 — Refactor de GameScene (2.877 LOC → módulos) | 🔲 | — |
|
| 9 — Refactor de GameScene (2.877 LOC → módulos) | 🔲 | — |
|
||||||
| 10 — Tuning final de masa/restitución/damping | 🔲 | — |
|
| 10 — Tuning final de masa/restitución/damping | 🔲 | — |
|
||||||
|
|
||||||
## Lo que queda inmediato (Fase 7b)
|
## Lo que queda inmediato (Fase 7d — validación del usuario)
|
||||||
|
|
||||||
**Swap del runtime de SDL_Renderer a SDL_GPUDevice.**
|
**El proyecto ya no contiene `SDL_Renderer` ni una sola línea.**
|
||||||
|
Todo el rendering pasa por SDL3 GPU.
|
||||||
|
|
||||||
Fase 7a completada: infraestructura GPU dormida (no llamada en runtime aún).
|
Estado tras `fa7da4c`:
|
||||||
- `shaders/line.{vert,frag}.glsl` → compilados en build a `build/shaders/*.spv`
|
- Backend: Vulkan en Linux/Windows, Metal pendiente en macOS (shaders MSL
|
||||||
(CMake step con `glslc`). Vertex layout: vec2 position + vec4 color.
|
todavía no se generan en build, solo SPIR-V).
|
||||||
Transformación a NDC vía uniform buffer `LineUniforms{viewport_w, viewport_h}`.
|
- `SDLManager` posee un `Rendering::Renderer` (alias de `GpuFrameRenderer`).
|
||||||
- `core/rendering/gpu/`:
|
`clear()` → `beginFrame()`, `present()` → `endFrame()`. Letterbox vía
|
||||||
- `GpuDevice`: claim del window, loadShader desde .spv.
|
`setViewport` mid-frame. VSync vía `SDL_SetGPUSwapchainParameters`.
|
||||||
- `GpuLinePipeline`: pipeline TRIANGLELIST con vertex layout + alpha blending.
|
- `linea(renderer, x1,y1,x2,y2, brightness, thickness)`: la implementación
|
||||||
- `GpuFrameRenderer`: API `beginFrame / pushLine / endFrame`.
|
empuja la línea como quad extrudido (`pushLine`) al batch del frame.
|
||||||
Extrusión perpendicular en CPU por línea (thickness configurable libre).
|
El grosor es configurable por línea o global (default 1.5 px).
|
||||||
Un draw call por frame con un vertex/index buffer transitorio.
|
- 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.
|
||||||
|
|
||||||
Backend: Vulkan (Linux/Windows) y Metal (macOS). Sin DirectX.
|
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 7b siguiente:
|
**Acción pendiente del usuario**: probar el binario en hardware real con
|
||||||
1. En `SDLManager::iniciar`, sustituir `SDL_CreateRenderer` por
|
Vulkan nativo para validar que las líneas se dibujan correctamente. Si hay
|
||||||
`Rendering::GPU::GpuFrameRenderer::init(window, 1280, 720)`.
|
problemas visuales, los ajustes que más probablemente harán falta son:
|
||||||
2. `SDLManager::neteja(r,g,b)` → `gpu_renderer_.beginFrame(r/255, g/255, b/255)`.
|
1. Convención de orientación de los triángulos (FRONTFACE_COUNTER_CLOCKWISE
|
||||||
3. `SDLManager::presenta()` → `gpu_renderer_.endFrame()`.
|
está en el pipeline; si se ven invertidos, cambiar a CLOCKWISE).
|
||||||
4. Borrar `renderer_` (SDL_Renderer*) del SDLManager.
|
2. Si las líneas se ven demasiado finas o gruesas: `setLineThickness(N)`
|
||||||
5. Validar arranque con xvfb: pantalla negra (sin líneas todavía), sin crash.
|
global o pasar `thickness` por llamada.
|
||||||
|
3. Si hay flicker o screen tearing: revisar `Options::rendering.vsync`.
|
||||||
|
|
||||||
Después de 7b el juego se verá NEGRO porque ningún sistema sabe pintar líneas
|
Tras la validación visual, la migración técnica de SDL3 GPU está cerrada y
|
||||||
todavía. Eso se arregla en 7c (line_renderer apunta al pipeline GPU) y 7d
|
podemos pasar a **Fase 8** (postprocesado / paleta de colores por tipo de
|
||||||
(refactor de firmas SDL_Renderer* → FrameContext*).
|
entidad) o **Fase 9** (refactor de GameScene).
|
||||||
|
|
||||||
**Fase 10 (tuning)** queda pendiente para después de SDL3 GPU + postpro.
|
|
||||||
|
|
||||||
## Memoria del proyecto
|
## Memoria del proyecto
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user