Simulações físicas em render acelerado por GPU

Como o assunto de renderização por GPU pode ser estranho para a maioria dos artistas 3d, envolvidos apenas com a modelagem e visualização de objetos, vou passar a publicar mais material sobre as pesquisas e desenvolvimentos nessa área. Isso envolve a área de desenvolvimento e criação de jogos, que é um grande mercado aqui no Brasil com muitas oportunidades. Entre as principais frentes de pesquisa hoje tempos o time das empresas que desenvolvem suas Engines como é o caso da Crytek, Unity e outras. O outro lado dessa pesquisa envolve o uso de tecnologias próprias da NVidia ou ATI.

Se você é estudante universitário e pretende desenvolver o seu TCC ou monografia em computação gráfica, recomendo ler esse artigo recém publicado pelo Dr. Mattias Müller-Fischer que descreve como criar dobras em tecidos. O que tem de mais nesse artigo? Bem, o tecido está sendo deformado em tempo real com a ajuda de uma GPU. Os modelos de simulação de roupas que usamos em softwares de animação trabalham com processamento prévio das deformações.

Depois que rodamos a simulação uma vez, os keyframes ficam armazenados no software e a animação é executada de maneira linear. O método apresentado pelo Dr. Müller trata o tecido em tempo de execução, o que é muito mais complexo.

simulacao-tecido-deforma-gpu-wireframe.jpg

No link é possível fazer o download do artigo em PDF e um vídeo de demonstração. Confesso que não consegui copiar o vídeo, pois o link é muito lento.

Será que essas simulações físicas com GPUs são boas mesmo? Se você ainda tem dúvidas da qualidade desse tipo de simulação, encontrei um vídeo que pode fazer você mudar de idéia. Um usuário criou uma simulação com a Unreal Development Kit (UDK), aproveitando a Unreal Engine 3 para criar uma animação com Rigid Body Dynamics. Ele empilhou 25.000 barris que ganharam uma altitude de 15.000 pés (4.572 metros)!

O resultado? O vídeo abaixo mostra bem:

A simulação com o Rigid Body Dynamics é fluida e não é possível perceber atrasos ou travamentos nas colisões dos objetos. Só para lembrar, esse vídeo é a simulação de um jogo com interação entre os objetos sendo calculada e renderizada em tempo real.

Preciso trocar a minha GPU. Só estou com 112 núcleos. Acho que está ficando pouco. Se você quiser comprar uma nova placa de vídeo, recomendo a GeForce GTX 480. Mas, prepare o bolso.

Comparando o Render com VRay RT na GPU e CPU para arquitetura

O uso de sistemas baseados em GPU está crescendo a cada dia e em pouco tempo deve se tornar o padrão na indústria de computação gráfica, pois o conceito de multicores é levado ao extremo com esse tipo de hardware. Basta consultar a documentação das últimas placas de vídeo lançadas pela NVidia e ATI para descobrir que esses equipamentos contam com mais de 400 núcleos. Até mesmo placas mais antigas como a GeForce 9800 apresentam mais de 100 núcleos que podem ser usados para renderização de cenas. Devido a esse tipo de fenômeno, as empresas que mantém esses softwares investem pesado na criação de versões baseadas em GPU dos seus renderizadores.

Temos casos como o VRay RT, FryRender, mental ray e outros softwares que ganharam versões baseadas em GPU. Mas, será que esse tipo de software é realmente rápido? Como seria uma comparação entre um render realizado com CPUs e GPUs? Caso você tenha curiosidade em conhecer as diferenças de performance, nesse link é possível comparar o VRay RT usando GPU e o VRay RT usando CPU. As comparações foram realizadas com cenas de nível médio e também as mais complexas.

vray-rt-comparando-cpu-gpu.jpg

O tempo de render para cada uma das cenas foi bem parecido de maneira a testar o desempenho e nível de qualidade que cada render consegue atingir. O hardware usado nos projetos também é bem parecido, com a ênfase na GPU usada nas cenas que aproveitam essa tecnologia, com uma GeForce GTX 480.

O veredicto?

Em todas as imagens a qualidade atingida com o uso do render baseado apenas em GPU é evidentemente mais limpo, e sem o efeito de granulação característico de imagens que ainda estão sendo renderizadas. Isso é uma amostra de como essa tecnologia pode ajudar e melhorar e reduzir o tempo de render em cenas complexas. O único problema da tecnologia é que as placas que realmente podem fazer a diferença, ainda tem alto custo em relação as CPUs e podem encarecer a criação de workstations.

Os softwares livres e o Blender devem receber em breve uma versão usando GPU do LuxRender, o que pode trazer esse tipo de tecnologia e velocidade de render para uma quantidade maior de usuários e projetos, inclusive em plataformas diferentes do Windows.