O que é Path Tracing?

por Brian Caulfield

Ligue sua TV. Abra seu serviço de streaming favorito. Pegue uma bebida. Uma demonstração da tecnologia visual mais importante do nosso tempo está tão próxima quanto o sofá da sua sala.

Impulsionado por uma explosão de potência computacional na última década e meia, o path tracing invadiu as mídias visuais.

Ele traz grandes efeitos para os filmes de sucesso, lança luz e sombra sutis sobre os melodramas mais imersivos e impulsiona a arte da animação a novos níveis.

E vem mais por aí.

O path tracing já está em tempo real, desencadeando ambientes 3D interativos e fotorrealistas cheios de luz e sombras dinâmicas, reflexos e refrações.

Então, o que é Path Tracing? A grande ideia por trás dele é incrivelmente simples, conectando inovadores nas artes e ciências ao longo de meio milênio.

Qual é a Diferença entre Rasterização e Ray Tracing?

Primeiro, vamos definir alguns termos e como eles são usados hoje para criar efeitos gráficos interativos, efeitos gráficos que podem reagir em tempo real à entrada de um usuário, como nos videogames.

A primeira, a rasterização, é uma técnica que produz uma imagem sob um único ponto de vista. Ela está no centro das GPUs desde o início. As GPUs NVIDIA modernas podem gerar mais de 100 bilhões de pixels rasterizados por segundo. Isso tornou a rasterização ideal para efeitos gráficos em tempo real, como os games.

O ray tracing é uma técnica mais poderosa do que a rasterização. Em vez de ser limitado a descobrir o que é visível de um único ponto, ele pode determinar o que é visível de muitos pontos diferentes, em muitas direções diferentes. Começando com a arquitetura NVIDIA Turing, as GPUs NVIDIA oferecem hardware RTX especializado para acelerar essa computação difícil. Hoje, uma única GPU pode rastrear bilhões de raios por segundo.

Ser capaz de rastrear todos esses raios torna possível simular como a luz se espalha no mundo real com muito mais precisão do que com a rasterização. No entanto, ainda devemos responder às perguntas: como simularemos a luz e como levaremos essa simulação para a GPU?

O que é Ray Tracing? Siga o Fio

Para responder melhor a essa pergunta, é importante entender como chegamos aqui.

David Luebke, Vice-Presidente de Pesquisa Gráfica da NVIDIA, gosta de começar a história no século XVI com Albrecht Dürer, uma das figuras mais importantes do renascimento do norte da Europa, que usou cordas e pesos para replicar uma imagem 3D em uma superfície 2D.

Dürer fez da união da matemática clássica e contemporânea às artes o trabalho da sua vida, alcançando avanços na expressividade e no realismo.

Albrecht Dürer foi o primeiro a descrever o que agora é conhecido como “ray tracing”, uma técnica para criar representações precisas de objetos 3D em superfícies 2D em Underweysung der Messung (Nuremberg, 1525).

Em 1525, com o Treatise on Measurement, Dürer foi o primeiro a descrever a ideia do ray tracing. Ver como Dürer descreveu a ideia é a maneira mais fácil de pensar melhor sobre o conceito.

Pense em como a luz ilumina o mundo que vemos ao nosso redor.

Agora, imagine traçar esses raios de luz por trás do olho com um pedaço de fio como o que Dürer usava, até os objetos com os quais a luz interage. Isso é ray tracing.

Ray Tracing para Computação Gráfica

O artigo de 1979 de Turner Whitted, “An improved illumination model for shaded display”, deu início a um renascimento do ray tracing.

Em 1969, mais de 400 anos após a morte de Dürer, Arthur Appel, da IBM, mostrou como a ideia do ray tracing poderia ser levada à computação gráfica, aplicando-a à visibilidade e às sombras computacionais.

Uma década depois, Turner Whitted foi o primeiro a mostrar como essa ideia poderia capturar reflexos, sombras e refração, explicando como esse conceito aparentemente simples poderia tornar possível uma computação gráfica muito mais sofisticada. O progresso foi rápido nos anos seguintes.

Em 1984, Robert Cook, Thomas Porter e Loren Carpenter da Lucasfilm detalharam como o ray tracing poderia incorporar diversas técnicas comuns de cinema, incluindo motion blur, profundidade do campo, penumbras, translucidez e reflexões desfocadas, técnicas essas que, até então, eram impossíveis na computação gráfica.

