Com o OpenGL e outros, eu posso render coisas incríveis em "tempo real" a 60 FPS. No entanto, se eu tentar fazer um vídeo dessa mesma cena, digamos, Maya ou 3ds Max, demorará MUITO MUITO mais tempo para renderizar, mesmo com a mesma resolução e FPS.
Por que esses dois tipos de renderização levam períodos diferentes para o mesmo resultado?
Nota: Sim, percebo que o software de animação 3D pode produzir imagens altamente superiores ao que poderia ser feito em tempo real. Mas, para esta questão, estou me referindo a uma cena de igual complexidade.
rendering
performance
J.Doe
fonte
fonte
Respostas:
A principal diferença seria que, com o OpenGL em, digamos, um videogame, você terá um processo chamado rasterização, que basicamente se encarrega de determinar qual parte da cena você vê.
Ele precisa ser rápido para que possamos experimentá-lo em tempo real.
Portanto, o algoritmo executa algumas etapas simples.
verificar se uma certa parte da cena está na minha opinião frustum
verifique se há algo à sua frente que talvez precise ser renderizado posteriormente usando um buffer de profundidade
ordenar os objetos que encontramos para desenhar
Por outro lado, um software de renderização (Blender / Max / Maya / ...) provavelmente usa algum tipo de raytracing
Isso envolve muito mais matemática para alcançar um maior grau de realismo. Basicamente, funciona da mesma maneira:
....
Parei de listar aqui, já que este é o ponto em que o raytracing decola.
Em vez de apenas verificar se um ponto é atingido, a maioria dos raytracer agora começa a calcular:
Existem inúmeras técnicas com diferentes graus de realismo que podem ser usadas para calcular a luz de um determinado ponto da cena.
TL; DR A idéia principal é que um rastreador de raios tenta ser fisicamente preciso quando se trata de iluminação e, portanto, tem muito mais cálculos a fazer por pixel (às vezes dispara milhares de raios) e, por outro lado, os jogos obtêm sua velocidade desenhando pedaços maiores da tela com cálculos de luz mais simples e muitos truques de sombreamento que deixam a aparência realista.
fonte
Você está comparando maçãs com laranjas
O jogo é como a porta de visualização no seu aplicativo de modelagem. Você pode usar a viewport para renderização e obterá as mesmas velocidades de 60fps.
Não há razão para que você não possa obter gráficos em tempo real muito bons com o software de modelagem como Maya ou 3DS Max. Resultados comparáveis a muitos jogos. Eles têm shaders de viewport, assim como os jogos. Há também uma opção de renderização de janela de visualização que divide os quadros no disco o mais rápido possível (eu fiz renderizações em full HD a 30 fps do Maya). Tudo o que você precisa fazer é parar de usar os raytracers de software fornecidos.
Existem algumas diferenças, no entanto. A principal diferença é que você, como usuário, não otimiza tanto as coisas quanto os desenvolvedores de jogos (a otimização está usando todos os truques do livro). Segundo, suas primitivas de animação funcionam na CPU porque você precisa da flexibilidade. Nos jogos, pode-se dar ao luxo de fazer otimizações. Ao todo, você paga por não ter uma equipe de programação ao seu lado.
De fato, muitas coisas podem ter sido pré-computadas, por isso não são muito mais rápidas, apenas melhor organizadas. Assar sua iluminação indireta superará resultados não cozidos todos os dias.
Por que os raytracers são mais lentos?
Eles não são *, apenas tende a fazer mais trabalho em um traçador de raios, porque é fácil. Recurso por recurso, eles não são muito mais lentos nos ciclos de computação. Por exemplo, não há necessidade de um traçador de raios lançar raios secundários (reflexos da vida, nesse caso, o traçador de raios separará a geometria, ou nem a carregará, de fato, o raio mental faz exatamente isso). Geralmente é feito porque é trivial fazê-lo e essa é a clara vantagem dos traçadores de raios. Você pode configurá-los para rodar na CPU em alguns casos. Eles são otimizados apenas para coisas diferentes:
Emitindo dados para o disco, não apenas quadros, mas todos os dados. Algo que quebraria a velocidade da maioria dos jogos instantaneamente.
Trabalhando em hardware geral. A GPU é muito mais rápida para determinadas coisas quando você otimiza para a GPU. Mas ele não funciona para todas as cargas, na verdade, uma CPU Intel é mais rápida em computação do que a GPU. A GPU é massivamente paralela à da CPU. A arquitetura vence se você puder permanecer na GPU e minimizar a transferência e otimizar a arquitetura da GPU.
Então você paga pela flexibilidade e facilidade de uso. Mas sim, eu admito que Maya e Max sofrem de extrema idade avançada. Então eles poderiam ser mais rápidos.
TL; DR A diferença está principalmente na otimização (leia muitos truques) e nos recursos externos disponíveis.
PS: Existe um equívoco de que isso ocorre porque é mais fisicamente correto. Certamente pode ser, mas o traçador de raios não é inerentemente mais fisicamente correto que um jogo comum ou qualquer outro cálculo. De fato, muitos jogos usam modelos realmente bons, enquanto muitos modeladores não.
* Consulte http://www.graphics.cornell.edu/~bjw/mca.pdf
fonte
Visualização em tempo real
Trabalhando no lado VFX do setor, se você está falando sobre visualizações de viewport em tempo real e não renderização de produção, o Maya e o 3DS Max também usam o OpenGL (ou possivelmente o DirectX - praticamente o mesmo).
Uma das principais diferenças conceituais entre o software de animação VFX e os jogos é o nível de suposições que eles podem fazer. Por exemplo, no software VFX, não é incomum o artista carregar uma malha de caracteres única e contínua que abrange centenas de milhares a milhões de polígonos. Os jogos tendem a otimizar mais para uma cena grande que consiste em uma carga de malhas simples e otimizadas (milhares de triângulos cada).
Renderização de produção e rastreamento de caminho
O software VFX também enfatiza não a visualização em tempo real, mas a renderização da produção, na qual os raios de luz são realmente simulados um de cada vez. A pré-visualização em tempo real geralmente é apenas isso, uma "pré-visualização" do resultado da produção de maior qualidade.
Ultimamente, os jogos estão fazendo um belo trabalho ao aproximar muitos desses efeitos, como profundidade de campo em tempo real, sombras suaves, reflexos difusos etc., mas estão na categoria de aproximação para serviços pesados (por exemplo: mapas de cubos embaçados para reflexões em vez de simular raios de luz).
Conteúdo
Voltando a esse assunto, as suposições de conteúdo entre um software VFX e um jogo diferem bastante. O foco principal de um software VFX é permitir a criação de qualquer tipo possível de conteúdo (pelo menos esse é o ideal, embora na prática quase sempre não esteja próximo). Os jogos se concentram no conteúdo com suposições muito mais pesadas (todos os modelos devem ter milhares de triângulos, mapas normais devem ser aplicados a detalhes falsos, na verdade não devemos ter 13 bilhões de partículas, os personagens não são animados pelos músculos plataformas e mapas de tensão, etc).
Devido a essas suposições, os mecanismos de jogo geralmente podem aplicar técnicas de aceleração com mais facilidade, como a seleção de frustum, que lhes permite manter uma alta taxa de quadros interativa. Eles podem fazer suposições de que algum conteúdo será estático, detalhado antecipadamente. O software VFX não pode facilmente fazer esses tipos de suposições, dado o grau muito maior de flexibilidade na criação de conteúdo.
Games Do it Better
Essa pode ser uma visão controversa, mas a indústria de jogos é muito mais lucrativa que o software VFX. Seus orçamentos para um único jogo podem chegar a centenas de milhões de dólares, e eles podem se dar ao luxo de continuar lançando os motores da próxima geração a cada poucos anos. Seus esforços de pesquisa e desenvolvimento são incríveis, e há centenas e centenas de títulos de jogos sendo lançados o tempo todo.
Por outro lado, os softwares VFX e CAD não são tão lucrativos. A pesquisa e o desenvolvimento geralmente são terceirizados por pesquisadores que trabalham em ambientes acadêmicos, com muita indústria implementando técnicas publicadas muitos anos antes, como se fosse algo novo. Portanto, o software VFX, mesmo proveniente de empresas tão grandes quanto o AutoDesk, geralmente não é tão "avançado" quanto os mais recentes mecanismos de jogos AAA.
Eles também tendem a ter um legado muito mais longo. O Maya é um produto de 17 anos, por exemplo. Foi reformado muito, mas sua arquitetura principal ainda é a mesma. Isso pode ser análogo a tentar pegar o Quake 2 e continuar atualizando e atualizando até 2015. Os esforços podem ser excelentes, mas provavelmente não corresponderão ao Unreal Engine 4.
TL; DR
Enfim, essa é uma pequena opinião sobre esse lado do tópico. Eu não conseguia entender se você estava falando sobre visualizações em tempo real nas janelas de exibição ou na renderização da produção, então tentei cobrir um pouco de ambas.
fonte