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: