2.4 Abordagens específicas
2.4.3 Implementação em CPU com optimizações
Ao nível do CPU foram obtidos resultados que demonstram um significativo aumento da eficiência, menores tempos de
rendening
, mantendo os pipelines do CPU e unidades funcionais na máxima das capacidades. Esta “quase sempre máxima capacidade” é conseguida através da alteração da ordem sequêncial do algoritmo derendering
e adaptação das estruturas de dados utilizadas. Exemplos deste tipo de optimizações são o cuidado de alinhar a estrutura de dados à dimensão das linhas decache
do CPU e à utilização de paralelismo ao nível das instruções (Wald 2001; Wald 2003). Os mais recentes processadores incluem no seuinstruction set
instruções do tipo SIMD, como seja o caso das instruções SEE presentes nos processadores Pentium™ da Intel© e 3Dnow™ da AMD©.Wald et al. (Wald 2003) implementou um
ray tracer
optimizado para arquitectura Pentium™, essencialmente ao nível da representação dos dados em estruturas mais simples e a utilização de instruções do tipo SIMD. A coerência de raios foi utilizada para compactar quatro intersecções com um triângulo, num mapeamento directo da pipeline do processador, tirando partido das instruções SEE (SIMD) presentes na arquitectura. Num nível hierárquico mais alto as estruturas de aceleração utilizadas foram adaptadas à configuração do 1º e 2º nível decache
do processador no que respeita ao alinhamento das linhas decache
e aos dados dos nós das estruturas de aceleração. O tempo de acesso de um nível decache
é sensivelmente na ordem de uma magnitude inferior para o próximo nível de memória (Wald 2003). Na componente de iluminação dos pontos daimagem foi utilizada uma abordagem semelhante no que respeita ao teste de intersecção, no entanto devido à reorganização dos dados o ganho de eficiência não foi significativo na mesma ordem de grandeza.
O ganho de eficiência combinado do
ray tracer
implementado, comparando-o com os pacotes de software Rayshade (Rayshade 2008) and POV-ray (Pov-ray 2008), foi na ordem de uma ordem de magnitude. Comparando os resultados de uma rasterização com oray tracer
implementado, verificou-se que oray tracer
é mais eficiente em cenários com um número elevado de polígonos de representação, nomeadamente acima de um milhão de polígonos. Esta situação deve-se principalmente à natureza de crescimento logarítmico e linear na quantidade de cálculos relativamente ao número de polígonos de uma cena, noray tracing
e na rasterização respectivamente (Wald 2003).Ainda segundo Wald (Wald 2004), um dos objectivos mais ambicionados na comunidade da computação gráfica é a geração de realismo em tempo real, isto é, sintetizar imagens com um aspecto realista com ferramentas dentro da definição de tempo real. Actualmente, virtualmente todas as abordagens no sentido do tempo real utilizam hardware específico, essencialmente baseado na abordagem da rasterização de triângulos. Infelizmente, embora esta tenha apresentado uma tremenda evolução nos últimos anos, para muitas aplicações. Esta tecnologia já chegou aos limites em termos de complexidade do cenário, efeitos suportados e realismo atingível.
Uma alternativa a rasterização de triângulos é o algoritmo de
ray tracing
, que é bem conhecido pela sua melhor escalabilidade, quer em termos da dimensão do modelo do cenário, quer no poder de cálculo requerido. No entanto, oray tracing
também é exigente em termos de cálculo computacional e por esse motivo é utilizado principalmente norendering
de elevada fidelidade em sistemasoff-line
. A tese de Wald (Wald 2004) foca a sua atenção na questão sobre se oraytracing
terá brevemente um maior papel em aplicações interactivas e como este objecto é atingido. Para esse fim, é discutido o sistema em tempo real deray tracing
RTRT/OpenRT (Dietrich 2003; Wald 2003; Pomi and Slusallek 2004; Wald 2004; Wald 2005; Wald 2005), um software baseado num
ray tracer
em tempo real que permite obterframerates
a taxas interactivas, em sistemas baseados nos CPU actuais. Em particular, é discutido o desenho global do sistema, a eficiência da implementação dos algoritmos fundamentais deray tracing
, técnicas para manusear de forma eficiente os modelos de cenários dinâmicos, uma eficiente paralelização da plataforma, e uma API de baixo nível semelhante ao OpenGL.No seu conjunto, todas estas técnicas produzem um mecanismo completo de
rendering
em tempo real que suporta cenários bastante complexos, de elevada fiabilidade e de iluminação correcta, para além da simulação correcta do comportamento da luz, com taxas interactivas. Na parte final da sua tese são discutidas as implicações e o potencial de um sistema deray tracing
em tempo real com iluminação global e como a disponibilização desta tecnologia pode proporcionar o objecto enunciado: obter iluminação global de uma forma interactiva – a simulação correcta do comportamento da luz a taxas interactivas.No que respeita às plataformas específicas Benthin et al. (Benthin 2006) refere que nas últimas três décadas o aumento performance no CPU foi obtida essencialmente através do aumento da frequência de relógio. Este aumento na frequência de relógio veio aumentar o consumo de energia e respectiva dissipação de calor, que de certa forma limita a continução deste tipo de abordagem, fazendo como que os responsáveis pelo design dos de CPU enveredar por outros caminhos alternativos para providenciar mais poder de cálculo. Em particular abordam três vias: o modelo computacional de
streaming
, unidades com instruções do tipo SIMD aplicadas a elementos semelhantes a vectores, e arquitecturasmulticore
.Um exemplo particular deste tipo de arquitectura multicore é o
Cell
Broadband Engine Architecture
(CBEA), que oferece um poder de cálculo na ordem dos 200 GFlops num circuito integrado a funcionar a velocidade de relógio de 3,2 GHz. O Cell Processor oferece um elevado potencial para aplicações de cálculo intensivo como seja o caso doray tracing
, mas também apresenta novos desafiosdevido a sua arquitectura não convencional. Benthin et al. descreve a implementação de
ray tracer
em tempo real (Benthin 2006) no Cell Processor (Hofstee 2005; Williams 2006), utilizando uma combinação de rotinas nucleares optimizadas de baixo nível, um modelo destreaming
,cache
explicito e uma abordagem em software em para emular virtualmente o Hyper-Threading™ (IntelCorporation 2003), minimizando os efeitos de latência do acesso via DMA, foi possível atingir uma performance superior de uma ordem de magnitude em relação a uma implementação num CPU standard.Schmittler et al. (Schmittler 2002) refer que o algoritmo de
ray tracing
é bem conhecido pela sua habilidade de gerar imagens de alta qualidade e a sua flexibilidade para incorporar efeitos de iluminação avançados. Oray tracing
interactivo foi amplamente demonstrado emclusters
de computadores e super computadores, mas em hardware que suporta directamente oray tracing
é difícil de implementar.Os autores apresentam uma nova arquitectura para o
ray tracing
em tempo real, escalável, modular e bastante eficiente. Esta arquitectura atinge uma elevada eficiência com baixos requisitos de largura de banda em termos de memória, juntando os raios de uma forma eficiente.A arquitectura é facilmente configurável para suportar uma variedade de cargas. Para modelos de cenários do género OpenGL ela oferece uma performance semelhante às soluções mais avançadas no domínio da rasterização. A arquitectura também suporta todas as características do
ray tracing
, incluído sombras exactas, reflexões e refracções, bem como é capaz de processar modelos como milhões de triângulos. A arquitectura e a sua eficiência foi analisada em diferentes configurações, baseado em simulações precisas e cíclicas.Outra arquitectura para o
ray tracing
de plataforma é apresentada por Dietrich et al. (Dietrich 2003), o OpenRT. Segundo os autores há mais de uma década, grafismos interactivos foram modelados através de triângulos e sua respectiva rasterização, correspondente à API do OpenGL (SGI 2008). SegundoDietrich et al., o
ray tracing
interactivo tem vindo a apresentar-se como uma realidade disponível em diferentes tipos de plataformas, devido a sua superior escalabilidade, usabilidade e eficiência, é francamente provável que oray tracing
se apresente como uma alternativa viável no mundo das aplicações de gráficos por computador. Sendo desejável que este tipo de tecnologia suporte num padrão com a sua bem conhecida API, como a quase standard interface OpenGL, será difícil e complicado implementar uma interface semelhante, pois o standard OpenGL está fortemente associado como o processo de rasterização, tornando-o pouco adequado para oray tracing
.É proposto uma nova API, designada de OpenRT. Esta nova API foi desenhada para ser similar ao OpenGL quanto possível, enfatizando no entanto nas características do
ray tracing
interactivo.Sendo do mesmo nível de simplicidade de utilização e aprendizagem do OpenGL, o OpenRT oferece todas as vantagens do
ray tracing
, como a visibilidade implícita, instanciação, a liberdade de lançar raios arbitrários e programar o modelo de iluminação.Numa versão mais prática Wald et al. (Wald 2003) propõe uma implementação de um
ray tracer
numa rede de computadores homogéneos. Devido ao seu significativo e elevado nível de paralelismo, oray tracing
sempre foi uma plataforma atractiva para investigadores na área do processamento paralelo. Com os recentes avanços no domínio do software e do hardware, é agora possível criar imagens sintetizadas de elevada qualidade a taxas interactivas emclusters
de PCs. Wald et al. apresenta o estado da arte doray tracing
distribuído e interactivo baseado na descrição de aspectos distribuídos do OpenRT (Dietrich 2003), um modelo para um motor derendering
interactivo. É demonstrado a sua escalabilidade, e são apresentados vários exemplos de aplicação.Informações sobre os aspectos anteriormente referidos e outros podem ser encontrados no STAR – State of The Art Report de Wald et al. (Wald 2003) na conferência da