renderização em tempo real departamento de informática - puc-rio setembro de 2007 mapeamento de...
TRANSCRIPT
![Page 1: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/1.jpg)
Renderização em Tempo RealRenderização em Tempo Real
Departamento de Informática - PUC-RioSetembro de 2007
Mapeamento de SombrasMapeamento de Sombras
(Shadow Mapping)(Shadow Mapping)
Vitor Barata Ribeiro Blanco [email protected]
![Page 2: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/2.jpg)
ProgramaPrograma
Introdução Importância das sombras Exemplos
Pré-requisitos Transformação perspectiva Textura projetiva
Mapeamento de sombras Idéias iniciais Algoritmo Vantagens e desvantagens
Problemas, soluções e melhorias Projeção traseira Auto-sombreamento Serrilhamento e filtragem
Técnicas avançadas
![Page 3: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/3.jpg)
Importância das SombrasImportância das Sombras
Esclarecimento das relações espaciais entre os objetos Realismo Beleza estética Jogos: Atmosfera e informações adicionais Visualização científica: Facilidade de compreensão do
modelo
![Page 4: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/4.jpg)
Sombras abruptas e suavesSombras abruptas e suaves
Sombras Abruptas (hard shadows) Fonte de luz pontual
Sombras suaves (soft shadows) Fonte de luz com área Duas regiões: umbra e penumbra
![Page 5: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/5.jpg)
Exemplo sem sombrasExemplo sem sombras
![Page 6: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/6.jpg)
Exemplo com sombrasExemplo com sombras
![Page 7: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/7.jpg)
![Page 8: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/8.jpg)
![Page 9: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/9.jpg)
Exemplo: Luxor Jr. (SM)Exemplo: Luxor Jr. (SM)
![Page 10: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/10.jpg)
Exemplo: Doom 3 (SV)Exemplo: Doom 3 (SV)
![Page 11: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/11.jpg)
Exemplo: Bioshock (SM)Exemplo: Bioshock (SM)
![Page 12: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/12.jpg)
ProgramaPrograma
Introdução Importância das sombras Exemplos
Pré-requisitos Transformação perspectiva Textura projetiva
Mapeamento de sombras Idéias iniciais Algoritmo Vantagens e desvantagens
Problemas, soluções e melhorias Projeção traseira Auto-sombreamento Serrilhamento e filtragem
Técnicas avançadas
![Page 13: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/13.jpg)
Transformação PerspetivaTransformação Perspetiva
Frustum de visão:
![Page 14: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/14.jpg)
Transformação PerspectivaTransformação Perspectiva
Resolução em (x,y,z): Quanto mais distante, menor a resolução!
P
y1
y2
y1’
y2’
y1 = y2y1’ << y2’
![Page 15: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/15.jpg)
Textura ProjetivaTextura Projetiva
Projeção de imagens sobre superfícies Analogia: projetor de slides
Projective Texture MappingCass Everitt - nVidia
![Page 16: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/16.jpg)
Textura ProjetivaTextura Projetiva
Geração automática de coordenadas Combinação linear (distância a um plano)
Espaço do objeto Equação do plano: [a,b,c,d] T
Coordenada gerada: s = axobj+byobj+czobj+dwobj
Espaço do olho Equação do plano: [a,b,c,d] T
Plano transformado: [a’,b’,c’,d’] T = (VM)-T [a,b,c,d] T
Coordenada gerada: s = a’xeye+b’yeye+c’zeye+d’weye
Transformação de coordenadas: [s’,t’,r’,q’]T = Mtex [s,t,r,q]T
![Page 17: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/17.jpg)
Textura ProjetivaTextura Projetiva
Obtendo coordenadas projetadas: Para visualização na tela:
Para projeção em textura:
MundoObjeto Olho Clip TelaM Vcam Pcam viewport
[-1..1] [0..size]
MundoObjeto Projetor Clip TexM Vproj Pproj
[-1..1] [0..1]
T½S½
![Page 18: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/18.jpg)
Textura ProjetivaTextura Projetiva
Gerando coordenadas com o projetor no espaço do olho:
[s’,t’,r’,q’]T = Mtex [xeye,yeye,zeye,weye]T
Mtex = T½S½PpVpVc-1
Vc-1: inversa da matriz de visualização da câmera
Vp: matriz de visualização do projetor
Pp: matriz de projeção do projetor
T½S½: transformação do espaço de clip para o da textura
MundoObjeto
Olho Clip TelaVc-1
Projetor Clip TexVpPp T½S½
![Page 19: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/19.jpg)
Textura ProjetivaTextura Projetiva
Explorando a geração automática de coordenadas no espaço do olho:
Planos como linhas da matriz identidade: ps =[1,0,0,0] => s = x pt =[0,1,0,0] => t = y pr =[0,0,1,0] => r = z
Se a matriz modelview VM = I [s,t,r]T = [xeye,yeye,zeye]T
Se VM = Vc
As equações dos planos são multiplicadas por Vc-1
[s,t,r]T = Vc-1[xeye,yeye,zeye]T = [xobj,yobj,zobj]T
Podemos usar Mtex = T½S½PpVp
![Page 20: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/20.jpg)
Textura ProjetivaTextura Projetiva
Alternativa As equações dos planos funcionam como linhas de uma
matriz que transforma [xeye,yeye,zeye,weye]T
Podemos considerar essa matriz já multiplicada por T = T½S½PpVp:
ps =[T00,T01,T02,T03] pt =[T10,T11,T12,T13] pr =[T20,T21,T22,T23]
Finalmente, mantemos Mtex = I
![Page 21: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/21.jpg)
ProgramaPrograma
Introdução Importância das sombras Exemplos
Pré-requisitos Transformação perspectiva Textura projetiva
Mapeamento de sombras Idéias iniciais Algoritmo Vantagens e desvantagens
Problemas, soluções e melhorias Projeção traseira Auto-sombreamento Serrilhamento e filtragem
Técnicas avançadas
![Page 22: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/22.jpg)
Mapeamento de SombrasMapeamento de Sombras
Idéias iniciais: Se nos colocarmos no local da fonte de luz, toda a cena
visível fica iluminada, sem sombras As superfícies iluminadas são, então, aquelas que podem
ser “vistas pela fonte de luz” Considerando uma fonte tipo spot, poderíamos usar um
“mapa de luz” como textura projetiva para causar o efeito de iluminação
Problema A textura projetiva ignora obstáculos, além de ser projetada
também para trás Apenas o primeiro obstáculo, aquele mais próximo da fonte
de luz, deveria ser iluminado
![Page 23: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/23.jpg)
Mapeamento de SombrasMapeamento de SombrasAlgoritmoAlgoritmo
Renderizar a cena vista pela fonte de luz
Armazenar z-buffer em uma textura (mapa de sombras)
Renderizar a cena vista pela câmera
Transformar pixels para o espaço da luz (s,t,p,q)
zmapa = acesso em s/q e t/q zpixel = p/q Fragmento iluminado se
zpixel <= zmapa
![Page 24: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/24.jpg)
Mapeamento de SombrasMapeamento de SombrasPassosPassos
Fonte das imagens: Wikipedia
Cena inicial sem sombrasPonto-de-vista da fonte de luz
Mapa de profundidadesMapa de sombras projetado
Resultado do teste de zCena final com sombras
![Page 25: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/25.jpg)
Suporte em HardwareSuporte em Hardware
Pipeline convencional:glTexImage2D (GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, mapWidth, mapHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
// Filtering can be enabled on Nvidia, disabled otherwiseglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); // GL_LINEARglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); // GL_LINEAR
//Enable shadow comparisonglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
//Shadow comparison should yield true (not in shadow) if r <= textureglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
//Shadow comparison should generate a LUMINANCE result (rgb = 0 or 1) glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);
//Clamp to avoid shadow replicationglTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderInLightOrNot)glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
![Page 26: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/26.jpg)
Suporte em HardwareSuporte em Hardware
GLSL:
CG:
Podem-se programar filtros (Percentage-CloserFilter, PCF) melhores que o padrão da Nvidia, além de outras técnicas avançadas
// Shadow map sampleruniform sampler2DShadow ShadowMap;
// Get Shadow resultvec4 shadowTest = shadow2DProj(ShadowMap, gl_TexCoord[1])
tex2Dproj (sampler2D tex, float3 sq);
![Page 27: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/27.jpg)
Vantagens e DesvantagensVantagens e Desvantagens
Mapeamento de Sombras Vantagens:
Simples de implementar Relativamente simples de integrar Não requer conhecimento da geometria da cena Suporte total em hardware Sombras suaves (soft shadows) como extensão direta Adequado a qualquer primitiva que marque o z-buffer Custo baixo e controlável com técnicas comuns de culling e LOD
Desvantagens: Problema de auto-sombreamento incorreto Problema de serrilhamento (aliasing) acentuado Difícil estender para luzes pontuais onidirecionais
![Page 28: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/28.jpg)
Vantagens e DesvantagensVantagens e Desvantagens
Volumes de Sombras Vantagens:
Ausência de serrilhamento, hard-shadows perfeitas Problema de auto-sombreamento facilmente tratável Estende-se naturalmente para fontes pontuais onidirecionais
Desvantagens: Requer maior esforço de implementação e integração Requer análise da geometria da cena Custo pode ser alto na análise da geometria e na rasterização dos
volumes de sombra Suporte em hardware apenas com geometry shaders em DX10 /
OpenGL 2.1 Adequado apenas a primitivas poligonais, sem efeitos por pixel como
displacement maps e alpha-test transparency.
![Page 29: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/29.jpg)
Idéias adicionaisIdéias adicionais
O mapa de sombras tradicional não depende do observador Luzes e objetos estáticos:
Reaproveitamento o mapaExplorar a coerência quadro-a-quadro
Objetos dinâmicos:Usar um mapa de sombra para os objetos
dinâmicosUsar outro mapa, ou mesmo uma técnica
diferente, para os objetos estáticos
![Page 30: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/30.jpg)
ProgramaPrograma
Introdução Importância das sombras Exemplos
Pré-requisitos Transformação perspectiva Textura projetiva
Mapeamento de sombras Idéias iniciais Algoritmo Vantagens e desvantagens
Problemas, soluções e melhorias Projeção traseira Auto-sombreamento Serrilhamento e filtragem
Técnicas Avançadas
![Page 31: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/31.jpg)
Projeção reversa e ReplicaçãoProjeção reversa e Replicação
Replicação das sombras Pode ocorrer fora do espaço do mapa [0..1] Clamp, borda em sombra (spot) Clamp, borda iluminada (pontual e direcional)
Projeção reversa Pode ocorrer se tratarmos luzes pontuais como spot
para o mapeamento de sombras Utilizar textura 1D com 2 texels Geração automática de coordenadas
À frente da luz: s < 0.5 Atrás da luz: s > 0.5
Combinar com multi-textura
![Page 32: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/32.jpg)
Resolução do Mapa de SombrasResolução do Mapa de Sombras
Tanto o mapa de sombras quanto a imagem final são representações amostradas da cena
Volumes de visão conflitantes: Amostragem não-uniforme da
transformação perspectiva Baixa amostragem do mapa longe da
fonte de luz Necessária alta amostragem próximo
à câmera
Visã
o d
a câ
mera
Visã
o d
a
fon
te
Figura extraída de: C. Everitt, Shadow Mapping, NVidia Corporation
![Page 33: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/33.jpg)
Auto-sombreamento incorretoAuto-sombreamento incorreto
![Page 34: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/34.jpg)
Auto-sombreamento incorretoAuto-sombreamento incorreto
Origens do auto-sombreamento Precisão numérica Representação discreta e desalinhamento de amostras Pior caso: dueling frusta Solução básica: acrescentar um pequeno valor de bias aos
valores armazenados no mapa
![Page 35: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/35.jpg)
Auto-sombreamento incorretoAuto-sombreamento incorreto
Acréscimo de deslocamento generalizado [Weiskopf03]
zmapa = z1 + zbias(z1,z2)
Bias constante: zbias = offset[Williams78]
Second-depth: zbias = z2-z1[Wang94]
Midpoint: zbias = (z2–z1) / 2 [Woo92]
Dual: zbias = min(zmid,zmax) [Weiskopf03]
Bias constante requer ajuste caso-a-caso, mas é suficiente na maioria dos casos
Second-depth restrito a sólidos fechados Gerar mapa com backfaces
Dual produz ótimos resultados, mas usa duas passadas de geração
![Page 36: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/36.jpg)
Auto-sombreamento incorretoAuto-sombreamento incorreto
Outras idéias Melhorar o ajuste do volume de visão da fonte de
luz à cena Forçar uma variação linear (não hiperbólica) nos
valores de z do mapa Coordenada de textura + shader
Ao invés de um mapa de profundidades, utilizar um mapa de IDs codificados em cores IDs por polígonos causa artefatos nas interfaces IDs por objetos impede que gerem sombras corretas
sobre si próprios
![Page 37: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/37.jpg)
Auto-sombreamento incorretoAuto-sombreamento incorreto
Alinhamento de amostras Problema de reconstrução 2D
Amostras do mapa de sombras?Amostras da câmera?
![Page 38: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/38.jpg)
Alinhamento de AmostrasAlinhamento de Amostras
Interpolação do mapa de sombras não funciona bem
![Page 39: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/39.jpg)
Alinhamento de AmostrasAlinhamento de Amostras
Reconstrução das amostras da câmera [Wang94] Considerar “amostras virtuais” da câmera sobre o plano
tangente à superfície obter a equação do plano tangente com o ponto (vértice) e a normal
(coordenada de textura) Calcular as coordenadas do ponto, sobre esse plano, que se alinha
com a amostra do mapa (shader)
![Page 40: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/40.jpg)
Serrilhamento e FiltragemSerrilhamento e Filtragem
![Page 41: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/41.jpg)
Percentage-Closer FilterPercentage-Closer Filter (PCF) (PCF)
Idéia: Utilizar diferentes amostras do mapa de sombras Realizar vários testes de sombra com resultado
binário (0,1) Filtrar os resultados dos testes
Núcleo: Espaço da imagem: amostras em pixels vizinhos Espaço do mapa: amostras em texels vizinhos
![Page 42: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/42.jpg)
PCF 5x5 no espaço da imagemPCF 5x5 no espaço da imagem
![Page 43: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/43.jpg)
PCF 5x5 no espaço do mapaPCF 5x5 no espaço do mapa
![Page 44: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/44.jpg)
Aprimoramentos ao PCFAprimoramentos ao PCF Eliminação do efeito de faixas (banding)
Amostras com jitter (passado como textura) Quinas mais corretas, sem artefatos
Núcleo circular com preservação de área Eficiência
Amostragem adaptativa (amostras amarelas apenas quando necessário)
maxmax
maxmax
2'
2cos'
xxsenyyRy
xxyyRx
Implementação descrita nos slides do Waldemar e no livro GPU Gems II
![Page 45: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/45.jpg)
PCF 5x5 aprimorado com PCF 5x5 aprimorado com jitterjitter
![Page 46: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/46.jpg)
PCF não-adaptativoPCF não-adaptativoem baixa resoluçãoem baixa resolução
![Page 47: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/47.jpg)
PCF adaptativoPCF adaptativoem baixa resoluçãoem baixa resolução
Artefatos surgem em mapas de baixa resolução devido ao grande núcleo utilizado para o filtro
![Page 48: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/48.jpg)
PCF não-adaptativoPCF não-adaptativoem boa resoluçãoem boa resolução
![Page 49: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/49.jpg)
PCF adaptativoPCF adaptativoem boa resoluçãoem boa resolução
Artefatos menos perceptíveis
![Page 50: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/50.jpg)
ProgramaPrograma
Introdução Importância das sombras Exemplos
Pré-requisitos Transformação perspectiva Textura projetiva
Mapeamento de sombras Idéias iniciais Algoritmo Vantagens e desvantagens
Problemas, soluções e melhorias Projeção traseira Auto-sombreamento Serrilhamento e filtragem
Técnicas Avançadas
![Page 51: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/51.jpg)
Técnicas AvançadasTécnicas Avançadas
Filtragem Mapas de Variância (VSM, 2006) Summed Area VSM (2007)
Reparametrização Perspective Shadow Maps (PSM, 2002) Light-Space PSM (LiSPSM, 2004) Logarithmic Shadow Maps (LogSM, 2006)
Particionamento Particionamento em profundidade ou Cascaded Shadow Maps Particionamento por faces Particionamento em ladrilhos Particionamento Adaptativo (2000) Queried Virtual Shadow Maps (2007)
Interessados, peçam-me as referências por e-mail. Também acrescentarei aos slides assim que possível.
![Page 52: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/52.jpg)
Mapas de VariânciaMapas de Variância
Algoritmo: Armazenar no mapa de sombras os valores de (z) e (z2) de cada
amostra Filtrar as duas componentes por hardware e possivelmente em
shaders Considera-se que as amostras de profundidades no interior do
núcleo do filtro fazem parte de uma distribuição estatística Os valores filtrados podem ser encarados como os valores
esperados E(z) e E(z2) Calcula-se a média e a variância da distribuição:
μ = E(z) = E(z2) − E(z)2
![Page 53: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/53.jpg)
Mapas de VariânciaMapas de Variância
Algoritmo (continuação): Calcula-se, com a desigualdade de Cauchy, a probabilidade
máxima de dado fragmento estar em luz:
Usa-se essa probabilidade para multiplicar o valor da iluminação do fragmento
Problema: vazamento de luz
P(zmapa>=zpixel) <= pmax = 2 / [2 +(t−μ)2]
![Page 54: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/54.jpg)
ReparametrizaçãoReparametrização
![Page 55: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/55.jpg)
Métrica de SerrilhamentoMétrica de Serrilhamento
Consideramos o “erro de serrilhamento” como a razão entre as áreas de uma superfície vistas por um texel do mapa de sombras e por um pixel da imagem:
lc
cl
c
l
w
w
w
wm
cos
cos
'
'
![Page 56: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/56.jpg)
Métrica de SerrilhamentoMétrica de Serrilhamento
Idealmente, queremos m=1 m > 1 serrilhamento m < 1 super-amostragem
Dois tipos de serrilhamento Serrilhamento de perspectiva: wl/wc Serrilhamento de projeção: cos(θc)/cos(θl)
Potencialmente ilimitado Difícil computar Menos notável Não tratado por técnicas de reparametrização
Objetivo: minimizar o erro máximo em todo o campo de visão da câmera: L∞ = max( |wl/wc| )
![Page 57: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/57.jpg)
Reparametrização PerspectivaReparametrização Perspectiva
Idéia: deformar a cena de modo que objetos mais próximos da câmera apareçam com maior área no mapa de sombras
Para a cena original, tudo se passa como se os texels do mapa tivessem seu tamanho alterado
Baixíssimo custo, apenas calcular e multiplicar uma transformação à matriz de visualização da cena
![Page 58: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/58.jpg)
Reparametrização PerspectivaReparametrização PerspectivaCaso ÓtimoCaso Ótimo
Luz incidindo perpendicularmente à direção de visualização
PSM [Stamminger02]: LiSPSM [Wimmer04]: Tradicional:
nfnn '
nn '
'n
![Page 59: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/59.jpg)
Reparametrização PerspectivaReparametrização PerspectivaEfeito da TransformaçãoEfeito da Transformação
Luz incidindo perpendicularmente à direção de visualização
PSM [Stamminger02]: LiSPSM [Wimmer04]: Tradicional:
nfnn '
nn '
'n
![Page 60: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/60.jpg)
ParticionamentoParticionamento
![Page 61: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/61.jpg)
Particionamento por FacesParticionamento por Faces
Com luz e câmera paralelas, nenhuma reparametrização perspectiva é boa simultaneamente para A e C
Idéia formalizada por Lloyd (2006): Gerar um mapa de sombras independente para cada face do
volume de visão da câmera visto pela fonte Aplicar uma transformação perspectiva diferente a cada face
![Page 62: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/62.jpg)
Particionamento em Particionamento em ProfundidadeProfundidade
Lloyd (2006) mostra que o erro de serrilhamento é proporcional a (f/n)
Podemos reduzir o erro máximo utilizando várias partições ao longo do eixo z
O erro é mínimo com partições semelhantes, ou seja, que tenham a mesma razão (f/n)
![Page 63: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/63.jpg)
ExemploExemploIncidência PerpendicularIncidência Perpendicular
Mapeamento Tradicional
![Page 64: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/64.jpg)
Exemplo Exemplo Incidência PerpendicularIncidência Perpendicular
Reparametrização LiSPSM Generalizada
![Page 65: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/65.jpg)
Exemplo Exemplo Incidência PerpendicularIncidência Perpendicular
ReparametrizaçãoParticionamento ZP2
![Page 66: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/66.jpg)
Exemplo Exemplo Incidência PerpendicularIncidência Perpendicular
ReparametrizaçãoParticionamento ZP2
PCF 5x5
![Page 67: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/67.jpg)
Exemplo Exemplo Incidência ParalelaIncidência Paralela
Mapeamento Tradicional
![Page 68: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/68.jpg)
Exemplo Exemplo Incidência ParalelaIncidência Paralela
ReparametrizaçãoLiSPSM Generalizada
![Page 69: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/69.jpg)
Exemplo Exemplo Incidência ParalelaIncidência Paralela
ReparametrizaçãoParticionamento ZP2
![Page 70: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/70.jpg)
Exemplo Exemplo Incidência ParalelaIncidência Paralela
ReparametrizaçãoParticionamento ZP2
PCF 5x5
![Page 71: Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso](https://reader035.vdocuments.pub/reader035/viewer/2022062512/552fc16e497959413d8ed4ea/html5/thumbnails/71.jpg)
FIMFIM
Perguntas?