Base engine #1

Open
opened 2025-06-19 11:55:09 +02:00 by KillerBossOriginal · 0 comments

Checklist per il Motore di Rendering Rust (Alternativa a Skia)

Questa è una checklist dinamica che aggiorneremo man mano che il progetto procede.


Fase 1: Fondamenta e Concetti Base (Completata)

  • Definizione dell'Ambito Iniziale:
    • Funzionalità core minime identificate (linee, rettangoli, colori solidi).
    • Scelto backend CPU software come punto di partenza.
    • Decisa API iniziale per il disegno.
  • Scelta delle Crate Fondamentali:
    • Selezionate nalgebra o glam per la matematica.
    • Selezionata image per la manipolazione di base delle immagini (futura).
    • Valutate le opzioni per il font rendering (rusttype, allsorts).
  • Architettura Iniziale:
    • Concetto di Color definito.
    • Idea generale di Path e Surface (Framebuffer).

Fase 2: Implementazione di Base (CPU Software Renderer) (In Corso)

  • Modulo Color:
    • Implementazione della struttura Color e relative conversioni.
    • Supporto per colori premoltiplicati.
  • Modulo Math:
    • Wrapper per tipi di vettore e matrice (glam o nalgebra).
    • Implementazione delle trasformazioni 2D (traslazione, scala, rotazione).
  • Modulo Surface (Framebuffer CPU):
    • Struttura ImageBuffer o simile per i pixel.
    • Metodi get_pixel e set_pixel.
    • Metodo per inizializzare e pulire la superficie.
  • Disegno delle Primitive (CPU Software):
    • Funzione per disegnare un singolo pixel.
    • Implementazione dell'algoritmo di Bresenham per le linee.
    • Funzioni per disegnare rettangoli (riempiti e bordi).
    • Funzioni per disegnare cerchi/ellissi (riempiti e bordi).
    • Funzioni per disegnare triangoli (riempimento).
  • Modulo Path:
    • Struttura Path e PathBuilder.
    • Metodi per aggiungere segmenti (line_to, move_to).
    • Metodi per aggiungere curve Bezier (quad_to, cubic_to).
    • Funzionalità di chiusura del percorso.
  • Riempimento e Tracciato dei Percorsi (CPU Software):
    • Algoritmo di tassellazione dei percorsi (lyon integrazione o implementazione).
    • Algoritmo di riempimento ("non-zero winding" o "even-odd").
    • Algoritmo per il tracciato (stroking) dei percorsi.
  • Rendering del Testo (CPU Software):
    • Integrazione con rusttype o allsorts per caricare font.
    • Funzione per rasterizzare singoli glifi.
    • Funzione per disegnare stringhe di testo sulla superficie.

Fase 3: Aggiunta del Backend GPU (wgpu)

  • Astrazione del Backend:
    • Definizione del trait RenderBackend.
    • Implementazione del trait per il backend CPU esistente.
    • Nuova implementazione del trait per wgpu.
  • Conversione delle Primitive per GPU:
    • Pipeline per convertire Path in vertici e indici per la GPU.
    • Creazione e gestione di buffer di vertici e indici wgpu.
  • Shader Development (WGSL):
    • Shader base per triangoli colorati.
    • Shader per texture mapping.
    • Shader per il testo (es. con Signed Distance Fields - SDFs).
  • Gestione Risorse GPU:
    • Caricamento e gestione di texture (per immagini e font atlas).
    • Configurazione della pipeline di rendering wgpu.
  • Loop di Rendering GPU:
    • Funzionalità per presentare il frame renderizzato.

Fase 4: Funzionalità Avanzate e Ottimizzazioni

  • Anti-Aliasing:
    • Implementazione MSAA per GPU.
    • Anti-aliasing per linee/bordi su CPU.
  • Compositing e Blending Modes:
    • Supporto per diverse modalità di fusione (alpha blending).
  • Shader Effects:
    • Filtri bitmap di base (sfocatura).
    • Supporto per gradienti.
  • Gestione Avanzata dei Font:
    • Caching dei glifi (atlas di texture per GPU).
  • Gestione Immagini:
    • Caricamento e decodifica di PNG/JPEG.
    • Scalatura e filtri (bilineare).
  • Ottimizzazioni:
    • Batching dei comandi di disegno.
    • Utilizzo di istruzioni SIMD per CPU.

Fase 5: Testing e Documentazione

  • Test Unitari: Per tutti i moduli e algoritmi.
  • Test di Integrazione: Verifica del funzionamento combinato.
  • Benchmark: Misurazione delle prestazioni.
  • Esempi: Creazione di applicazioni d'esempio.
  • Documentazione API: Con cargo doc.
