Renderizando imagens usando a GPU? Como começar?

O hardware necessário para trabalhar com computação gráfica sempre foi notório por demandar quantidades razoáveis de memória e poder de processamento, fazendo com que artistas 3d e estudantes procurassem em lojas especializadas por equipamentos de última geração e consequentemente muito mais caros. Com o passar dos anos as exigências de hardware aumentaram, mas o ponto de equilíbrio desse equipamento também foi alterado. Uma das partes que não fazia tanta diferença assim no momento da chamada renderização, alguns anos atrás, hoje pode realmente cortar os tempos de render para períodos extremamente curtos! Estou me referindo a placa de vídeo (GPU).

Com o advento dos renderizadores que conseguem aproveitar o poder das modernas GPUs, é possível jogar toda a carga de render de um projeto para a placa de vídeo e distribuir tarefas que antes eram manipuladas apenas por dois, quatro ou quem sabe oito núcleos do processador (CPU) para até mil núcleos! Sim, você não leu o texto errado. Algumas GPUs existentes hoje em dia oferecem até mil núcleos para distribuir processamento e ligar com renderização de imagens e outros processos.

Exemplos de placas gráficas para alta performance

Um exemplo disso é a GeForce GTX Titan Black com seus insanos 2880 núcleos. A placa de vídeo é voltada para o mercado de jogos com alta performance, mas graças a uma tecnologia chamada CUDA da NVIDIA é possível aproveitar esses núcleos para gerar imagens em softwares de renderização.

É evidente que existem outras opções mais humildes em termos de processamento e quantidade de núcleos, mas independente da opção escolhida é praticamente certo que a sua placa terá muitos núcleos a mais do que qualquer processador acessível para computadores pessoais.

Além da quantidade de núcleos existentes na placa de vídeo, é preciso tomar cuidado também com a memória existente nessas placas. Caso a placa possuam pouca memória, você ficará limitado a manipular apenas aquela quantidade de dados no momento da renderização. Por exemplo, uma placa que possua apenas 1GB de memória, só terá capacidade para manipular e carregar texturas e outras informações até essa capacidade. Quando passa dessa capacidade, o software simplesmente não consegue aproveitar o poder oferecido pela placa de vídeo para gerar o render.

Como começar a renderizar na GPU?

Nesse ponto você já deve ter ficado interessado em começar a renderizar seus projetos usando uma GPU. Mas, como começar? O primeiro passo é um pouco deprimente, pois envolve adquirir uma dessas placas. A minha recomendação nesse caso, para fins profissionais, é preferir um modelo da NVIDIA. As placas da ATi/AMD da série Radeon são excelentes para jogos, mas não oferecem muito suporte para render em softwares gráficos. Caso alguém conheça softwares que usem esse equipamento, indique nos comentários pois não conheço nenhum.

Antes de adquirir a placa de vídeo para renderizar, recomendo consultar a documentação do software que você deseja usar para renderizar seus projetos. Será que ele suporta aceleração por GPU? A maioria já oferece algum tipo de suporte como o iray no 3dsmax e o Cycles no Blender. Ainda existe outros renderizadores externos dedicados como o V-Ray RT, Octane Render e Arion.

Para escolher o modelo da placa, e para isso você deve levar em consideração as especificações técnicas somadas ao investimento necessário para adquirir a placa. Algumas vezes fica mais barato comprar duas placas mais simples, e usar recursos como o SLi da NVIDIA para usar as duas placas no mesmo computador e compartilhar os núcleos e a memória.

Benefícios de usar GPU?

O principal benefício de usar renderização por GPU é a redução significativa do tempo necessário para gerar imagens e animações. Quem já teve a felicidade oportunidade de usar esse tipo de recurso, percebeu que a visualização e manipulação da cenas pode ser realizada em tempo real! Esse é o motivo pelo qual algumas versões de renderizadores que usam a GPU para gerar imagens adotam o sufixo RT para Real Time.

Usando render por GPU

Tem uma placa de vídeo da família GeForce GTX? Quer começar a renderizar seus projetos agora mesmo? Basta fazer o download dos drivers apropriados no web site da NVIDIA e usar o Blender Cycles, que é capaz de utilizar os núcleos dessas placas de vídeo para gerar imagens e animações. Se quiser uma ajuda para começar a usar o Blender Cycles, no EAD – Allan Brito você encontra dois cursos específicos sobre renderização com o Blender Cycles:

Ao fazer a inscrição nos dois cursos ao mesmo tempo na página dos combos, você ainda consegue um desconto em ambos os cursos.

Nova tecnologia de renderização em tempo real da NVidia

A Siggraph é sem sombra de dúvidas o evento mais importante em termos de desenvolvimento e lançamentos para o mercado de computação gráfica, mas junto com a Siggraph que acontece no segundo semestre, temos a GDC. Essa é a sigla da Game Developer Conference, que também acaba se destacando no mercado de computação gráfica, pois o mercado de jogos é grande consumidor de recursos gráficos. A conferência desse ano começou ontem e vai até o dia 27, na cidade americana de São Francisco. Dentre todas as tecnologias e novidades apresentadas na conferência pelas empresas que desenvolvem hardware, um novo recurso para apresentar gráficos em tempo real da NVidia chamou a atenção.

Como você já deve ter percebido pelas recentes atualizações nos softwares 3d, o uso da GPU para simular aspectos avançados da visualização em 3d e 2d está cada vez mais presente, em softwares como o Photoshop e 3ds Max. O próprio Blender 3d recebeu grandes melhorias nessa parte com a incorporação de shaders do tipo GLSL. Mas, mesmo com todas as melhorias ainda temos alguns tipos de gráficos e objetos animados que não são totalmente suportados pelas GPUs. A tecnologia demonstrada pela NVidia na GDC se chama CUDA, que promete resolver e ajudar problemas computacionais na representação de alguns objetos.

A promessa deles é bem simples, apresentar soluções de renderização baseada em GPUs em frações do tempo necessário para exibir o mesmo objeto usando a CPU. Quer um exemplo? Veja esse vídeo:

O vídeo mostra o CUDA resolvendo a animação de partículas para simular fumaça em tempo real. Esse tipo de recurso mostra o quanto é possível atingir níveis de qualidade semelhantes ao da renderização tradicional, que gera arquivos de vídeo em sistemas de render em tempo real.

Essa não foi a primeira vez que a NVidia publicou material em vídeo demonstrando a tecnologia CUDA, o vídeo abaixo também mostra uma animação usando partículas, mas sem a interação com objetos em movimento.

A tendência desse tipo de tecnologia é que um dia usemos basicamente um processo mais simples de renderização, para gerar imagens realistas quando for necessário. Para a maioria das aplicações que usamos no cotidiano, as renderizações usando apenas a GPU devem suprir as maiores necessidades.