Cycles com suporte melhorado para OpenCL

Quando o assunto é a escolha de uma plataforma de hardware para acelerar a renderização com o Blender Cycles, sempre fui bem claro em relação ao uso de equipamentos da Nvidia. O suporte para tecnologia CUDA sempre foi melhor no Cycles deixando muitos proprietários de placas Radeon decepcionados.

Mas, isso não era culpa dos desenvolvedores do Blender. Muito dessa falta de suporte para OpenCL se devia exatamente pela pouca ajuda da própria AMD em prover as opções e ferramentas necessárias para melhorar o suporte.

Depois de muita espera e uma ajuda merecida de uma equipe de engenheiros da própria AMD, o Cycles está com um Kernel paralelo com suporte melhorado para OpenCL. Na próxima versão do software que deve ser lançada em breve teremos melhoras significativas na performance.

Em alguns casos, o uso de placas AMD como a Radeon RX 480 pode trazer performance melhor do que equipamentos da Nvidia! Isso quando fazemos comparação de placas na mesma faixa de preço.

Como geralmente as placas da AMD possuem excelente competitividade em comparação com as GeForces, isso pode significar uma melhor relação entre custo e benefício para cada equipamento.

Se você tem um computador em casa ou no escritório com placas AMD, pode preparar o mesmo para receber a versão 2.79 do Blender! Ele será capaz de renderizar cenas usando todos os núcleos da GPU e OpenCL.

É o momento de abandonar a Nvidia? Calma! Isso é apenas o começo de uma longa reaproximação entre a AMD e os usuários do Blender. Se tudo funcionar de acordo, você deve começar a considerar os equipamentos da empresa para futuras atualizações ou aquisições.

Quem já investiu na Nvidia deve permanecer com os equipamentos por algum tempo. Você também precisa considerar os outros softwares que funcionam em conjunto com o Blender. Todos eles se beneficiam com placas AMD?

É uma excelente notícia, sempre é bom ter mais opções.

Aprendendo a renderizar com o Cycles

Quer aprender a renderizar projetos com o Cycles? No EAD – Allan Brito existem diversos cursos que ajudam você a usar o Cycles para renderizar projetos com os mais variados temas:

LuxVR: Renderização por GPU no LuxRender

O LuxRender é um dos renderizadores externos que melhor trabalha junto com o Blender, e devido ao fato do software usar algoritmos de renderização baseados em física real, as imagens geradas com o LuxRender tendem a ser fantásticas. Mas, o LuxRender tem uma péssima fama entre artistas 3d devido a velocidade com que geras as suas imagens. O seu processo de renderização é baseado em refinamento progressivo de imagens, semelhante ao que outros softwares fazem como o próprio Blender Cycles e o Indigo Renderer. É possível usar algum artifício de hardware para acelerar o render com o LuxRender? Claro que sim! Isso é feito com o suporte de GPUs, que é a solução de render mais usada nos dias de hoje quando falamos em reduzir os tempos necessários para gerar as imagens.

Mas, um projeto em andamento com o LuxRender pode colocar o software em pé de igualdade com ferramentas já consolidadas na renderização usando GPU. O chamado LuxVR tem como objetivo oferecer aceleração de hardware usando OpenCL, o que deve agradar bastante os donos de placas da Radeon. Quer uma amostra do que pode ser o LuxVR? O vídeo a seguir é uma demonstração do projeto, gravado pelo desenvolvedor:

Como você pode perceber pela velocidade com que a imagem é atualizada, o projeto realmente consegue exibir os detalhes do modelo 3d em tempo real, fazendo justiça ao nome LuxVR. É para você largar tudo e ir correndo adotar o LuxVR? Calma, não existe razão para pânico, pelo menos ainda. O projeto é muito promissor, mas ainda está em desenvolvimento, mas é uma excelente referência e possibilidade futura para usuários do Blender que gostariam de usar os recursos avançados do LuxRender para gerar imagens realistas. Quem sabe assim será possível encontrar mais animações renderizadas com o LuxVR.

