Reduzindo Ruído

Quando realizando uma renderização final, é importante reduzir o ruído o máximo possível. Aqui iremos discutir alguns truques que, apesar de violar as leis da física, são particularmente importantes quando renderizando animações em tempo razoável. Clique nas imagens de exemplo para aumentá-las e ver bem as diferenças de ruído.

Traçador de caminhos

Cycles usa traçador de caminhos com estimativa de próximo evento, o que não é bom na renderização de todos tipos de efeitos de luz, como cáustica, mas tem a vantagem de ser hábil na renderização de cenas maiores e mais detalhadas comparado a alguns outros algoritmos de renderização. Isso porquê não precisamos armazenar, por exemplo, um mapa de fótons na memória, e porquê podemos manter raios relativamente coerentes para usar um cache sob demanda, comparado a por ex. traçador de caminhos bidirecional.

../../../_images/render_cycles_settings_scene_render_light-paths_rays.svg

Nós fazemos o inverso do que a realidade faz, traçando raios de luz da câmera para a cena até as luzes, ao invés das fontes de luz para a cena e então até a câmera. Isso tem a vantagem que não precisamos desperdiçar raios de luz que não irão chegar na câmera, mas também significa que é difícil de achar alguns caminhos de luz que podem contribuir muito. Raios de luz serão enviados tanto de acordo com o BRDF de superfície, como na direção de fontes de luz conhecidas (lâmpadas, malhas emissivas com Amostra como Lâmpada).

Veja também

Para mais detalhes, veja a documentação de Caminhos de Luz e Integrador.

De Onde o Ruído Vem

Para entender de onde vem o ruído, pegue por exemplo a cena abaixo. Quando traçamos o raio de luz no local marcado por um círculo branco em um ponto vermelho, a segunda imagem dá a impressão do que o sombreador difuso «vê».

Para encontrar a luz que é refletida a partir da superfície, precisamos encontrar a cor média de todos esses pixeis. Note os destaques de brilho na esfera, e a região brilhosa que a lâmpada lança na parede próxima. Essas regiões são 100x mais claras que as outras partes da imagem e irão contribuir significativamente para a iluminação desse pixel.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-reference.jpg

A cena.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye.jpg

Irradiância no ponto de sombreamento.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-hotspot.jpg

Os destaques detectados.

A lâmpada é uma fonte de luz conhecida, então sua localização já é conhecida, mas o(s) destaque(s) de brilho que o(s) causa(m) são uma matéria diferente. A melhor que podemos fazer com traçador de caminho é distribuir raios de luz randomicamente sobre a hemiesfera, na esperança de encontrar todas as regiões brilhosas. Se para alguns pixeis nós perdemos alguma região brilhante, mas encontramos ela para outra, isso resulta em ruído. Quanto mais amostras, maior a probabilidade de cobrirmos todas as fontes de luz importantes.

Com alguns truques podemos reduzir o ruído. Se borrarmos as regiões brilhantes, elas tornam-se maiores e menos intensas, tornando mais fácil encontrá-las e menos ruidosas. Isso não irá fornecer o mesmo resultado, mas geralmente é próximo o suficiente quando visto através de uma reflexão difusa ou de polimento suave. Abaixo é um exemplo usando Filtro de Polimento e Decaimento de Luz.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur-reference.jpg

Usando Filtro de Polimento & Decaimento de Luz

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur.jpg

Irradiância no ponto de sombreamento.

../../../_images/render_cycles_optimizations_reducing-noise_fisheye-blur-hotspot.jpg

Os destaques detectados.

Rebatimentos

Na realidade a luz irá rebater uma quantidade gigante de vezes devido à velocidade da luz ser muito grande. Na prática mais rebatimentos irá introduzir mais ruído, e pode ser bom usar algo como a predefinição Iluminação Global Limitada na seção Caminhos de Luz que usa menos rebatimentos para diferentes tipos de sombreador. Tipicamente superfícies difusas podem sair com menos rebatimentos, enquanto superfícies polidas precisam mais algumas, e sombreadores de transmissão como vidro usualmente precisam mais.

