(este artigo foi originalmente publicado no blog do Chaos Group Labs)
Mas o que é Adaptive Light? Enquanto raytracing continua sendo a forma mais interessante e realista de renderizar o comportamento de luzes, o algoritmo apresenta uma série de desafios. Um problema comum ocorre com cenas que possuam muitas luzes. Quando o V-Ray 3.0 foi lançado, introduzimos uma maneira simples de lidar com isso chamada Probabilistic Lights. No vindouro service pack 5 do V-Ray 3 introduziremos um método melhorado chamado Adaptive Lights.
Disclaimer: Adaptive Lights ainda está em desenvolvimento e os exemplos e resultados abaixo não necessariamente representam o produto final.
Para um melhor entendimento, vamos quebrar os diferentes métodos para avaliar fontes de luz em um determinado ponto da cena.
Full lighting:
É a forma como lidávamos com muitas fontes de luz até a versão 3. Neste método, para cada raio lançado, iríamos avaliar cada fonte de luz. Em cenas com 5 ou 10 luzes isso não é um problema, mas com centenas ou milhares de luzes o tempo de render aumentava drasticamente.
Probabilistic Lights:
Neste método, para cada raio escolhido randomicamente, escolhemos um pequeno número fixo de luzes. O padrão é 16 luzes, mas em nossos exemplos adotaremos 5 para efeito ilustrativo. Isto reduz drasticamente o número de cálculos para cada ponto. Como o próximo raio escolhe outras 5 luzes, e geralmente lançamos milhões de raios, na média todas as luzes acabam sendo levadas em consideração. De forma geral, este método é mais rápido do que o método anterior, que leva em consideração todas as luzes em todos os raios lançados. Entretanto, uma desvantagem é que isso pode introduzir mais noise na imagem e precisar de mais samples para limpar realmente. Adicionalmente, alguns pontos podem levar em conta luzes que não são visíveis ou não contribuem com a iluminação daquela área.
Adaptive Lights:
Este método é baseado no método de probabilistic method mas é mais esperto sobre quais luzes seleciona para avaliação, utilizando o pass de Light Cache. O Light Cache é geralmente usado para Global Illumination, mas também fornece ao V-Ray uma boa ideia geral do que realmente está acontecendo na cena. No final, o resultado é que ao invés de escolher 5 luzes aleatórias, podemos escolher 5 luzes com grande probabilidade de afetar um determinado ponto. Isso ajuda o V-Ray a alcançar uma solução limpa muito mais rápido.
Sendo mais claro, o Probabilistic Lights era e pode ainda ser uma maneira mais inteligente de lidar com um grande número de luzes num render raytraced. Mas sendo um pouco mais inteligentes na seleção das luzes baseado no resultado do Light Cache, Adaptive Lights é geralmente melhor.
No exemplo a seguir, exploramos um grande espaço com muitas divisões. Colocamos 168 luzes na cena e comparamos as avaliações de luzes Full, Probabilistic, e Adaptive em 3 condições diferentes.
Luzes baixas
No primeiro teste, colocamos as luzes numa altura bastante baixa na cena. Como há paredes, a maioria das luzes só afetam áreas próximas.
Luzes a média altura
Agora levantamos as luzes a uma altura média, aumentando sua influência nas áreas vizinhas.
Luzes altas
Por último, levantamos as luzes de forma que todas afetem uma grande parte da cena.
Todas as imagens são renderizadas com o mesmo noise threshold de forma a terem níveis de noise semelhantes. Estes são os resultados:
Apesar de o teste ter sido pensado especificamente para demonstrar a vantagem do novo método Adaptivo, ele acaba também mostrando que existem condições onde o método Probabilístico pode realmente ser menos vantajoso devido ao nível de noise gerado na imagem. Ao mesmo tempo, o método Adaptivo consistentemente demonstra boa performance. Mesmo em condições onde o método Probabilístico vai bem, o Adaptivo ainda melhora os resultados e renderiza mais rápido.
Sugerimos fortemente que você visite o post de Tomasz Wyszołmirski para ver seu extensivo teste de benchmark entre Full vs Probabilistic vs Adaptive.
1 comentário