30 de out de 2018

O que é ray tracing, uma tecnologia que quer transformar as placas de vídeos

Leia mais

Foto por Still do game Battlefield V

Udacity Brasil

Foto por Still do game Battlefield V

Se você é fã de games, já deve saber que a Nvidia lançou recentemente a sua nova linha de placas de vídeo, a RTX. Composta por três GPUs (a RTX 2070, a RTX 2080 e a RTX 2080 Ti), ela promete revolucionar os gráficos de games por meio de ray tracing em tempo real. Mas o que isso significa?

De maneira geral, significa que a maneira como as placas de vídeo “desenham” o mundo que você vê nos jogos vai mudar – e para melhor. De acordo com a empresa, não só os jogos vão poder ser ainda mais belos e realistas do que já são como abrir novas frentes para desenvolvedores.

Leia também: Programação de games: a experiência de dois estúdios independentes

O que é ray tracing?

Ray tracing (em tradução literal, “traçamento de raios”) não é uma tecnologia nova. Pelo contrário: a primeira descrição de um algoritmo de ray tracing data de 1968, quando o pesquisador da IBM Arthur Appel publicou um artigo descrevendo a técnica.

Desde então, ela já foi bastante aperfeiçoada, mas a ideia geral permanece praticamente a mesma. De acordo com o gerente de marketing técnico da Nvidia, Alexandre Ziebert, o ray tracing “simula o comportamento da luz como acontece no mundo real”, efetivamente traçando os raios de luz.

ray-tracing-image-02

O processo básico de ray tracing | Imagem: Nvidia

Imagine que a câmera que está olhando para aquele mundo virtual está jogando um raio de luz em cada pixel daquele mundo. Quando um raio bate naquele pixel, ele se comporta de maneira próxima a como um raio de luz se comportaria no mundo real: pode refletir totalmente, parcialmente, refratar ou não refletir.

Se o raio reflete ou refrata, ele então vai em outra direção até colidir com outro objeto, e então interage novamente. Com base nas interações dos raios de luz com os objetos do mundo virtual, o computador responsável por mostrar aquele mundo na sua tela decide qual será a cor de cada um dos pixels da tela.

Esse método de criação de gráficos já é usado há bastante tempo em filmes, por exemplo. Para se ter uma ideia, na época em que a animação Carros foi lançada, a Pixar publicou um artigo descrevendo como havia usado o ray tracing para criar algumas cenas dos filmes. Por que, então, os jogos não usavam essa técnica?

ray-tracing-03

Como ray tracing foi utilizado em Carros? Observe os reflexos no close up.

Segundo Alexandre, a resposta tem a ver, basicamente, com tempo: “Nos filmes, o ray tracing é trivial porque os efeitos são pré-renderizados, então o que vemos é o efeito já inserido previamente e finalizado. Nos jogos, tudo isso deve ser feito em tempo real, no exato momento que o jogador está jogando”.

Ou seja: se você estiver num jogo de ação e ocorrer uma explosão, sua GPU vai precisar calcular na hora o caminho de raios de luz referentes a cada pixel da sua tela entre as chamas, a fumaça e os objetos reflexivos e refratários próximos para mostrar na sua tela. É fácil entender que se trata de um processo exigente, e por isso os jogos usavam outro método.

Ray tracing versus rasterização

O método tradicional se chama “rasterização”, e é basicamente uma versão muito simplificada de como a luz interage com o mundo virtual. Nela, a forma como cada um dos milhões de polígonos que compõem os mundos virtuais deve aparecer ao ser transformada em 2D e mostrada na sua tela é calculada individualmente.

Ou seja: com a rasterização, a luz que vem de uma fonte virtual só pode interagir com um objeto de cada vez. Por esse motivo, efeitos como reflexos, sombras e a distorção que a luz sofre ao passar por vidros, gases ou fluidos coloridos precisa ser simulada com alguns truques por parte dos desenvolvedores.

E de acordo com Alexandre, isso envolve bastante trabalho: “Para reflexos [de objetos] que não estão na tela, os desenvolvedores precisam usar alguns truques adicionais que demandam trabalho extra, como os chamados Cube Maps, que pré-renderizam as imagens que eles querem que apareçam em um reflexo”.

Ele oferece um exemplo para facilitar o entendimento: “na janela de um prédio, eles conseguem refletir outro prédio que está na frente dele através de uma imagem estática que é ‘colada’ no vidro para fingir que é um reflexo. Então você não verá outros personagens ou objetos móveis, mudanças climáticas ou de iluminação [no prédio refletido]”.

Vídeo do Engadget traça a história dos gráficos de games e mostra o ray tracing na prática

Embora fosse um processo trabalhoso, ele era necessário porque usar o ray tracing em tempo real não era uma opção — até agora. “Com ray tracing, o desenvolvedor pode mostrar o reflexo naturalmente como vemos em um espelho. Trata-se literalmente de uma imagem real do que acontece naquele cenário e do que está acontecendo naquele momento”, explica Alexandre.

