Ray-Casting - dca.fee.unicamp.br · • Propriedades de opacidade das amostras frente atrás....
Transcript of Ray-Casting - dca.fee.unicamp.br · • Propriedades de opacidade das amostras frente atrás....
Ray-Casting
Engel et al. – Capítulos 7 e 8
IA369E – 2s2011 - Ting
Ray-Casting
pI(p)
s(ti)
0p
1p
raiosProxy Geometry texturizada
Geometria amostrada por raios
srcdstdstdst
srcdstdstdst CCC
ααααα
)1(
)1(
−+=−+=
IA369E – 2s2011 - Ting
Um Procedimento
http://www.daimi.au.dk/~trier/?page_id=98
IA369E – 2s2011 - Ting
Ray-Casting
• Vantagens:– Resolução baseada no espaço de imagens– Tipicamente, 0.2% a 4% das células são visíveis– Os traçados dos raios são independentes, propícios à
paralelização– Flexibilidade
• Desvantagens:– Não há suporte direto– Complexidade dependente da resolução da imagem
IA369E – 2s2011 - Ting
Ray-Casting
• Com GPUs programáveis modernos:– Pixel = fragmento.– Raios do observador = direções de projeção.– Simples para ser implementado.– Tratamento uniforme de projeções (projetivas e
perspectivas).– Paralelizáveis e processáveis por um único passo no
shader.– Grande flexibilidade na adaptação dos passos de
percurso em cada raio.
IA369E – 2s2011 - Ting
Algoritmo de 1 passo paraReticulados Regulares
• Volume de dados � textura 3D• 1 fragment Shader para cada raio (= 1 pixel)
– Amostras• Direção: posição de pixel – posição do observador
• Primeira Amostra: Interseção (raio, face mais próxima do observador)
• Última Amostra: Interseção (raio, face mais distante do observador)
– Composição• Propriedades de opacidade das amostras frente�atrás
IA369E – 2s2011 - Ting
Dimensões do reticulado regular
posição volExtentMax
volExtentMin
Fragment shader échamado para cada pixel
Exercício: Explique a função destas instruções.
IA369E – 2s2011 - Ting
Variantes• Computar src com
uso de modelo de iluminação (Cap.5);
• Computar src com uso da tabela de valores pré-integrados (Cap. 4).
scalar.xscalar.y
cor e opacidade � src
IA369E – 2s2011 - Ting
Otimizações
• Condições de parada no percurso dos raios– Truncar o percurso com condições simples
• Amostragem adaptativa– Volume auxiliar para adequar passos de
amostragem � importance volume (volume de relevância)
• “Desvio” de células vazias
IA369E – 2s2011 - Ting
Condições de Parada• Limitações Tecnológicas:
– Testes de parada � adicionais instruções
– Desvios dinâmicos (desvios para fora de um laço) � maior custo
• Soluções:– Supermostragem � voxels “vazios” devem ser “nulos”.
– Realizar um teste por um grupo de n amostras– Pré-processar o intervalo de amostras válidas.
IA369E – 2s2011 - Ting
Condições de Parada
Back faces Front faces
IA369E – 2s2011 - Ting
Cômputo em tempo-real osintervalos
Algoritmo de Liang-Barsky paradeterminar interseção entre um raio e
um cubo com faces alinhadas emrelação aos planos coordenados.
http://developer.nvidia.com/opencl-sdk-code-samples
OpenCL Volume rendering
IA369E – 2s2011 - Ting
Amostragem Uniforme
IA369E – 2s2011 - Ting
Amostragem Adaptativa• Multi-núcleos de CPU (MISD,MIMD) tem desempenho
melhor que multi-núcleos de GPU (SIMD)
Volume de relevância:controla o tamanho do próximo passo.
Tamanho dos passos édependente das componentes de frequência contidas nos dados e no contradomínio das funções de transferência.
Exercício: Explique esta afirmação.
IA369E – 2s2011 - Ting
Otimização
• Valores ópticos pré-integrados: tamanho de passosdepende somentedos componentes de frequência nosdados!!!
IA369E – 2s2011 - Ting
Amostragem Adaptativa
Imagem Original Imagem de número de amostras em cada raioPreta�512 amostrasBranca�0 amostra
Imagem de número de amostras em cada raio,
aumentando a opacidadePreta�512 amostrasBranca�0 amostra
IA369E – 2s2011 - Ting
Desvio de Células “vazias”
• Utilizar uma geometria proxy mais justa.
IA369E – 2s2011 - Ting
Estimativa de espaços vaziosOctree
http://chiranjivi.tripod.com/octrav.html
Valor escalar mínimo e o máximo de cada
célula
Existência ou não de valor visível
Pula ou não a célula
Volume de opacidade emcada célula
IA369E – 2s2011 - Ting
Octree como textura
http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter37.html
(R,G) � (valor mínimo,valor máximo)
IA369E – 2s2011 - Ting
Algoritmo multi-passos
• Limitações das primeiras gerações de GPUs programáveis: nãosuportam laços, desvios condicionais, leitura e escrita simultâneasde texturas.– Diferentes shaders para computar ponto de entrada, composição
e ponto de saída ao longo de cada raio. – Texturas 2D para armazenar valores intermediários.
• Funcionalidade: queries que permitem obter a quantidade de fragmentos que satisfazem condições pré-especificadas.
Cada shader: Uma sequência linear de instruções.
Exercício: Detalhar as duas implementaçõesapresentadas na Seção 7.4.
IA369E – 2s2011 - Ting
Reticulados Irregulares• Aplicações científicas: CFD (computational fluid
dynamics)• Decomponíveis em células tetraédricas � unificar o
tratamento.• Técnica mais conhecida para CPU: cell projection.
IA369E – 2s2011 - Ting
Cell Projection• Dependente da direção de visão.
IA369E – 2s2011 - Ting
Ray-Casting• Topologia de malhas tetraédricas é mais complexa;• Interseções entre raios e células não são “estruturadas”.
IA369E – 2s2011 - Ting
Um ProcedimentoInterseção
Integração
Avança
IA369E – 2s2011 - Ting
Malha como textura
Textura 2D
Textura 3D
Codificadoem 2 bytes
}3,2,1,0{
}1,,2,1,0{
∈−∈
i
nt L
)( 00 xsxgt +⋅−=
IA369E – 2s2011 - Ting
Integração de Valores Ópticosem cada célula t
• Determine o ponto de saída do raio em relação àcélula: o maior valor dentre os obtidos por
• Acesse o valor escalar do ponto.• Associe (valor escalar, valor escalar do passo anterior)
� valor pré-integrado.• Agrege o valor ao resultado intermediário do raio.
it
iti nr
nev
,
,)(rr
r
⋅⋅−
=λ
rr
itn ,
ritv −3,
err
IA369E – 2s2011 - Ting
Percurso ao longo do raio
• Determine a face adjacente à face por onde o raio sairá.• Acesse via textura a célula adjacente.
Exercício: Por que o procedimento só se aplica em malhas de células convexas?
IA369E – 2s2011 - Ting
Critérios de Parada
• Em termos de cada raio (cada pixel): código especial para faces do bordo
• Em termos da imagem: utilizar as funções de consulta de oclusãoassíncronas suportadas pelas GPUs
=-1
IA369E – 2s2011 - Ting
Um Exemplo
Imageamento de superfície Imageamento de volume
IA369E – 2s2011 - Ting
Distribuição de Cargas em GPU512x512x512 � 1024x1024
512x512x4 1024x1024
1024x1024x512
IA369E – 2s2011 - Ting
Desempenho das GPUs
http://www.graphicscardbenchmarks.com/index.cfm
http://jonon.gs/blog/computers/gflop-comparison-table-of-cpus-and-gpus/
TFR: Texture Fill Rate (billion per sec)TMUs: Texture Mapping UnitsMemory (MB)M-Clock: Memory Clock (MHz)M-Band: Memory Bandwidth (GB per sec)
IA369E – 2s2011 - Ting
Otimizações
• Aprimorar padrão de acessos à memória• Transferência assíncrona de dados CPU�GPU• Filtragem Bilinear• Desvio de células “vazias”• Descarte de células não-visíveis• Terminaçcão precoce no percurso de raios• Adiamento do processo de imageamento• Subamostragem
IA369E – 2s2011 - Ting
Acesso à mem ória• Largura de banda de memória é medida com base em
acessos “lineares”/sequenciais– Interpolação (trilinear: 8 acessos)
– Múltiplos acessos de dados para processar um fragmento– Cômputo de gradientes (Modelo de iluminaçcão local)
• Latência: tempo de resposta a um acesso– Otimizado para acessos sequenciais
IA369E – 2s2011 - Ting
Acessos às Mem órias
IA369E – 2s2011 - Ting
Mipmapping
Desvantagem:Perda de infromação.
IA369E – 2s2011 - Ting
Padrão Linear x Padrão Swizzled
Acesso sequencial (x,y,z) Reorganização de forma que as amostras vizinhas tenham
distâncias “próximas”
IA369E – 2s2011 - Ting
Swizzling Multi-orientado
• Uma tentativa para não priorizar nenhuma direçcão �
Alterna o padrão da linearização dos elementos.
IA369E – 2s2011 - Ting
Ganho no Desempenho
NVIDIA GeForce 6800 GT PCIe x16
IA369E – 2s2011 - Ting
TransferênciaAssíncrona
Volume de dados > Memória de Vídeo
Dados no formatonativo da GPU
IA369E – 2s2011 - Ting
OpenGL Pixel Buffer Object
http://www.songho.ca/opengl/gl_pbo.html
IA369E – 2s2011 - Ting
Distribuição de Cargas em GPU
NVIDIA GeForce 6800 GT PCIe x16
NPOT: tamanho diferente de potência de 2
IA369E – 2s2011 - Ting
Filtragem/Interpolação
Interpolação trilinear (8 amostras)
(4 amostras)
IA369E – 2s2011 - Ting
Diferença no Desempenho
NVIDIA GeForce 6800 GT PCIe x16
( triplica o volume)
IA369E – 2s2011 - Ting
Desvio de células “vazias”
40% dos fragmentos descartados 80% dos fragmentos descartados
• Volume subdividido em blocos (valor máx e min).
• Técnica baseada em fatiamento: mais vértices x menos fragmentos.
IA369E – 2s2011 - Ting
Ganho no Desempenho
NVIDIA GeForce 6800 GT PCIe x16
IA369E – 2s2011 - Ting
Descarte de Células Não-Visíveis
• Antes de fatiar e lançar raios em um bloco:– Disabilite buffer de cor e de profundidade;– Imageie faces frontais do bloco como conteúdo do
framebuffer;– Descarte fragmentos com opacidade maior que o
limiar;– Usar ARB_occlusion_query para contar os fragmentos
que passaram do teste de opacidade.• Imageie o bloco se a quantidade de fragmentos > 0; do
contrário o bloco é descartado.
IA369E – 2s2011 - Ting
Código
Os blocos devem ser ordenados em relaçãoao observador: BSP
IA369E – 2s2011 - Ting
Terminação Precoce de Raios
Mesmainstrução
Critério de Parada: Opacidade acima de um limiar
Desvio Dinâmico: Pode introduzir overhead desnecessário.
Por quê?
IA369E – 2s2011 - Ting
Emulação de Desvios Dinâmicos
Reduzir custo. Só fazer teste
em cada blocode N fatias
Para cadapasso ou fatia
Testes com uso de z- e opacidade
IA369E – 2s2011 - Ting
Código
Imagear o proxy geometry com o conteúdo do framebufferpara obter a opacidadecorrente em cadafragmento
Processar pixels com opacidade maior ou igual a ertThreshold
IA369E – 2s2011 - Ting
Ganho no Desempenho
NVIDIA GeForce 6800 GT PCIe x16
IA369E – 2s2011 - Ting
Efeito com Combinação dasTécnicas
NVIDIA GeForce 6800 GT PCIe x16
IA369E – 2s2011 - Ting
Adiamento de Imageamento
Saltar o passo de uso de modelo de iluminação se o valor de gradiente não
for válido
Setar opacidade em zero para ser renderizado no
segundo passo
IA369E – 2s2011 - Ting
Subamostragem• No espaço de objeto: desviar células “vazias”• No espaço de imagem: reduziar a resolução
IA369E – 2s2011 - Ting
Ganho no Desempenho
NVIDIA GeForce 6800 GT PCIe x16
IA369E – 2s2011 - Ting
Diretrizes• Manter os dados mais próximos possíveis da GPU.• Otimizar maximamente os padrões de acesso à
memória.• Transferir assincronamente os dados para GPU.• Maximizar descartes de blocos não visíveis, explorando
testes de profundidade e de estêncil. • Adiar, por fragmento, a execução das instruções “caras”.• Otimizar as instruções nos shaders, preferindo as
sequenciais.• Utilizar, quando possível, amostragens adaptativas.• Subamostrar o volume de dados, quando possível.
IA369E – 2s2011 - Ting
Avaliação do Desempenho
• NVidia– NVidia ShaderPerf: prover métricas de
desempenho dos shaders.http://developer.nvidia.com/nvidia-shaderperf
– NVidia PerfKit: depurar e monitorar o uso de GPU pelos aplicativoshttp://developer.nvidia.com/nvidia-perfkit
• ATI: GPU ShaderAnalyzer– http://developer.amd.com/tools/shader/pages/default.
aspx