Raytracing não em tempo real


13

Joguei bastante com raytracing em tempo real (e raymarching etc.), mas não gastei muito tempo com raytracing não em tempo real - para imagens de alta qualidade ou para pré-renderizar vídeos e similares.

Eu sei que uma técnica comum para melhorar a qualidade da imagem no caso não em tempo real é lançar muito mais raios por pixel e calcular a média dos resultados.

Existem outras técnicas que se destacam como boas maneiras de melhorar a qualidade da imagem no caso não em tempo real, sobre o que você normalmente faria no caso em tempo real?

Respostas:


9

O rastreamento de caminho é a técnica padrão na renderização fotorrealista não em tempo real, e você deve procurar especificamente o rastreamento de caminho bidirecional para obter efeitos como cáusticos, que você realmente não pode obter com o rastreamento de caminho básico. O rastreamento de caminho bidirecional também converge mais rapidamente para a verdade do solo, como mostrado na imagem abaixo: insira a descrição da imagem aqui O transporte leve Metropolis (MLT) também é uma técnica mais avançada de rastreamento de caminho que converge ainda mais rapidamente para a verdade do solo, modificando os caminhos "bons" existentes: insira a descrição da imagem aqui

Você também pode usar amostragem de importância para convergência mais rápida, concentrando mais raios nas direções que importam mais. Ou seja, concentrando raios baseados em BRDF (mais para o pico de BRDF usando a função de densidade de probabilidade) ou para a fonte de luz, ou obtenha o melhor dos dois mundos e use a amostragem de importância múltipla. insira a descrição da imagem aqui É tudo sobre reduzir o ruído de maneira imparcial. Existem também técnicas de denoising para reduzir ainda mais o ruído nas imagens renderizadas. insira a descrição da imagem aqui

Eu acho que é melhor implementar primeiro o traçador de caminho básico de Monte Carlo de força bruta para servir como referência imparcial antes de examinar as técnicas mais avançadas. É muito fácil cometer erros e introduzir desvios que passam despercebidos; portanto, é bom ter uma implementação simples para referência.

Você também pode obter resultados muito bons aplicando o rastreamento de caminho na mídia participante, mas isso fica lento muito rápido: D insira a descrição da imagem aqui


5

Um dos grandes é o uso de geometria sólida construtiva, em vez de malhas triangulares. As interseções de triângulo de raio são mais rápidas do que quase qualquer outra interseção de forma de raio, mas é preciso um grande número de triângulos para aproximar a superfície de um cilindro ou toro, sem mencionar algumas das formas realmente exóticas, como fractais de julia ou funções paramétricas generalizadas que alguns renderizadores suportam.

Outro é o uso do mapeamento de fótons em tempo de renderização e cálculos de inter-reflexão difusa : isso permite obter efeitos de iluminação precisos em uma cena em mudança. No traçado de raios em tempo real, estes são muito caros para calcular, portanto, as fontes de luz e os principais elementos geométricos são forçados a ficar estacionários (para permitir o pré-cálculo) ou os efeitos são totalmente omitidos.


As superfícies de subdivisão são usadas muito mais que a geometria sólida construtiva. Eles ainda envolvem triângulos (ou alternativamente splines).

3

Embora eu não soubesse sobre o rastreamento de caminhos de Monte Carlo quando escrevi isso, descrevi-o acidentalmente. Ironicamente, o rastreamento de caminhos de Monte Carlo é a resposta que eu estava procurando na época.

O rastreamento de caminho ingênuo de monte carlo funciona avaliando algo chamado equação de renderização para resolver numericamente o valor da cor de um pixel. Ele pega amostras aleatórias tremendo aleatoriamente dentro de um pixel (existem melhores estratégias de amostragem e filtragem: qual é o raciocínio fundamental para anti-aliasing usando várias amostras aleatórias dentro de um pixel? ) E também saltando em direções aleatórias quando um raio atinge uma superfície .

Pode levar muitas amostras para obter bons resultados e, com poucas amostras, sua imagem ficará barulhenta. São necessárias quatro vezes mais amostras para reduzir o ruído pela metade. O tempo de renderização pode ser da ordem de uma hora usando 8 núcleos modernos de CPU para uma cena simples.

Existem técnicas mais avançadas de rastreamento de caminho de monte carlo que permitem obter imagens melhores com mais rapidez, como amostragem importante ou suavização da imagem após a renderização.

O rastreamento de caminho de Monte Carlo pode criar imagens fotorrealistas e oferece muitos recursos avançados de renderização, apenas porque segue as leis da física e fornece resultados realistas.

Você pode ler mais sobre isso aqui: http://blog.demofox.org/2016/09/21/path-tracing-getting-started-with-diffuse-and-emissive/

Aqui está um exemplo de imagem, que levou cerca de uma hora para renderizar usando todos os 8 dos meus núcleos de CPU:

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.