Il downsampling multiplo ha un vantaggio?


14

Quindi mi sono imbattuto in questo sito e puoi vedere queste righe nel primo e nel secondo paragrafo:

Per un effetto grezzo ma facile, disegna le parti luminose della scena (ad esempio, sorgenti luminose) in un FBO, quindi esegui il downsampling usando la minificazione GL_LINEAR più volte . Per il rendering finale, è sufficiente combinare la scena originale con gli FBO ricampionati.

Nel seguente esempio, la scena originale è 128 x 128 e viene sottocampionata 3 volte . Ciò richiede 4 oggetti framebuffer . La scena originale viene mostrata in alto a sinistra e il rendering finale in alto a destra.

C'è qualche motivo per cui dovrei sottocampionare più volte (128 -> 64 -> 32 -> 16) anziché ricampionarlo una volta (128 -> 16)?

Se scorri di più verso il basso, lo eseguono addirittura di downsampling come 9 volte. (128 -> ... -> 16 -> 128 -> ... -> 16 -> e così via). Perché non piace (128 -> 16 -> 128 -> 16 -> e così via)?


Approccio veramente assurdo. Basta sfocare il buffer e downsample con GL_NEAREST.
transistor09

Risposte:


23

Ci sono due vantaggi principali:

Innanzitutto, se esegui il downsampling di oltre un fattore due, alcuni pixel nell'immagine originale non avranno alcun impatto sull'immagine del risultato. utilizzandoGL_LINEAR , ogni pixel di destinazione eseguirà il campionamento solo da un massimo di 4 pixel dall'immagine sorgente; gli altri pixel vengono semplicemente scartati. Effettuando il downsampling di un fattore due, ti assicuri che ciascun pixel dell'immagine sorgente abbia mantenuto un effetto uguale sul livello successivo verso il basso.

In secondo luogo, gli algoritmi discussi su quel sito richiedono tutti gli oggetti framebuffer; in realtà sono tutti necessari, anche se non ci fosse una buona ragione per il downsampling in questo modo. Non è possibile saltare le immagini 64x64 o 32x32, poiché tali immagini vengono utilizzate come parte della costruzione dell'immagine risultante sfocata gaussiana.

Infine, se leggi l'articolo vedrai che non sta proponendo il downsampling delle immagini 9 volte; esegue il downsampling solo tre volte, quindi esegue diverse operazioni su quelle immagini sottocampionate. Le immagini che stai visualizzando mostrano solo lo stato di quelle stesse 3 immagini ricampionate dopo ogni fase del processo, senza mostrare eventi separati di ricampionamento.


Ah, questo ha molto senso per me adesso. Grazie.
Greffin28,

1
(Per inciso, l'effetto bloom che uso nei miei giochi si basa sul metodo descritto nella pagina collegata. Personalmente, eseguo il downsampling 5 volte anziché 3, dal momento che parto da un'immagine iniziale molto più grande ma voglio comunque una bella, ampia sfocatura .)
Trevor Powell,
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.