Ray-Casting - dca.fee.unicamp.br · • Propriedades de opacidade das amostras frente atrás....

29
Ray-Casting Engel et al. – Capítulos 7 e 8 IA369E – 2s2011 - Ting Ray-Casting p I(p) s(t i ) 0 p 1 p raios Proxy Geometry texturizada Geometria amostrada por raios src dst dst dst src dst dst dst C C C α α α α α ) 1 ( ) 1 ( - + = - =

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