25
Introdu¸c˜ ao Ilumina¸c˜ ao Bloom Tone Mapping Resultados Conclus˜ ao e trabalhos futuros Real-time High Dynamic Range Image-based Lighting esar Palomo [email protected] Renderiza¸c˜ ao em Tempo Real Depto. de Inform´ atica - PUC-Rio Dezembro de 2007 esar Palomo Real-time High Dynamic Range Image-based Lighting

Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Real-time High Dynamic Range Image-basedLighting

Cesar [email protected]

Renderizacao em Tempo RealDepto. de Informatica - PUC-Rio

Dezembro de 2007

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 2: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Outline

1 IntroducaoIBLHDRObjetivo do trabalho

2 IluminacaoCriacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

3 BloomDefinicaoImplementacao

4 Tone Mapping

5 Resultados

6 Conclusao e trabalhos futuros

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 3: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

IBLHDRObjetivo do trabalho

Outline

1 IntroducaoIBLHDRObjetivo do trabalho

2 IluminacaoCriacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

3 BloomDefinicaoImplementacao

4 Tone Mapping

5 Resultados

6 Conclusao e trabalhos futuros

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 4: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

IBLHDRObjetivo do trabalho

IBL

Shading de objetos da cena feito com imagens reais

Resultados convincentes

Bom desempenho no calculo da equacao de iluminacao

Geralmente uso de Cube Mapping

Vetor 3D para acesso: raio originado no centro do cubo e queintercepta uma das faces

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 5: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

IBLHDRObjetivo do trabalho

HDR

Cenas do mundo real apresentam detalhes em partes muito claras emuito escuras: alto contraste – e.g. 50000:1 a luz do Sol

Filmes fotograficos e CCDs de cameras digitais convencionaislimitados a Low Dynamic Range

Com HDR, cada pixel pode representar contraste e dynamic rangemaiores: valores de cada canal nao limitados ao valor maximo 1

Pode ser obtido a partir de uma serie de imagens LDR por metodosdescritos em [1]

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 6: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

IBLHDRObjetivo do trabalho

Objetivo do trabalho

Integrar o uso de IBL e HDR

Usar um mapa HDR com informacao de iluminacao de uma cenacomo um cube map

Aplicar iluminacao a objetos inseridos na cena a partir deste cubemap

Simplificacao de ignorar inter-reflexao entre objetos da cena

Aplicar efeitos tal como blooming para obter imagem mais realista

Usar GPU para processamento dos calculos e garantir altaperformance

Uso de OpenGL e GLSL

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 7: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Criacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

Outline

1 IntroducaoIBLHDRObjetivo do trabalho

2 IluminacaoCriacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

3 BloomDefinicaoImplementacao

4 Tone Mapping

5 Resultados

6 Conclusao e trabalhos futuros

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 8: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Criacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

Criacao Cube Map com HDR

Separar imagem HDR em cruz nas 6 faces do cubo

Criar textura para o cube map

glGenTextures(1, &id);glBindTexture(GL TEXTURE CUBE MAP, id);glTexParameteri(GL TEXTURE CUBE MAP, GL TEXTURE MAG FILTER, GL LINEAR);glTexParameteri(GL TEXTURE CUBE MAP, GL TEXTURE MIN FILTER, GL LINEAR);glTexParameteri(GL TEXTURE CUBE MAP, GL TEXTURE WRAP S, GL CLAMP TO EDGE);glTexParameteri(GL TEXTURE CUBE MAP, GL TEXTURE WRAP T, GL CLAMP TO EDGE);

Enviar faces a placa

glTexImage2D(GL TEXTURE CUBE MAP POSITIVE X, 0, GL RGBA16F ARB, w, h, 0, GL RGBA,GL FLOAT, faceData);

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 9: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Criacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

Criacao Framebuffer Objects

Para permitir off-screen rendering, foram criados alguns FBOs

Criar FBO

// initialize FBOglGenFramebuffersEXT(1, &fb);

Criar seus renderbuffers

glBindFramebufferEXT(GL FRAMEBUFFER EXT, fb);

// color render bufferglGenTextures(1, &color tex);glBindTexture(GL TEXTURE 2D, color tex);...glTexImage2D(GL TEXTURE 2D, 0, GL RGBA16F ARB, w, h, 0, GL RGBA, GL UNSIGNED BYTE, 0);glFramebufferTexture2DEXT(GL FRAMEBUFFER EXT, GL COLOR ATTACHMENT0 EXT,GL TEXTURE 2D, color tex, 0);

glBindFramebufferEXT(GL FRAMEBUFFER EXT, 0);

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 10: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Criacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

Metodo de iluminacao

Metodo para aplicacao do cube map a cena (off-screen)

Ativar FBO

Aplicar cube map a um grande cubo (skybox)

Ativar shader de reflexao/refracao/fresnell/dispersao cromatica

Renderizar objetos internos a cena

Desativar shader de reflexao/refracao/fresnell/dispersao cromatica

Desativar FBO

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 11: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Criacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

Calculos de iluminacao

Reflexao

Calculo do vetor R no VP (assume que objeto e refletor perfeito):

R = reflect(I, gl Normal);

No FP, vetor R usado para acessar cube map e determinar cor final

gl FragColor = vec4(mix(matColor, textureCube(env, R), reflectionFactor).rgb, 1.0);

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 12: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Criacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

Calculos de iluminacao

Refracao

Razao entre ındices de refracao etaRatio enviado ao VP

Calculo do vetor T no VP:

T = refract(I, gl Normal, etaRatio);

No FP, vetor T usado para acessar cube map e determinar cor final

