RenderFormer: renderização neural baseada em malhas triangulares e iluminação global
(microsoft.github.io)- RenderFormer é um pipeline de renderização neural que gera imagens diretamente a partir de cenas com malhas triangulares, e seu ponto central é lidar até mesmo com iluminação global sem treinamento por cena
- Em vez de definir a renderização como um procedimento de simulação física, ela é formulada como uma transformação sequence-to-sequence que converte tokens de triângulos e propriedades de reflexão em pequenos tokens de blocos de pixels
- O pipeline é dividido em uma etapa independente da visão e uma etapa dependente da visão, e ambas são treinadas com o mínimo de restrições prévias usando uma arquitetura Transformer
- A etapa independente da visão modela a transferência de luz entre triângulos, e a etapa dependente da visão converte tokens de feixes de raios em valores de pixels
- Os exemplos públicos incluem iluminação, materiais, complexidade geométrica, animação e simulação física, com renderização sem rasterização nem ray tracing
Estrutura de renderização do RenderFormer
- RenderFormer é um pipeline de renderização neural que renderiza imagens diretamente a partir de representações de cena baseadas em triângulos
- Inclui efeitos completos de iluminação global sem exigir treinamento ou ajuste fino por cena
- O processo de renderização é composto como uma transformação sequence-to-sequence
- A entrada é uma sequência de tokens de triângulos que inclui propriedades de reflexão
- A saída é uma sequência de tokens que representa pequenos blocos de pixels
- O pipeline de 2 etapas separa o cálculo de transferência de luz independente da visão da geração real de pixels
- Etapa independente da visão: modela a transferência de luz entre triângulos
- Etapa dependente da visão: converte tokens de feixes de raios em valores de pixels, guiada pela sequência de triângulos da etapa independente da visão
- Ambas as etapas são baseadas em arquitetura Transformer e treinadas com o mínimo de restrições prévias
- O processo de renderização não usa rasterização nem ray tracing
Resultados públicos e materiais de referência
- A galeria de renderização mostra diversas condições de iluminação, materiais e complexidade geométrica sem treinamento ou ajuste fino por cena
- Cornell Box, Stanford Bunny in Cornell Box, Lucy Statue, Utah Teapot
- Composed Scene, Constant Width Bodies, Crystals, Fox in the Wild
- Horse and Heart, RenderFormer Logo, Interior Room, Shader Ball, Tree, Veach MIS
- São fornecidas reference images para comparação detalhada
- Como materiais adicionais em vídeo, são oferecidos uncompressed videos e reference videos
-
Cenas de teaser
- É possível conferir rotação de objetos, mudanças de iluminação e ajustes de material
- Cornell Box Roughness Adjustment
- Bunny Roughness Adjustment
- Tree Light Change
- Tree Object Rotation
- Fancy Scene Rotation
- Composed Scene View Change
-
Animação e simulação
- Os exemplos de renderização animada incluem Cascade Cube Animation, Animated Crab, Gyroscope Motion, Animated Character, Marching Cubes Animation e Robot Animation
- Os exemplos de simulação baseada em física incluem Bowling Ball Physics Simulation, Rotating Box Dynamics e Constant Width Body Simulation
- O artigo será publicado nos ACM SIGGRAPH 2025 Conference Papers, e o título da entrada BibTeX é “RenderFormer: Transformer-based Neural Rendering of Triangle Meshes with Global Illumination”
1 comentários
Opiniões no Hacker News
O ponto mais impressionante aqui pode ser a velocidade: na mesma cena, o RenderFormer leva 0,0760 s, enquanto o Blender Cycles leva 3,97 s (12,05 s em configurações mais altas), mantendo um índice de similaridade estrutural de 0,9526 (0 a 1, em que 1 é uma imagem idêntica). Veja as tabelas 2 e 1 do artigo.
Isso poderia oferecer a designers 3D, na Web ou em apps nativos, pré-visualizações instantâneas de renderização com qualidade melhor usando um modelo Transformer no próprio dispositivo.
A medição acima foi feita em uma A100 com uma versão do modelo em PyTorch não otimizada. A GPU de um usuário comum é muito mais fraca, mas uma GPU voltada a designers 3D talvez ainda seja suficiente para obter um ganho de velocidade bem grande em relação à renderização tradicional. Em um sistema baseado na Web, também seria possível conectar a um A100 no backend e transmitir as imagens para o navegador.
A limitação é que, conforme a complexidade da cena aumenta, por exemplo em sombras de formas complexas (imagino que partículas ou cabelo também entrem nisso), ele não é totalmente preciso. Por isso, o render final provavelmente ainda seria feito do modo tradicional, para evitar os artefatos visuais desagradáveis vistos hoje em muitas imagens/vídeos gerados por IA. Ainda assim, se for “bom o suficiente” e o ganho de velocidade for grande, grandes estúdios de animação que precisam renderizar prévias com duração de longa-metragem para revisar música, história etc. poderiam ter motivo para adotá-lo.
As cenas são demonstrações técnicas bem simples, de baixa complexidade, e parece que configuraram o Blender para 4 mil iterações por pixel, o que não faz muito sentido. O Blender já fica bem próximo do resultado final depois de algumas centenas de ciclos; nos 3.800 ciclos seguintes, é provável que só queime ciclos de GPU sem melhora.
Parece que incluíram por engano a etapa de inicialização do Blender no tempo total de renderização, enquanto não incluíram a inicialização do Transformer. Eu gostaria de ver o tempo para renderizar o segundo frame em cada sistema e, pelo meu palpite, o Blender teria desempenho bem melhor. Os resultados do artigo em si são interessantes, mas há nuances nas configurações do Blender e na metodologia de medição.
Em ray tracing, o erro diminui proporcionalmente à raiz quadrada do número de amostras. É comum usar um número muito alto de amostras para imagens de referência em comparações de qualidade, mas o número de amostras de renderizadores offline reais é 1 a 2 ordens de grandeza menor do que o usado neste artigo.
Em artigos de computação gráfica, é comum incluir imagens de referência com contagem de amostras muito alta para comparação de qualidade, mas não se costuma comparar tempo com essas imagens de referência. Se o resultado é uma aproximação, o justo seria comparar com outros algoritmos de renderização aproximada. Path tracers em tempo real e denoisers modernos conseguem renderizar cenas muito mais complexas em menos de 16 ms até em GPUs de consumidor.
O ponto principal é “cenas muito mais complexas”. Usar Transformers escala de forma quadrática tanto com o número de triângulos quanto com o número de pixels de saída. Não acompanhei as pesquisas mais recentes de machine learning, então talvez isso já tenha melhorado, mas não parece que vá superar o escalonamento teórico de um path tracer típico, O(log n_triangles) e O(n_pixels). Na prática, o escalonamento com o número de pixels fica perto de sublinear por causa da alta coerência entre pixels adjacentes.
Dei uma olhada rápida, mas não encontrei detalhes de como foi configurado. Fico curioso se o Cycles na A100 usou CPU ou kernels CUDA. Além disso, se foi renderização de um único frame, uma parte não desprezível desses 3,97 s pode ter sido gasta na inicialização do renderizador. Ao renderizar uma sequência, o tempo por frame deve cair.
O escalonamento da complexidade por triângulo mencionado no comentário irmão também dói.
Deep learning também vem sendo usado com muito sucesso para remoção de ruído em imagens renderizadas com iluminação global [1].
Nessa abordagem, um algoritmo tradicional de ray tracing calcula rapidamente uma iluminação global grosseira da cena, e uma rede neural remove o ruído da saída.
[1] https://www.openimagedenoise.org
Edit: a remoção de ruído parece melhor em 100% de zoom do que em ampliação com 125% de DPI, e fica mais fácil reconhecer as samambaias na parte inferior.
Em artigos de computação gráfica, é preciso sempre pensar no que não está sendo mostrado.
Aqui quase não há polígonos, a resolução é baixa, não há texturas, não há motion blur, não há profundidade de campo, e a animação tem alguns artefatos.
É uma pesquisa interessante, mas, colocando em perspectiva, eles estão usando uma GPU moderna para produzir imagens que parecem algo feito 30 anos atrás com 1/1.000.000 da carga computacional.
Achei estranho que nenhum dos exemplos mostre o que há atrás da câmera.
Não sei se é uma limitação da abordagem ou uma omissão na criação dos exemplos, mas, quando se fala de reflexos e iluminação, a parte atrás da câmera é bem importante.
Pergunta de quem não entende muito: essas cenas são renderizadas com base na forma como se espera que a cena seja renderizada? Se for isso, não vejo por que usar isso em vez de um método mais direto. Não parece que seria mais rápido do que o método direto.
Por exemplo, se a cena é um bloco de pesos de entrada, que aparência ela teria ao adicionar ruído a isso? Seria possível obter uma saída interessante que não dá para conseguir pelos métodos comuns?
Seria interessante interpolar entre duas representações de cena diferentes? Perguntas desse tipo ficam possíveis.
Uau, então o ciclo da GPU se fechou. Da renderização para a computação, e de volta para a renderização.
Parece bom, mas borrado. Eu gostaria de ver uma comparação dos tempos de renderização entre o renderizador neural e o renderizador clássico.
Em animações, especialmente Animated Crab e Robot Animation, os artefatos de arte de IA que giram de forma bastante artificial ao redor do modelo quando o objeto e a câmera se movem são bem perceptíveis
https://renderformer.github.io/pdfs/renderformer-paper.pdf
Fico curioso se seria prático usar a abordagem de rede neural apenas para iluminação indireta, com geometria simplificada. Algo como usar um rasterizador comum e adicionar iluminação global por cima
Tenho um amigo que trabalhou com renderizadores baseados em física na indústria cinematográfica e também fez pesquisa relacionada. Sempre gosto de ouvir histórias e explicações sobre como as coisas são feitas nesse setor
Fico me perguntando que empresas estão contratando esse tipo de talento hoje em dia. Será que empresas de IA também estão contratando engenheiros de renderização para criar ambientes de treinamento?
Se houver alguém querendo contratar um engenheiro de renderização experiente, com experiência em pesquisa e indústria, posso fazer a ponte. Meu amigo não usa redes sociais, mas está avaliando oportunidades
É uma pesquisa muito legal. Gosto muito desses casos de aplicação de Transformer a áreas que não são texto
Parece que funciona bem em domínios nos quais a entrada é sequencial e os tokens dessa entrada se relacionam entre si. Estou ansioso por mais pesquisas nessa área
Entre os domínios que não são texto, quais seriam áreas interessantes em que Transformer se encaixaria especialmente bem?
A ideia de treinar um Transformer para transformar um conjunto de triângulos, que descreve uma cena, em uma matriz de pixels 2D, fazendo com que o resultado pareça os pixels gerados por um renderizador com iluminação global para a mesma cena, é excelente e interessante
Considerando as pesquisas dos últimos 5 anos, o fato de isso funcionar por si só não chega a ser chocante, mas ainda assim parece um resultado bastante profundo. A arquitetura Transformer é realmente versátil
De qualquer forma, é extremamente rápido, fica próximo da saída de renderização do Blender e parece ser, grosso modo, um modelo de 1 bilhão de parâmetros. Não sei se é fp16 ou fp32, mas, com um arquivo de 2 GB, não há muito do que reclamar. Também gostaria de ver demos de cenas mais “realistas”, mas, se quiser, dá para baixar e rodar diretamente no Mac