O artigo de Jim Kajiya de 1986, “The Rendering Equation”, não apenas esboçou uma equação elegante baseada na física para descrever como a luz se move em uma cena, como delineou uma maneira eficiente de colocá-la em funcionamento.

Dois anos depois, o artigo de sete páginas do professor da CalTech Jim Kajiya, “The Rendering Equation”, conectou a computação gráfica à física por meio do ray tracing e introduziu o algoritmo de path tracing, que possibilita representar com precisão a forma como a luz se espalha por uma cena.

O que é Path Tracing?

Ao desenvolver o path tracing, Kajiya recorreu a uma inspiração improvável: o estudo da transferência de calor radiativo ou como o calor se espalha por um ambiente. As ideias desse campo o levaram a introduzir a equação de renderização, que descreve como a luz passa pelo ar e se espalha nas superfícies.

A equação de renderização é concisa, mas não é fácil de resolver. As cenas de computação gráfica são complexas, e bilhões de triângulos não são incomuns hoje. Não há como resolver diretamente a equação de renderização, o que levou à segunda inovação crucial de Kajiya.

Kajiya mostrou que técnicas estatísticas poderiam ser usadas para resolver a equação de renderização: mesmo que não seja resolvida diretamente, é possível resolvê-la ao longo dos caminhos dos raios individuais. Se ela for resolvida ao longo do caminho de raios suficientes para aproximar a iluminação na cena com precisão, imagens fotorrealistas são possíveis.

E como a equação de renderização é resolvida ao longo do caminho de um raio? Ray tracing.

As técnicas estatísticas aplicadas por Kajiya são conhecidas como integração Monte Carlo e datam dos primeiros dias dos computadores nos anos 1940. O desenvolvimento de algoritmos Monte Carlo aprimorados para path tracing continua sendo um problema de pesquisa em aberto até hoje. Os pesquisadores da NVIDIA estão na vanguarda dessa área, publicando regularmente novas técnicas que melhoram a eficiência do path tracing.

Ao reunir essas duas ideias, uma equação baseada em física para descrever a maneira como a luz se move ao redor de uma cena e o uso da simulação Monte Carlo para ajudar a escolher um número gerenciável de caminhos de volta para uma fonte de luz, Kajiya delineou as técnicas fundamentais que se tornariam o padrão para gerar imagens fotorrealistas geradas por computador.

Sua abordagem transformou um campo dominado por uma variedade de técnicas diferentes de renderização em uma que, como espelhava a física da maneira como a luz se move pelo mundo real, poderia colocar algoritmos simples e poderosos para trabalhar que poderiam ser aplicados para reproduzir um grande número de efeitos visuais com níveis impressionantes de realismo.

Path Tracing Chega ao Cinema

Nos anos após sua introdução em 1987, o path tracing era visto como uma técnica elegante, a abordagem mais precisa conhecida, mas era completamente impraticável. As imagens do artigo original de Kajiya tinham apenas 256 por 256 pixels, mas levaram mais de 7 horas para renderizar em um minicomputador caro que era muito mais poderoso do que os computadores disponíveis para a maioria das outras pessoas.

Mas com o aumento da potência computacional impulsionado pela lei de Moore, que descreveu o aumento exponencial da potência computacional impulsionado pelos avanços que permitiram aos fabricantes de chips dobrar o número de transistores em microprocessadores a cada 18 meses, a técnica tornou-se cada vez mais prática.

Começando com filmes como Vida de Inseto de 1998, o ray tracing foi usado para aprimorar as imagens geradas por computador em cada vez mais filmes. Em 2006, o primeiro filme feito totalmente com path tracing, A Casa Monstro, surpreendeu o público. Ele foi renderizado usando o software Arnold que foi codesenvolvido na Solid Angle SL (depois adquirida pela Autodesk) e pela Sony Pictures Imageworks.

O filme foi um sucesso, arrecadando mais de US$140 milhões em todo o mundo. Além de mostrar o que uma nova geração de animação computacional poderia fazer. À medida que mais poder computacional se tornava disponível, mais filmes passaram a confiar na técnica, produzindo imagens que muitas vezes são indistinguíveis das capturadas por uma câmera.

O problema: ainda leva horas para renderizar uma única imagem e grandes coleções de servidores, conhecidas como “render farms”, estão sendo executadas continuamente para renderizar imagens por meses para fazer um filme completo. Levar isso para os efeitos gráficos em tempo real seria um salto extraordinário.

Como Isso Funciona nos Games?

