ho integrato il rendering HDR fioritura usando OpenGL e GLSL ... Almeno credo! Non sono molto sicuro del risultato.effetto HDR Bloom pipeline di rendering con OpenGL/GLSL
ho seguito un tutorial dal sito Web di Intel:
https://software.intel.com/en-us/articles/compute-shader-hdr-and-bloom
E circa effetto di sfocatura gaussiana seguo scrupolosamente tutti i consigli riguardanti la realizzazione, sul seguente sito web:
https://software.intel.com/en-us/blogs/2014/07/15/an-investigation-of-fast-real-time-gpu-based-image-blur-algorithms
Secondo il primo sito web :
"L'uscita pass luminoso viene scalata dal mezzo 4 volte Ogni uscita passa luminose downscaled sono sfocate con un G separabile. filtro aussian e quindi aggiunto alla successiva uscita a risoluzione luminosa passata più alta. Il risultato finale è una fioritura formato ¼ che è in campionato e ha aggiunto all'uscita HDR prima mappatura dei toni."
Ecco la pipeline fioritura (le immagini di cui sopra sono state prese da Nsight NVIDIA Debugger).
La risoluzione della finestra nella mia prova è 1024x720 (per la necessità di questo algoritmo questa risoluzione sarà ridimensionato 4 volte)
Fase 1:.
passaggio illuminazione (miscelazione di materiale passaggio + ombra maschera passaggio + passaggio skybox) :
Fase 2:
Estrazione del hight informazioni luce in un passaggio luminoso (per la precisione, 4 mipmaps texture sono generati ("L'uscita pass luminoso viene scalata dal mezzo 4 volte" -> 1/2 , 1/4, 1/8 e 1/2 infine)):
Fase 3:
"Ogni uscita passa luminose downscaled sono sfocate con un filtro gaussiano separabile e la n aggiunto alla successiva uscita ad alta risoluzione luminosa passante. "
Voglio essere preciso che il filtro bilineare sia abilitato (GL_LINEAR) e la pexillizzazione sulle immagini sopra riportate è il risultato del ridimensionamento della trama sul debugger NSight finestra (1024x720).
a) Risoluzione 1/16x1/16 (64x45)
"1/16x1/16 uscita offuscata"
b) Risoluzione 1/8x1/8 (128x90)
"1/8x1/8 downscaled passaggio luminoso, combinato con 1/16x1/16 uscita offuscata"
.515.053.691,36321 milioni"1/8x1/8 uscita offuscata"
c) Risoluzione 1/4x1/4 (256x180)
"1/4x1/4 downscaled passaggio luminoso, combinato con 1/8x1/8 uscita offuscata"
"1/4x1/4 uscita offuscata"
d) Risoluzione 1/2x1/2 (512x360)
"1/2x1/2 ridimensionato passaggio luminoso, combinato con 1/4x1/4 uscita offuscata"
"1/2x1/2 uscita offuscata"
di indirizzare il lev desiderato el di mipmap Uso il ridimensionamento FBO (ma forse sarebbe più intelligente usare FBO separati già dimensionati all'inizializzazione piuttosto che ridimensionare lo stesso più volte. Cosa ne pensi di quest idea ?).
Fase 4:
mappatura tono di rendering passaggio:
Fin qui mi piacerebbe avere una consulenza esterna sul mio lavoro. È corretto o no? Non sono molto sicuro del risultato in modo esponenziale riguardo al passaggio 3 (la parte di downscaling e bluring).
Penso che l'effetto di sfocatura non sia molto pronunciato! Comunque uso un convoluzione del kernel 35x35 (sarebbe sufficiente, penso :)).
Ma sono davvero incuriosito da un articolo su un pdf. Ecco la presentazione della pipeline di fioritura (la presentazione è più o meno la stessa di quella che ho applicato).
Link:
Come potete vedere sopra l'immagine che l'effetto di sfocatura sanguinamento è molto più forte del mio! Pensi che l'autore usi diversi kernel di convoluzione (risoluzioni più alte)?
La prima cosa che non capisco è come l'algoritmo di sfocatura gaussiana fa apparire altri colori diversi dal bianco (valori di scala di grigi) sulla terza immagine. Ho guardato molto attentamente (zoom elevato) sull'immagine luminosa (la seconda) e tutti i pixel sembrano essere vicini al bianco o al bianco (scala di grigi). Una cosa è certa: non ci sono pixel blu o arancioni sulla texture luminosa. Quindi, come possiamo spiegare una tale transizione dall'immagine 2 all'immagine 3? È molto strano per me.
La seconda cosa che non capisco è l'alta differenza di effetto sfocatura tra le immagini 3, 4, 5 e 6! Nella mia presentazione uso il kernel di convoluzione 35x35 e il risultato finale è vicino alla terza immagine qui.
Come si può spiegare una tale differenza?
PS: Si noti che utilizzo il formato interno GL_HALF_FLOAT e GL_RGBA16F per inizializzare la trama di rendering del rendering (tutti gli altri passaggi di rendering sono inizializzati come GL_RGBA e GL_FLOAT).
C'è qualcosa che non va nel mio programma?
Grazie mille per il vostro aiuto!
Grazie mille! In effetti, stavo inviando la vista errata come variabile uniforme al mio shauss blur shader (era sempre impostata sulla risoluzione della mia finestra originale -> 1024 * 720). Quindi la media di ogni offset di pixel era completamente sbagliata. Grazie ancora per il tuo aiuto! Ciao. – user1364743
Potresti caricare le immagini con la correzione, in modo che altri possano conoscere qual è il problema? Saluti e buona fortuna. –