../../../_images/render_cycles_optimizations_reducing-noise_0bounce.jpg

Sem rebatimentos.

../../../_images/render_cycles_optimizations_reducing-noise_2bounce.jpg

Dois rebatimentos ao máximo.

../../../_images/render_cycles_optimizations_reducing-noise_4bounce.jpg

Quatro rebatimentos ao máximo.

Importante também é usar sombreadores de cor que não têm componentes com valor de 1.0 ou valores próximos a isso; tente manter o valor máximo de 0.8 ou menos e faça suas luzes mais brilhantes. Na realidade, superfícies são raramente perfeitas ao refletir toda luz, mas claro há exceções; vidro usualmente irá deixar mais luz através, por isso precisamos mais rebatimentos nesse caso. Valores maiores para os componentes de cor tendem a introduzir ruído porquê a intensidade da luz não diminui muito conforme rebate em cada superfície.

Cáusticas e Filtro de Polimento

Cáusticas são uma fonte bem conhecida de ruído, causando pontos de brilho (fireflies). Eles ocorrem porque o renderizador tem dificuldade ao encontrar os destaques especulares vistos através de reflexões difusas ou de polimentos suaves. Há uma opção Sem Cáusticas para desativar completamente o polimento atrás de uma reflexão difusa. Muitos renderizadores irão tipicamente desativar cáusticas por padrão.

../../../_images/render_cycles_optimizations_reducing-noise_reference.jpg

Configurações padrão.

../../../_images/render_cycles_optimizations_reducing-noise_no-caustics.jpg

Cáusticas desativadas.

../../../_images/render_cycles_optimizations_reducing-noise_filter-glossy.jpg

Filtro de Polimento maior que zero.

Entretanto, usar Sem Cáustica irá resultar em luz faltando, e ainda não cobre o caso onde uma reflexão polida nítida é vista através de uma reflexão polida suave. Existe a opção Filtro de Polimento para reduzir o ruído nesses casos à custa de precisão. Isso irá borrar as reflexões polidas nítidas para tornar mais fácil encontrar, aumentando a Rugosidade do sombreador.

A imagem acima mostra as configurações padrão, sem cáustica, e filtro de polimento em 1.0.

Decaimento de Luz

Na realidade a luz no vácuo irá sempre decair a uma taxa de 1/(distância^2). Entretanto, conforme a distância vai a zero, esse valor vai ao infinito e nós podemos obter regiões muito claras na imagem. Isso é problema para a iluminação indireta principalmente, onde a probabilidade de acertar uma região tão pequena mas extremamente clara é baixa e portanto acontece apenas raramente. Essa é uma receita típica para pontos de brilho (fireflies)

../../../_images/render_cycles_optimizations_reducing-noise_falloff-hard.jpg

Decaimento abrupto.

../../../_images/render_cycles_optimizations_reducing-noise_falloff-soft.jpg

Decaimento suave.

Para reduzir esse problema, o nó Decaimento de Luz tem um fator Suavizar, que pode ser usado para reduzir a intensidade máxima que uma luz pode contribuir para superfícies próximas. As imagens abaixo mostram o decaimento padrão e suavizar com valor 1.0.

Amostra de múltipla importância

Materiais com sombreadores de emissão podem ser configurados para usar Amostra de múltipla importâcia (Configurações de material). Isso significa que eles irão receber raios enviados diretamente para eles, ao invés de baseado em raios que rebatem randomicamente ao redor. Para malhas fonte de luz muito claras, isso pode reduzir o ruído significativamente. Entretanto, quando a emissão não é particularmente clara, isso irá tirar amostras de outras fontes de luz mais claras para as quais é importante encontrar seu caminho.

As configurações ótimas aqui são difíceis de adivinhar; pode ser tentativa e erro, mas frequentemente é claro que um objeto pouco brilhante irá contribuir com luz apenas localmente, enquanto malha de luz usada como lâmpada precisaria essa opção ativada. Aqui é exemplo onde esferas emissivas contribuem pouco para a iluminação, e a imagem renderiza com um pouco menos de ruído desativando a opção de Importância múltipla neles.

