Ho molti oggetti nel mio mondo di gioco che derivano tutti da una classe base.
Ogni oggetto avrà materiali diversi e sarà quindi richiesto di essere disegnato usando varie tecniche di rendering.
Attualmente utilizzo il seguente ordine per il rendering dei miei oggetti.
- differite
- Avanti
- Trasparente (indipendente dall'ordine)
Ogni oggetto ha un flag di rendering che denota quale dei seguenti metodi dovrebbe essere usato.
L'elenco degli oggetti di base nella scena viene quindi ripetuto e aggiunto a elenchi separati di oggetti differiti, avanzati o trasparenti in base al loro valore di flag di rendering.
I singoli elenchi vengono quindi ripetuti e disegnati utilizzando l'ordine di cui sopra. Ogni lista viene cancellata alla fine del frame.
Questo metodo funziona abbastanza bene, ma richiede diversi metodi di disegno per ogni tipo di materiale.
Ad esempio, ogni oggetto richiede i seguenti metodi per essere compatibile con le possibili impostazioni dei flag.
object.DrawDeferred()
object.DrawForward()
object.DrawTransparent()
È anche difficile vedere dove i metodi al di fuori dei materiali, come il rendering delle shadow map, si adatterebbero usando questo design "flag & method".
object.DrawShadow()
Speravo che qualcuno potesse avere qualche suggerimento per migliorare questo processo di rendering, forse rendendolo più generico e meno prolisso?