Expand description
Backend GPU directo del trait crate::Canvas — Fase 4 del SDD
02_ruway/llimphi/SDD.md §“GPU directo wgpu”.
Implementación drop-in del trait que delega cada primitivo a un
llimphi_raster::GpuBatch. El painter de pineal no se entera: sigue
escribiendo canvas.fill_rect(...), canvas.stroke_line(...), etc.
La app que monta la visualización elige el backend al enchufar el
paint_with (SceneCanvas, vello, ~100 K primitivas) o
gpu_paint_with (GpuSceneCanvas, GPU directo, 1–10 M primitivas).
Trade-offs respecto a SceneCanvas:
- Texto: el SDD prohíbe expresamente texto en este backend
(“Texto siempre por vello+parley”).
draw_textqueda como no-op silencioso — el caller debe pintar labels en unView::paint_with(vello) hermano o enApp::view_overlay. - Anchura de stroke:
GpuBatchtiene una solaline_widthpor flush. Visualizaciones que mezclen grosores van a ver “la última gana”. Workaround: emitir cada grosor en su propio flush, o simplemente componer todo con el grosor más común. Para los painters densos típicos (starfield, particles, scatter) no aplica — ahí las strokes son todas del mismo grosor. - Clip:
push_clip/pop_clipson no-op, igual que enSceneCanvas(elViewcontenedor recorta vía taffy +clip(true)). - Per-vertex color en strips: ventaja sobre vello — el GPU sí
soporta color por vértice nativo, así que
fill_triangle_strippreserva el color real de cada vértice (no el promedio del triángulo). Beneficia phosphor trail, ribbons Sankey, fan radar.
Structs§
- GpuScene
Canvas - Adapter que pinta primitivos de
Canvassobre unGpuBatch. El batch lo construye y flushea la app dentro delgpu_paint_with;GpuSceneCanvasvive sólo durante las calls del painter.