Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de...

71
Renderização em Tempo Real Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de Sombras Mapeamento de Sombras (Shadow Mapping) (Shadow Mapping) Vitor Barata Ribeiro Blanco Barroso [email protected]

Transcript of Renderização em Tempo Real Departamento de Informática - PUC-Rio Setembro de 2007 Mapeamento de...

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.

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.

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.

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.

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.

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.

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.
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.
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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

FIMFIM

Perguntas?