../../../_images/render_cycles_optimizations_reducing-noise_sample-lamp.jpg

Amostra de múltipla importância desabilitada.

../../../_images/render_cycles_optimizations_reducing-noise_no-sample-lamp.jpg

Amostra de múltipla importância habilitada.

O plano de fundo do mundo também possui uma opção de Importância Múltipla (Configurações). Isso é mais útil para mapas de ambiente que possuem pontos claros pequenos neles. Essa opção irá então, num pré-processo, determinar as regiões claras, e enviar raios de luz diretamente na sua direção. Novamente, ativar essa opção pode levar amostras de fontes de luz mais importantes se não for necessário.

Vidros e Sombras Transparentes

Com cáusticas desativada, vidro irá perder sombras, e com filtro de polimento elas podem ser muito suaves. Nós podemos fazer sombreador de vidro que irá usar um BSDF de Vidro quando visto diretamente, e um BSDF Transparente quando visto indiretamente. O BSDF Transparente pode ser usado para sombras transparentes para encontrar fontes de luz direto através das superfícies, e irá fornecer sombras corretamente coloridas, mas sem cáustica. O nó Caminho de Luz é usado para de determinar quando usar cada um dos dois sombreadores.

../../../_images/render_cycles_optimizations_reducing-noise_glass-group.png

Sombreador de vidro otimizado.

Acima podemos ver a configuração dos nós usados para o truque da transparência do vidro; a esquerda a renderização tem muita sombra devido à ausência de cáustica, e na direita a renderização com o truque.

../../../_images/render_cycles_optimizations_reducing-noise_glass-too-much-shadow.jpg

BSDF de Vidro Padrão.

../../../_images/render_cycles_optimizations_reducing-noise_glass-trick.jpg

Sombreador para Vidros Otimizado.

Portais de Luz

Quandor renderizando uma cena interna com luz do dia onde a maioria da luz vem através de uma janela ou abertura de porta, é difícil para o integrador encontrar seu caminho até ela. Para corrigir isso, use Portais de Luz, que funcionam adicionando uma Lâmpada de área. Você irá então precisar modificar a sua forma para coincidir com a abertura que você está tentando preencher.

../../../_images/render_cycles_lamps_portals2.jpg
../../../_images/render_cycles_lamps_portals.jpg

Redução de ruídos

Mesmo com todas as configurações descritas acima sempre haverá algum ruído não importa quantas amostras você usar. Para corrigir isso há uma técnica de pós processamento para limpar a porção final de ruído. Para usá-la ative Redução de ruídos na aba Camadas de Renderização no editor de Propriedades.

Abaixo uma renderização de exemplo por The Pixelary.

../../../_images/render_cycles_settings_scene_render-layers_denoising_example1.jpg

Renderização exemplo antes da redução de ruídos.

../../../_images/render_cycles_settings_scene_render-layers_denoising_example2.jpg

Renderização exemplo após a redução de ruídos.

Truncar Pontos de Brilho (Fireflies)

Idealmente com todos truques anteriores, os pontos de brilho(fireflies) serão eliminados, mas eles ainda podem aparecer. Por isso, a intensidade que cada amostra de raio de luz contribui pode ser truncada a um valor máximo com a configuração Truncar do integrador.

Se definida muito baixa isso pode causar pontos de brilho faltando na imagem, que pode ser útil preservá-los para efeitos de câmera como bloom e glare. Para mitigar esse enigma é frequentemente útil truncar apenas os rebatimentos indiretos, deixando pontos de brilho diretamente visíveis à câmera intocados.

../../../_images/render_cycles_optimizations_reducing-noise_no-clamp.jpg

Sem Truncar (0).

../../../_images/render_cycles_optimizations_reducing-noise_clamp4.jpg

Com Truncar definido para 4.