Rasterização vs. Ray Tracing: Trade-offs e Hardware de Tempo Real
Objetivos de Aprendizagem
- Enunciar, precisamente e lado a lado, para o que a rasterização e o ray tracing cada um otimiza, e o que cada um honestamente custa.
- Explicar por que a rasterização mapeia naturalmente sobre hardware SIMT enquanto o ray tracing recursivo ingênuo tradicionalmente não.
- Explicar o que os RT Cores da geração Turing da NVIDIA de fato aceleram, e por que essa adição de hardware específica é o que tornou o ray tracing de tempo real uma realidade enviável.
- Enunciar honestamente que este é um trade-off entre duas técnicas ainda coexistentes, não uma história de uma obsoletando a outra.
Contexto e Motivação
Os últimos vários conceitos construíram duas formas estruturalmente diferentes de responder a mesma pergunta, que cor este pixel deveria ser: a rasterização empurra triângulos por um pipeline fixo e em estágios (the-graphics-pipeline-from-vertices-to-pixels até shading-interpolation-flat-gouraud-and-phong-shading), enquanto o ray tracing trabalha de trás para frente a partir de cada pixel, seguindo recursivamente raios pela cena (ray-casting-generating-and-intersecting-rays até recursive-ray-tracing-reflection-refraction-and-shadows). Este conceito enuncia, honesta e diretamente, o que cada abordagem de fato custa e ganha, e encerra com o desenvolvimento de hardware real e recente, silício de aceleração de ray tracing dedicado, que mudou o que era prático em tempo real.
Teoria Central
Para o que a rasterização otimiza, e o seu limite honesto
Os estágios do pipeline fixo da rasterização, transformar, rasterizar, sombrear, são cada um independentemente e embaraçosamente paralelos: todo vértice transforma independentemente de todo outro vértice, o teste de função de aresta de todo pixel (triangle-rasterization-edge-functions-and-barycentric-coordinates) depende só das próprias coordenadas daquele pixel, e o sombreamento de todo fragmento (local-illumination-lambertian-diffuse-reflection, specular-reflection-the-phong-and-blinn-phong-models) depende só dos próprios atributos interpolados daquele fragmento. Este é exatamente o formato de trabalho para o qual o modelo SIMT de gpu-architecture-and-the-simt-execution-model foi construído: milhares de lanes rodando a sequência de instruções idêntica sobre dados diferentes, sem nenhuma dependência de dados entre lanes e com ramificação mínima. O limite honesto, tornado explícito em the-rendering-equation-and-the-limits-of-real-time-shading, é que este pipeline só avalia luz direta de uma pequena lista fixa de fontes nomeadas; efeitos que inerentemente exigem seguir um caminho de luz recursivamente pela cena, reflexões nítidas de geometria arbitrária, refração, sombras suaves fisicamente precisas de luzes de área, não decorrem deste pipeline naturalmente e tradicionalmente precisaram de técnicas de aproximação separadas e específicas de cena aparafusadas.
Para o que o ray tracing otimiza, e o seu limite honesto
A estrutura recursiva do ray tracing (recursive-ray-tracing-reflection-refraction-and-shadows) faz reflexões, refrações e sombras decorrerem do mesmo algoritmo único em vez de precisar de técnicas separadas, e é mais fisicamente preciso no sentido específico de que ele aproxima mais diretamente a equação de renderização recursiva que the-rendering-equation-and-the-limits-of-real-time-shading enunciou. O limite honesto é que esta recursão é dependente de dados de uma forma que o pipeline fixo da rasterização não é: quais nós de BVH um raio visita (bounding-volume-hierarchies-and-ray-tracing-acceleration) depende da própria direção daquele raio específico, e quantos ricochetes recursivos um dado pixel precisa depende de quantas superfícies reflexivas ou refrativas o caminho do raio daquele pixel por acaso cruza, então pixels diferentes, e até raios diferentes dentro do mesmo pixel, genuinamente fazem quantidades diferentes de trabalho. Este padrão de ramificação irregular e dependente de dados não mapeia de forma limpa sobre um pipeline fixo de estilo SIMT construído para trabalho uniforme por lane, que é precisamente por que o ray tracing foi, por décadas, primariamente uma técnica offline (não de tempo real), rodada em software em hardware de propósito geral, levando de segundos a horas por quadro para resultados de qualidade de produção.
Hardware de ray tracing de tempo real, um desenvolvimento recente e honesto
A arquitetura Turing da NVIDIA (2018) introduziu RT Cores dedicados, unidades de hardware construídas especificamente para acelerar exatamente as duas operações que bounding-volume-hierarchies-and-ray-tracing-acceleration e ray-casting-generating-and-intersecting-rays derivaram à mão: travessia de BVH e interseção raio-triângulo. Rodar estas duas operações específicas, antes computadas em propósito geral, em silício dedicado, em paralelo com, e independentemente de, os CUDA cores comuns da GPU tratando o trabalho de sombreamento, é a mudança de hardware concreta que tornou o ray tracing de tempo real (dezenas de milissegundos por quadro, não segundos) uma realidade enviável em vez de uma técnica puramente offline. Este é um desenvolvimento honesto, real e recente (2018 em diante), não uma alegação de que a rasterização se tornou obsoleta: renderizadores de tempo real modernos comumente usam ambos juntos, rasterizando a maior parte de uma cena por velocidade e lançando raios seletivamente (para reflexões, sombras ou oclusão de ambiente especificamente) onde as vantagens estruturais do ray tracing importam mais.
Exemplos Resolvidos
Exemplo 1: formato de custo ilustrativo, rasterização
Uma cena com 1 milhão de triângulos renderizada em 1920x1080 (cerca de 2,07 milhões de pixels). O formato de custo da rasterização é aproximadamente proporcional a (contagem de triângulos, para o estágio de transformação) mais (contagem de pixels cobertos, para os estágios de rasterizar-e-sombrear), cada estágio rodando a sua própria carga de trabalho fixa e paralela uma vez; este é raciocínio ilustrativo sobre o formato do custo, não um benchmark medido específico de qualquer renderizador ou cena em particular.
Exemplo 2: formato de custo ilustrativo, ray tracing
A mesma cena, traçada por raios em vez disso: aproximadamente 2,07 milhões de raios primários (um por pixel), cada um precisando de uma travessia de BVH (bounding-volume-hierarchies-and-ray-tracing-acceleration estabeleceu isto como aproximadamente logarítmico na contagem de objetos por raio, então da ordem de log2(1.000.000) =~ 20 testes de caixa por raio primário neste cenário ilustrativo), mais, para qualquer pixel cuja superfície é reflexiva, refrativa ou em sombra, um ou mais raios secundários adicionais (sombra, reflexão, refração), cada um precisando da sua própria travessia de BVH. Uma cena com muitas superfícies reflexivas e várias luzes pode facilmente multiplicar a contagem efetiva de raios várias vezes sobre a contagem de raios primários sozinha; de novo, raciocínio ilustrativo sobre o formato da diferença de custo entre as duas técnicas, não um número de benchmark preciso e universal.
Exemplo 3: o que os RT Cores especificamente removem desse custo
Sem hardware dedicado, cada um dos testes de caixa de BVH e interseções raio-triângulo do Exemplo 2 acima roda como código de shader comum e de propósito geral nos CUDA cores da GPU, competindo pelos mesmos recursos de computação de que o estágio de sombreamento também precisa. Os RT Cores rodam exatamente essas duas operações, travessia de BVH e interseção raio-triângulo, em hardware separado e dedicado, autonomamente, permitindo que os CUDA cores continuem sombreando outro trabalho concorrentemente em vez de esperar por ou compartilhar tempo com a matemática de interseção de raio; este é o mecanismo concreto e nomeado (não uma alegação geral de "as GPUs ficaram mais rápidas") por trás de por que o hardware da geração Turing tornou o ray tracing de tempo real viável especificamente, em vez de o ray tracing simplesmente ter ficado rápido devido às melhorias gerais de desempenho ano a ano das GPUs.
Equívocos Comuns e Armadilhas
- "O hardware de ray tracing torna a rasterização obsoleta." Renderizadores de tempo real modernos, mesmo os que usam RT Cores, ainda rasterizam a maior parte da visibilidade primária de uma cena (a forma mais rápida de responder "qual triângulo é o mais próximo neste pixel" para geometria opaca sem reflexões ou refrações envolvidas) e lançam raios seletivamente, para efeitos que o pipeline fixo da rasterização genuinamente não consegue produzir naturalmente; as duas técnicas são combinadas na prática, não uma substituindo a outra.
- "O ray tracing era impossível em tempo real antes de 2018, e ficou fácil depois." O ray tracing rodava em tempo real em cenas e hardware restritos antes do Turing, e permanece genuinamente caro, exigindo orçamentação cuidadosa e específica de cena de contagens de raios e profundidade de ricochete, em hardware da geração Turing e posterior; os RT Cores significativamente reduziram o custo das duas operações específicas e nomeadas no Exemplo 3, eles não eliminaram o custo fundamentalmente mais alto e dependente de dados do ray tracing em relação à rasterização.
- "O argumento de amigabilidade-ao-SIMT significa que a rasterização é sempre mais rápida do que o ray tracing para qualidade visual idêntica." Os exemplos ilustrativos deste conceito comparam formato de custo, não qualidade de imagem final; uma imagem rasterizada aproximando reflexões com uma técnica separada (como uma passagem de reflexão de resolução mais baixa) pode renderizar mais rápido do que um equivalente totalmente traçado por raios enquanto parece visivelmente menos preciso, então "mais rápido" e "qualidade igual" são dois eixos separados que este conceito deliberadamente não conflata.
Resumo
O pipeline fixo e em estágios da rasterização mapeia naturalmente sobre hardware SIMT porque todo vértice, pixel e fragmento faz trabalho estruturalmente uniforme e independente, mas só avalia luz direta de fontes nomeadas; a estrutura recursiva do ray tracing produz reflexões, refrações e sombras de um algoritmo unificado e aproxima mais diretamente a equação de renderização completa, mas a sua ramificação dependente de dados, raios diferentes fazendo quantidades genuinamente diferentes de trabalho, não mapeia de forma limpa sobre esse mesmo modelo de hardware fixo, que é por que ele era tradicionalmente uma técnica offline. Os RT Cores da geração Turing da NVIDIA (2018) mudaram isto acelerando exatamente duas operações específicas, travessia de BVH e interseção raio-triângulo, em hardware dedicado rodando ao lado do trabalho de sombreamento comum, o desenvolvimento concreto e nomeado por trás da chegada do ray tracing de tempo real como uma realidade enviável, não uma alegação de que qualquer técnica substituiu a outra. capstone-tracing-one-triangle-through-both-pipelines, em seguida, rastreia uma cena concreta por ambas as técnicas lado a lado para tornar esta comparação inteira completamente concreta.