real-time high dynamic range image-based...
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
IntroducaoIluminacao
BloomTone Mapping
ResultadosConclusao e trabalhos futuros
Resultados
Vıdeo demo
Cesar Palomo Real-time High Dynamic Range Image-based Lighting
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
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
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
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