Quali sono gli usi della rasterizzazione del software nei moderni motori di gioco?


9

Sto seguendo un corso di Computer Graphics in questo trimestre. Uno dei nostri progetti di laboratorio riguarda la rasterizzazione del software.

Ora sto pianificando la proposta di progetto e sto pensando a come renderlo utile per altre persone nello sviluppo di giochi contemporanei.

Dopo alcune brevi ricerche, ho appreso una tecnica chiamata Software Occlusion Culling. Esegue la rasterizzazione del software su buffer di varie risoluzioni. E possiamo richiedere l'occlusione usando i buffer z gerarchici.

La mia domanda : quali sono gli usi della rasterizzazione del software nei moderni motori di gioco oltre al software Occlusion Culling?

Risposte:


4

Per quanto ne so , Software Occlusion Culling (che hai già menzionato), è praticamente l'unica cosa per cui un rasterizzatore software sarebbe ancora utilizzato. Procworld utilizza una tecnica simile per mostrare i suoi enormi ambienti voxel.

La maggior parte degli altri metodi di abbattimento come l'abbattimento del frustum funzionano sulla CPU, ma, per restare fedeli all'esempio, il test contro il frustum avviene a livello di oggetto, probabilmente con un riquadro di delimitazione allineato agli assi (AABB). Questo test di intersezione è molto più semplice rispetto all'utilizzo di un rasterizzatore software completo.

In alcuni casi, la rasterizzazione del software potrebbe essere utilizzata per la raccolta del mouse di oggetti. Nei motori di gioco, questo viene spesso risolto utilizzando un motore fisico e una collisione a raggi-triangolo con una mesh semplificata.

Con la CPU inattiva mentre attende la GPU nelle moderne applicazioni 3D interattive, si potrebbe pensare che potrebbe essere utile utilizzare questi cicli di inattività per eseguire il rendering sulla CPU utilizzando un rasterizzatore software. Il problema qui, oltre a rendere il rendering orribilmente complesso e contorto, sarà spesso la larghezza di banda. Le immagini renderizzate sulla CPU devono essere trasferite alla GPU prima di essere visualizzate, il che potrebbe annullare il vantaggio.


0

I giochi con il concetto di "nebbia di guerra" hanno spesso una griglia di visibilità per definire lo stato della nebbia di guerra in ogni luogo. La rasterizzazione viene talvolta utilizzata per modificare lo stato di nebbia di guerra per forme specifiche sulla griglia.

Ad esempio, usare un'abilità che rivela un cerchio della mappa con un raggio specifico, o forse qualcosa che rivela un quadrato.

Non strettamente legato alla grafica, ma sicuramente un uso della rasterizzazione nei giochi moderni e una tecnica che ho visto usata negli RTS.

Altri dati basati sulla griglia nei giochi potrebbero utilizzare la rasterizzazione per situazioni simili.


-2

La rasterizzazione è un argomento enorme con molte parti e non sono un programmatore di motori, ma farò del mio meglio per fornire una sorta di panoramica (questo sarà ben lungi dall'essere un elenco completo!).

Alcune cose molto basilari di basso livello includono:

  • Frustrum culling: butta via tutto al di fuori del frustrazione della fotocamera (pensala come l'area di visualizzazione della fotocamera).
  • Abbattimento della faccia posteriore: elimina tutti i poligoni che non indirizzano alla telecamera.
  • Algoritmo del pittore: disegna gli oggetti in ordine di distanza dalla macchina fotografica, inizia con oggetti lontani, quindi vai verso la macchina fotografica.

Altre cose avanzate utilizzate nei giochi includono cose come:

  • Tesselation : in realtà più o meno come LOD (vedi sotto), ma ora le ultime versioni di DirectX hanno introdotto la tassellatura, che fornisce la divisione o la riduzione automatica della mesh. Ciò fornisce un enorme incremento delle prestazioni grafiche, perché puoi ottenere poligoni se ne hai bisogno e liberartene se non li desideri più.
  • LOD : un sistema di livello di dettaglio sostituisce la mesh di un oggetto in base alla distanza tra l'oggetto e la telecamera. ad esempio, il tuo personaggio ha tre maglie: una con 10.000, una con 5.000 e un'altra con 1.000 polis. se rimani proprio di fronte a lui, viene mostrata la mesh ad alta risoluzione (10.000 polys), se ti allontani, dopo 100m il personaggio viene sostituito dalla mesh media e dopo altri 100m viene sostituito dalla mesh a bassa risoluzione. Invece di sostituire la mesh è possibile ridurla, ma questo sarebbe più complesso da codificare.
  • partizioni spaziali binarie : lo spazio è diviso in due volumi. questo verrà ripetuto fino al raggiungimento del tuo obiettivo, ad es. fino a quando lo spazio non contiene solo poligoni che dovrebbero essere disegnati sullo schermo
  • Portali e celle : (noto anche come Portal culling) viene utilizzato nelle scene in interni e / o sparatutto in prima persona. La scena è divisa in celle (ad es. Stanze di un edificio) che sono collegate tramite portali (ad es. Porte). è possibile impostare i portali in modo che siano aperti e chiusi.

Supponendo che tu abbia una conoscenza di base della pipeline grafica, ho cercato di concentrarmi sulla rasterizzazione. puoi anche dare un'occhiata a luci e ombre o altre cose ..

Questi includono solo alcune possibili tecnologie da includere nel tuo progetto. dal momento che non ho abbastanza reputazione su stackexchange, non posso fornire molti collegamenti, ma troverai tutto ciò su Google :)


2
La domanda riguarda la rasterizzazione del software (leggi: CPU). Alcune delle informazioni che hai fornito riguardano la rasterizzazione in generale, alcune tecniche - nel mio libro - non hanno nulla a che fare con la rasterizzazione. Potresti chiarire nella tua risposta come le tecniche utilizzano o traggono vantaggio dalla rasterizzazione del software?
David Kuri,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.