Em comparação com o Cycles o LuxRender possui mais recursos, devido claro a idade e empenho dos desenvolvedores que estão trabalhando no renderizador já faz um bom tempo, mas a tendência é que o Cycles um dia pelo menos se equipare em recursos e sofisticação no render.

O nome VR não está no projeto por acaso, significando que além do render mais rápido o objetivo do LuxVR é oferecer a possibilidade de trabalhar com ambientes de realidade virtual no Blender, alimentando a render engine do SmallLuxGPU.

Quer testar o LuxVR? É possível fazer o download de versões de teste do LuxRender com o recurso nesse endereço.

Lançado o Indigo Renderer 3.0 com suporte ao Blender 2.5

Um dos primeiros renderizadores que utilizei no Blender depois do antigo YafRay foi o Indigo, que tinha uma qualidade de renderização que deixava muita gente experiente impressionada, mesmo com os elevados tempos de render devido a sua natureza Unbiased. Esse tipo de renderizador é baseado em física real, e simula com muita competência o comportamento real da luz, gerando imagens extremamente realistas. Mas, por outro lado o seu método de render baseado em refinamento progressivo, faz com que a imagem apareça para o artista com muita granulação, e aos poucos vá refinando essa “sujeira” até o ponto em que temos um render limpo. O processo é o mesmo para outros renderizadores que utilizam técnicas semelhantes como o LuxRender, Maxwell Render e FryRender.

Já faz um bom tempo que o Indigo deixou de ser um freeware quando chegou na sua versão 2.0 e depois de uma longa espera, semana passada foi anunciado o Indigo Renderer 3.0 com novidades muito interessantes. O Blender foi citado no início do artigo por ser um software que funcionava muito bem com o Indigo, mas o renderizador tem suporte para outras ferramentas 3d como o SketchUp, 3ds Max e Cinema 4D.

O vídeo abaixo é uma amostra do que o Indigo pode fazer, e foi lançado poucas semanas atrás como uma pré-visualização do que veríamos no software.

Entre as novidades dessa versão 3.0 do Indigo está uma excelente notícia para os usuários do Blender 2.5, que é a existência de um Add-on que exporta projetos criados no Blender 2.5 para o Indigo! Desde que a versão 2.5 foi lançada, ainda não existia uma boa opção para usuários exportarem projetos do Blender para o Indigo, e agora essa possibilidade retornou!

Mas, e os recursos?

Fora a lista de melhorias que todo o renderizador apresenta como parte das suas novidades, que compõe mais velocidade e render com mais realismo em menos tempo, o Indigo adiciona opções interessantes e diferentes do que encontramos em outros softwares. A aceleração do render por GPU é um dos destaques, e promete acelerar o tempo de render em até três vezes. A tecnologia usada na aceleração pode ser tanto CUDA como OpenCL. Além da aceleração em si, existe outro software que é derivado do Indigo chamado de Indigo RT, e como o próprio nome mesmo denuncia, o software é uma versão de render em tempo real para o Indigo.

A lista completa com as novidades do Indigo 3.0 pode ser conferida nesse endereço.

Lançado o LuxRender 0.8 versão final

O LuxRender é uma das melhores opções para trabalhar com renderização avançada no Blender 2.5, pois o seu script já funciona sem grandes problemas no novo Blender e permite que trabalhemos com render usando métodos unbiased, para gerar imagens incrivelmente realistas. A versão 0.8 do LuxRender estava em desenvolvimento já faz um bom tempo e disponível para uso em versões Release Candidate. Bem, o software agora chegou na sua versão final e a lista total de novidades do LuxRender pode ser conferida nesse endereço, junto com os scripts para instalação do LuxBlend nas versões 2.4 e 2.5 do Blender.