# Checklist per il Motore di Rendering Rust (Alternativa a Skia) Questa è una checklist dinamica che aggiorneremo man mano che il progetto procede. --- ## Fase 1: Fondamenta e Concetti Base (Completata) - [x] **Definizione dell'Ambito Iniziale:** - [x] Funzionalità core minime identificate (linee, rettangoli, colori solidi). - [x] Scelto backend CPU software come punto di partenza. - [x] Decisa API iniziale per il disegno. - [x] **Scelta delle Crate Fondamentali:** - [x] Selezionate `nalgebra` o `glam` per la matematica. - [x] Selezionata `image` per la manipolazione di base delle immagini (futura). - [x] Valutate le opzioni per il font rendering (`rusttype`, `allsorts`). - [x] **Architettura Iniziale:** - [x] Concetto di `Color` definito. - [x] Idea generale di `Path` e `Surface` (Framebuffer). --- ## Fase 2: Implementazione di Base (CPU Software Renderer) (In Corso) - [x] **Modulo `Color`:** - [x] Implementazione della struttura `Color` e relative conversioni. - [x] Supporto per colori premoltiplicati. - [x] **Modulo `Math`:** - [x] Wrapper per tipi di vettore e matrice (`glam` o `nalgebra`). - [x] Implementazione delle trasformazioni 2D (traslazione, scala, rotazione). - [x] **Modulo `Surface` (Framebuffer CPU):** - [x] Struttura `ImageBuffer` o simile per i pixel. - [x] Metodi `get_pixel` e `set_pixel`. - [x] Metodo per inizializzare e pulire la superficie. - [x] **Disegno delle Primitive (CPU Software):** - [x] Funzione per disegnare un singolo pixel. - [x] Implementazione dell'algoritmo di Bresenham per le linee. - [x] Funzioni per disegnare rettangoli (riempiti e bordi). - [x] Funzioni per disegnare cerchi/ellissi (riempiti e bordi). - [x] Funzioni per disegnare triangoli (riempimento). - [ ] **Modulo `Path`:** - [ ] Struttura `Path` e `PathBuilder`. - [ ] Metodi per aggiungere segmenti (`line_to`, `move_to`). - [ ] Metodi per aggiungere curve Bezier (`quad_to`, `cubic_to`). - [ ] Funzionalità di chiusura del percorso. - [ ] **Riempimento e Tracciato dei Percorsi (CPU Software):** - [ ] Algoritmo di tassellazione dei percorsi (`lyon` integrazione o implementazione). - [ ] Algoritmo di riempimento ("non-zero winding" o "even-odd"). - [ ] Algoritmo per il tracciato (stroking) dei percorsi. - [ ] **Rendering del Testo (CPU Software):** - [ ] Integrazione con `rusttype` o `allsorts` per caricare font. - [ ] Funzione per rasterizzare singoli glifi. - [ ] Funzione per disegnare stringhe di testo sulla superficie. --- ## Fase 3: Aggiunta del Backend GPU (`wgpu`) - [ ] **Astrazione del Backend:** - [ ] Definizione del trait `RenderBackend`. - [ ] Implementazione del trait per il backend CPU esistente. - [ ] Nuova implementazione del trait per `wgpu`. - [ ] **Conversione delle Primitive per GPU:** - [ ] Pipeline per convertire `Path` in vertici e indici per la GPU. - [ ] Creazione e gestione di buffer di vertici e indici `wgpu`. - [ ] **Shader Development (WGSL):** - [ ] Shader base per triangoli colorati. - [ ] Shader per texture mapping. - [ ] Shader per il testo (es. con Signed Distance Fields - SDFs). - [ ] **Gestione Risorse GPU:** - [ ] Caricamento e gestione di texture (per immagini e font atlas). - [ ] Configurazione della pipeline di rendering `wgpu`. - [ ] **Loop di Rendering GPU:** - [ ] Funzionalità per presentare il frame renderizzato. --- ## Fase 4: Funzionalità Avanzate e Ottimizzazioni - [ ] **Anti-Aliasing:** - [ ] Implementazione MSAA per GPU. - [ ] Anti-aliasing per linee/bordi su CPU. - [ ] **Compositing e Blending Modes:** - [ ] Supporto per diverse modalità di fusione (alpha blending). - [ ] **Shader Effects:** - [ ] Filtri bitmap di base (sfocatura). - [ ] Supporto per gradienti. - [ ] **Gestione Avanzata dei Font:** - [ ] Caching dei glifi (atlas di texture per GPU). - [ ] **Gestione Immagini:** - [ ] Caricamento e decodifica di PNG/JPEG. - [ ] Scalatura e filtri (bilineare). - [ ] **Ottimizzazioni:** - [ ] Batching dei comandi di disegno. - [ ] Utilizzo di istruzioni SIMD per CPU. --- ## Fase 5: Testing e Documentazione - [ ] **Test Unitari:** Per tutti i moduli e algoritmi. - [ ] **Test di Integrazione:** Verifica del funzionamento combinato. - [ ] **Benchmark:** Misurazione delle prestazioni. - [ ] **Esempi:** Creazione di applicazioni d'esempio. - [ ] **Documentazione API:** Con `cargo doc`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: ThunderNetworkRaD/designer#1
No description provided.