gl FragColor = vec4(mix(matColor, textureCube(env, T), 0.8).rgb, 1.0);

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 13: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Criacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

Calculos de iluminacao

Efeito de Fresnell

Mescla efeito de refracao com reflexao

Equacoes complicadas, mas aproximacao geralmente e adotada

reflCoef = max(0, min(1,bias+scale * (1+I*N) ˆ power))

Vetores de reflexao R e refracao T e reflCoef calculados no VP

Dentro do FP, vetores R e T usados para acessar o cube map edeterminar cor final

vec4 reflColor = textureCube(env, R);vec4 refrColor = textureCube(env, T);// Mix reflected and refracted colorsvec4 color = mix(refrColor, reflColor, reflFactor);gl FragColor = vec4(mix(matColor, color, 0.8).rgb, 1.0);

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 14: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Criacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

Calculos de iluminacao

Dispersao cromatica

Simplificacao: no VP, 3 vetores de refracao para canais R, G e B

TRed=refract(I,N,etaRatioRGB.r); TGreen=refract(I,N,etaRatioRGB.g); TBlue=refract(I,N,etaRatioRGB.b);

Dentro do FP, vetores usados para acessar o cube map e determinarcor final

vec4 reflColor = textureCube(env, R); vec4 refrColor;refrColor.r = textureCube(env, TRed).r; refrColor.g = textureCube(env, TGreen).g;refrColor.b = textureCube(env, TBlue).b; refrColor.a = 1.0;// Mix reflected and refracted colorsvec4 color = mix(refrColor, reflColor, reflFactor);gl FragColor = vec4(mix(matColor, color, 0.8).rgb, 1.0);

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 15: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

DefinicaoImplementacao

Outline

1 IntroducaoIBLHDRObjetivo do trabalho

2 IluminacaoCriacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

3 BloomDefinicaoImplementacao

4 Tone Mapping

5 Resultados

6 Conclusao e trabalhos futuros

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 16: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

DefinicaoImplementacao

Definicao

Permite ressaltar partes de alta luminancia e highlights em imagens

Melhora aparencia final da imagem, conferindo mais realismo

Filtros de blur com kernels de diferentes tamanhos sao usados parabom resultado, mas existe metodo alternativo

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 17: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

DefinicaoImplementacao

Implementacao

Aplicar um filtro a imagem que mantem somente valores altos deluminancia

vec4 color = texture2D(tex, gl TexCoord[0].st);float lum = dot(vec4(0.30, 0.59, 0.11, 0.0), color);if (lum > brightThreshold)...

Reduzir imagem a metade sucessivamente (uso de FBOs)

Aplicar filtro gaussiano com kernel pequeno para obter blur (viashader)

Blend aditivo entre imagens obtidas

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 18: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Outline

1 IntroducaoIBLHDRObjetivo do trabalho

2 IluminacaoCriacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

3 BloomDefinicaoImplementacao

4 Tone Mapping

5 Resultados

6 Conclusao e trabalhos futuros

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 19: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Definicao

Monitores convencionais atuais so permitem contrastes entre 500:1e 3000:1

Imagens HDR excedem em muito essas limitacoes

Operadores de tone mapping mapeam valores de [0;∞) a [0; 1).

Ultima etapa faz o blend da imagem HDR inicial e a com bloom, eaplica o operador de tone mapping

float YD = exposure * (exposure/brightThreshold + 1.0) / (exposure + 1.0);gl FragColor = color * YD;

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 20: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Outline

1 IntroducaoIBLHDRObjetivo do trabalho

2 IluminacaoCriacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

3 BloomDefinicaoImplementacao

4 Tone Mapping

5 Resultados

6 Conclusao e trabalhos futuros

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 21: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Resultados

Vıdeo demo

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 22: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Outline

1 IntroducaoIBLHDRObjetivo do trabalho

2 IluminacaoCriacao Cube Map com HDRCriacao Framebuffer ObjectsMetodo e Calculos de iluminacao

3 BloomDefinicaoImplementacao

4 Tone Mapping

5 Resultados

6 Conclusao e trabalhos futuros

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 23: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Conclusao

Alta performance

60 FPS para objeto com 4500 faces, a 640x480.20 FPS para objeto com 4500 faces, a 1440x900.

Boa qualidade de imagem

Calculos de iluminacao realistasEfeito de bloom aumenta qualidade da cena

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 24: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Trabalhos futuros

Remover simplificacao de nao haver inter-reflexao entre objetos

Metodo proposto por Hakura e Snyder em [2]

Combinacao de ray tracing mınimo para objetos locaisMapas de ambiente em camadas que produzem reflexoes erefracao similares a solucoes com ray tracing

Insercao de outros efeitos

Depth of FieldLens Flare

Cesar Palomo Real-time High Dynamic Range Image-based Lighting

Page 25: Real-time High Dynamic Range Image-based Lightingwebserver2.tecgraf.puc-rio.br/~cpalomo/pfp/files/rthdribl_presentatio… · limitados a Low Dynamic Range Com HDR, cada pixel pode

IntroducaoIluminacao

BloomTone Mapping

ResultadosConclusao e trabalhos futuros

Referencias Bibliograficas

[1] DEBEVEC, P.E., And MALIK, J. Recovering high dynamic rangeradiance maps from photographs. In SIGGRAPH ’97 (August1997), pp. 369-378.

[2] HAKURA, ZIYAD S. And SNYDER, J. M. Realistic Reflectionsand Refractions on Graphics Hardware With Hybrid Rendering andLayered Environment Maps. In 12th Eurographics Workshop onRendering (2001), pp 286-297.

Cesar Palomo Real-time High Dynamic Range Image-based Lighting