Por muitos anos, o path tracing nos games era impossível de se imaginar. Embora muitos desenvolvedores de games quisessem usar o path tracing se ele tivesse o desempenho necessário para gráficos em tempo real, o desempenho estava tão longe do tempo real que o path tracing parecia inatingível.

No entanto, como as GPUs continuaram a se tornar cada vez mais rápidas, e com a disponibilidade generalizada do hardware RTX, o path tracing em tempo real está no horizonte. Assim como os filmes começaram a incorporar algumas técnicas de ray tracing antes de mudar para o path tracing, os games começaram colocando o ray tracing para funcionar de forma limitada.

No momento, um número crescente de games tem ray tracing parcial. Eles combinam técnicas tradicionais de renderização baseadas em rasterização com alguns efeitos de ray tracing.

Então, o que significa path tracing nesse contexto? Pode significar uma combinação de técnicas. Os desenvolvedores de games podem rasterizar o raio primário e, em seguida, fazer path tracing da luz para a cena.

A rasterização é equivalente a lançar de um conjunto de raios a partir de um único ponto que param na primeira coisa que atingem. O ray tracing leva isso adiante, lançando raios de muitos pontos em qualquer direção. O path tracing simula a verdadeira física da luz, que usa o ray tracing como um componente de um sistema de simulação de luz maior.

Isso significaria que todas as luzes em uma cena são amostradas estocasticamente, usando Monte Carlo ou outras técnicas, tanto para iluminação direta, para iluminar objetos ou personagens, quanto para iluminação global, para salas de luz ou ambientes com iluminação indireta.

Para fazer isso, em vez de traçar um raio de volta a partir de um reflexo, os raios seriam rastreados sobre vários reflexos, presumivelmente de volta à sua fonte de luz, assim como Kajiya delineou.

Alguns games já estão fazendo isso, e os resultados são impressionantes.

A Microsoft lançou um plug-in que coloca o path tracing para funcionar em Minecraft.

Quake II, o shooter clássico, geralmente um sandbox para técnicas gráficas avançadas, também pode ser usar o path tracing inteiramente, graças a um novo plug-in.

Claramente, há mais a ser feito. Além disso, os desenvolvedores de games precisarão saber que os clientes têm a potência computacional de que precisam para jogarem games com path tracing.

Os games são o projeto de computação visual mais desafiador de todos: exigem alta qualidade visual e velocidade para interagir com gamers rápidos.

Essas técnicas pioneiras impactarão todos os aspectos de nossas vidas digitais.

E agora?

Conforme as GPUs continuam a se tornar mais avançadas, disponibilizar o path tracing para cada vez mais pessoas é o próximo passo lógico.

Por exemplo, com ferramentas como o Arnold da Autodesk, o V-Ray do Chaos Group ou o Renderman da Pixar, e GPUs potentes, designers e arquitetos de produtos usam o ray tracing para gerar maquetes fotorrealistas de seus produtos em segundos, permitindo que eles colaborem melhor e pulem prototipagem cara.

Conforme as GPUs oferecem ainda mais potência computacional, os videogames são a próxima fronteira para o ray tracing e o path tracing.

Em 2018, a NVIDIA anunciou a NVIDIA RTX, uma tecnologia de ray tracing que leva renderização com qualidade cinematográfica em tempo real a desenvolvedores de games.

A NVIDIA RTX, que inclui um engine de ray tracing executado em GPUs da arquitetura NVIDIA Ampere e Turing, oferece suporte para ray tracing em uma variedade de interfaces.

A NVIDIA fez uma parceria com a Microsoft para permitir o suporte total à RTX por meio da nova API DirectX Raytracing (DXR) da Microsoft.

Desde então, a NVIDIA continua a desenvolver a tecnologia NVIDIA RTX, à medida que mais e mais desenvolvedores criam games compatíveis com ray tracing em tempo real.

Minecraft inclui até mesmo suporte para path tracing em tempo real, transformando o imersivo mundo de blocos em paisagens imersivas com luz e sombra.

Graças a um hardware cada vez mais poderoso e ao aumento das ferramentas de software e das tecnologias relacionadas, mais está por vir.

Como resultado, as experiências digitais, games, mundos virtuais e até mesmo ferramentas de colaboração on-line , assumirão as qualidades cinematográficas de um sucesso de Hollywood.

Então não fique muito confortável. O que você está vendo do sofá da sala é apenas uma demonstração do que virá no mundo ao nosso redor.