Isso não apenas facilita o trabalho dos desenvolvedores como também abre novas possibilidades para os jogos. Segundo Alexandre “em um jogo de tiro, por exemplo, se um inimigo estiver escondido atrás de um tanque, será possível ver o seu reflexo sendo refletido na lataria de um carro ao lado, no vidro de uma janela próxima ou até em uma poça de água”.

Não é só isso. Alexandre cita também o jogo Atomic Heart, que está sendo produzido por um estúdio russo: “os desenvolvedores incluíram até espelhos curvos no cenário. Isso era impensável em games sem ray tracing”.

Isso é possível graças aos RT cores das novas placas. Esses componentes, que não estavam presentes nas gerações anteriores de GPUs da Nvidia, são núcleos de processamento dedicados à realização do ray tracing e ao cálculo de interações dos raios de luz no mundo virtual.

De acordo com Alexandre, o uso desses núcleos permite que essas placas tenham desempenho 10 vezes melhor que as da geração anterior nessa tarefa. “Por exemplo, a GeForce RTX 2080 Ti processa 10 Gigarays, ou seja, 10 bilhões de raios de luz que conseguimos traçar por segundo”.

Leia também: Realidade aumentada: como funciona e qual é seu potencial de mercado?

Por que atualizar?

Há, no entanto, um porém: não basta você adquirir uma placa de vídeo da linha RTX para poder rodar qualquer jogo com a tecnologia de ray tracing. É necessário que o jogo em si ofereça suporte para esse tipo de tecnologia. E no caso de games que já saíram há algum tempo, eles precisam ser atualizados para ter esse suporte.

Isso não quer dizer que a placa só funciona com jogos novos. Além dos RT cores que as placas da linha RTX têm, elas também têm os tradicionais núcleos CUDA que eram responsáveis pela renderização de imagens nas gerações anteriores. E mesmo nesse quesito as novas placas da empresa apresentam melhoria.

Quando a placa executa de fato o ray tracing, ela o faz em paralelo com a técnica de rasterização. Com isso, ela consegue oferecer uma imagem mais realística ao usuário sem que esse processamento se torne excessivamente pesado. E se o jogo só tem suporte à rasterização, então os núcleos CUDA dão conta disso também.

Outra novidade que a empresa anunciou para essa linha de placas é o DLSS, ou Deep Learning Super Sampling. Super Sampling se refere à técnica de renderizar imagens em uma resolução mais alta do que a da tela e, em seguida, reduzir a resolução para mostrá-la, a fim de mostrar uma imagem mais precisa.

E o DLSS usa deep learning para levar essa técnica a novos extremos, permitindo que a placa renderize em resoluções até 64 vezes maiores para depois reduzir.

Isso graças a conjuntos de dados de treinamento enviados via atualizações de drivers às placas, e aos Tensor Cores presentes nelas — núcleos de processamento dedicados a tarefas de machine learning. Mas assim como o ray tracing, o suporte a esse recurso precisa ser oferecido pelos desenvolvedores dos jogos e programas que pretendam usá-lo.

Leia também: Conheça a bilionária cena de investimentos em startups no Brasil

Nova arquitetura e efeitos para a inteligência artificial

A linha RTX inaugura também uma nova arquitetura para as placas da Nvidia, que são acompanhadas de perto pelo mercado e dominam o setor de inteligência artificial. Trata-se da arquitetura Turing, que vem para substituir a Volta e traz melhorias de performance e eficiência energética à placa.

De acordo com a Nvidia, a nova arquitetura também acelera "diversos sistemas e aplicações de inteligência artificial”. Trata-se de uma declaração um pouco vaga, é verdade – e mesmo a própria Nvidia não conseguiu enviar, a tempo, mais detalhes sobre as vantagens que as novos placas trazem para pesquisadores ou empresas que usam suas placas para tarefas de inteligência artificial ou machine learning.

De qualquer maneira, faz sentido imaginar que essas aplicações poderão se beneficiar, pelo menos um pouco, da nova arquitetura. Graças ao boom da inteligência artificial, surgiu um mundo altamente competitivo quando o assunto é placa de vídeo – Google, IBM e Alibaba já estão desenvolvendo as suas – o que torna qualquer novidade digna de atenção.

O foco da linha RTX em gráficos e games parece sugerir que a Nvidia está voltando sua atenção ao seu público original, e que vinha sofrendo com a disputa no mercado: os gamers. Que outras lições podem surgir do ray tracing para o desenvolvimento da tecnologia em geral, só o tempo dirá.

Saiba mais sobre tecnologia:

Sobre o autor
Udacity Brasil

A Udacity, conhecida como a "Universidade do Vale do Silício", é uma plataforma online e global que conecta educação e mercado para ensinar as habilidades do futuro – de data science e marketing digital à inteligência artificial e desenvolvimento. Hoje, há mais de 7 mil alunos ativos no país e 50 mil pelo mundo.