Este artigo foi publicado originalmente por Emanuele Lecchi (Lele) em seu perfil no Linkedin. Você pode ver o original aqui.
Denoising de renders com Global Illumination calculado por algum tipo de método Brute Force (Path Tracing ou equivalente) é o assunto da moda, hoje em dia.
Na Chaos Group, Vlado tem trabalhado forte em refinar o denoiser que escreveu para o próximo service pack (4, trazendo o V-Ray para a versão 3.4).
Funciona de modo bastante flexível, em CPU, GPU ou ambos, com alguns modos importantes: por frame e cross-frame, e RGB-only ou por elemento.
O primeiro ajuda o denoiser em sequências animadas, onde coerência temporal é tão importante quanto a suavidade dos resultados, ou “bolhas” bem irritantes podem aparecer durante o playback.
O denoiser pode aceitar um intervalo de frames, uma distância em frames a partir do frame atual, para samplear: o padrão 1 irá analisar o frame anterior e o posterior, enquanto um valor de 2 irá fazer o mesmo 2 frames antes e 2 depois.
O último dá a possibilidade de escolher exatamente onde o denoiser irã operar para limpar a imagem, permitindo uma retenção de detalhes superior contra o denoiser mais rápido.
Enquanto o modo RGB-only efetivamente limpa apenas o beauty layer, ele leva os Render Elements auto-gerados (AoVs) em conta para estimar quais pixels podem ser misturados e quais devem ser preservados para manter os detalhes.
Isto funciona muito bem para imagens com qualidade “decente”: é extremamente rápido porque limpa apenas uma imagem RGB, e se não forçarmos demais seus parâmetros, fará um ótimo trabalho preservando detalhes.
Mas o momento em que o denoiser realmente brilha é, no entanto, com o cálculo per-element (ou per AoV): a habilidade de operar com diferentes heurísticas em cada efeito gerado (Luzes Diretas, GI, Reflexos, Refrações, etc) permite uma retenção de detalhes muito superior, e no caso de imagens originais muito ruins (aqueles testes bem, mas bem cheios de ruído) ele inclusive permite reconstrução de detalhes.
Abaixo você pode ver exemplos do denoiser em ação com a imagem original e a imagem limpa usando o método per-element (o mais intenso computacionalmente falando, mas também o de maior qualidade. Cada imagem foi renderizada em 1080p, então certifique-se de olhar tudo em 1:1). Cada render levou entre 12 e 20 minutos por frame (24-core Xeon), enquanto o denoiser levou 6 minutos por frame usando CPU e um pouco menos de 2 minutos usando uma GTX-980.
Um link do GDrive com os frames da animação também está disponível.
Comparação lado-a-lado (1080p)
Animação RAW e com Denoising (1080p)
Cade o link do Gdrive?
No final da postagem, logo abaixo da imagem.