Uma das coisas mais interessantes dessa nova versão, é que muitos usuários estão alegando que o tempo demandado para conseguir imagens sem granulação na versão final é significativamente menor do que nos Release Candidates. Portanto, se você ficou decepcionado com o tempo necessário para renderizar imagens sem granulação no LuxRender 0.8 RC, a nova versão pode trazer a agradável surpresa dos tempos de render mais curtos!

Fora o LuxRender em si, ainda podemos aproveitar o SmallLuxGPU como forma de gerar imagens com aceleração por GPU. O uso de GPU para acelerar o render é a tendência mais forte do momento em termos de desempenho para renderização, e quando ao uso desse tipo de recurso em softwares do tipo open source, o SmallLuxGPU é uma das melhores opções nesse sentido.

O material funciona mais como uma prova de conceito, mostrando o render por meio de GPU usando OpenCL, para a alegria dos usuários com placas da ATI. No vídeo é possível acompanhar o SmallLuxGPU sendo usado para posicionar elementos na 3D View e as atualizações, incluindo na lista de atualizações a troca de materiais e ajustes na iluminação do ambiente.

É interessante notar como em pouco tempo teremos duas opções robustas para render por GPU no Blender, sendo ambas totalmente gratuitas. A primeira é o próprio SmallLuxGPU que deve se tornar o LuxRays quando deixar de ser uma prova de conceito, e a outra é o próprio render interno do Blender com o codinome de Cycles. Os dois ainda estão em desenvolvimento, mas já estão deixando qualquer usuário do Blender animado com as possibilidades de renderizações realistas e extremamente rápidas!

LuxRays: Mais exemplos de render com GPU no LuxRender

As tecnologias baseadas em render por GPU estão dominando os projetos e trabalhos envolvendo visualização rápida, e não devem tardar a entrar de maneira pesada em animação para cinema e TV. Já existem diversas ferramentas e opções no mercado para as pessoas interessadas em investir nesse tipo de facilidade. Mas, infelizmente na área dos softwares livres as opções são poucas. Entre os projetos mais promissores esta o LuxRays, nome dado a variante do LuxRender que usa GPU como forma de aceleração do render. Essa versão especial do LuxRender ainda está em fase de testes e pode apresentar pequenos bugs no seu uso em trabalhos mais pesados, mas já é grande o número de exemplos e demos de usuários mostrando a sua velocidade.

Para quem já teve oportunidade de usar o LuxRender, ou qualquer render do tipo Unbiased, sabe que o seu ponto fraco é o tempo de render. Uma imagem complexa pode facilmente demorar algumas horas para ficar livre da granulação. Com a ajuda de uma GPU e em algumas situações mais de 100 núcleos dedicados a renderização, podemos reduzir esse tempo de maneira significativa.

O LuxRays ainda é um projeto em desenvolvimento, mas já podemos ter uma idéia de como ele deve funcionar usando o smallLuxGPU que é um experimento desenvolvido por David Bucciarelli com o SDK do OpenCL. Desde que falei sobre o SmallLuxGPU ele já avançou para a versão 1.5.

Os vídeos abaixo são demos de usuários que testaram e compilaram o SmallLuxGPU em cenas 3d completas e gravaram vídeos com suas experiências. O primeiro mostra diversas cenas e exemplos usados inclusive em demos de outros softwares como o iRay da mental images e o Arion da Random Control:

SmallLuxGPU v1.5 (OpenCL) from David Bucciarelli on Vimeo.

Os outros vídeos mostram exemplos diversos de renderização, inclusive com algumas opções de animação:

Como podemos claramente perceber pelos vídeos a velocidade com que as coisas acontecem é visivelmente superior ao render tradicional, baseado apenas em CPU que temos no LuxRender. Para as pessoas que quiserem mais informações sobre como funciona o SmallLuxGPU, visite o link indicado para conferir mais detalhes técnicos, e fazer o download do código fonte com binários para Mac OS X e Windows.