Nós Sombreadores

Cycles aplica uma variedade de otimizações de nós de sombreadores tanto no tempo de compilação como na execução. Ao explorar eles é possível desenhar de grupos de nós com estilo de «Super Sombreadores» que levam à mínimas sobrecargas ao tempo de renderização para funcionalidades não usadas.

Otimizações de Nós

Como primeiro passo ao preparar um nó sombreador para execução, o Cycles expande todos grupos de nós, como se estivesse usando a ferramenta Desagrupar, e descarta funcionalidades apenas da Interface do Usuário como quadros e nós de redirecionamento.

Depois disso, ele aplica algumas transformações óbvias. Por exemplo, ele pode (a lista não é exaustiva):

  • Substituir os seguintes nós com o resultado constante da sua avaliação, se todas as entradas forem determinadas para ser constantes.

    RGB, Valor, Misturar RGB, Matemática, Matemática Vetorial, RGB para PB, Brilho e Contraste, Inverter, Separar/Combinar RGB/XYZ/HSV, Corpo Negro, Curvas RGB, Curvas Vetoriais, Rampas de Cor.

  • Detecta nós Misturar RGB, Matemática e Matemática Vetorial que tornam-se no-op (sem Truncamento) ou avalia eles para 0 como resultado da adição, subtração, multiplicação, divisão ou produto escalar/vetorial com uma entrada constante de 0 ou 1, e substitui com a ligação de entrada apropriada ou resultado constante.

  • Elimina nós Misturar RGB (sem Truncamento) e Misturar Sombreador quando o Fator é conhecido por ser 0 ou 1 substituindo com o valor de entrada ou ligação apropriados.

  • Elimina nós no-op Misturar RGB (exceto Queimar, Esquivar, Clarear, ou Truncamento ativado), Inverter, Curvas RGB e Curvas Vetoriais com fator zero conhecidos.

  • Elimina nós sombreadores Emissão e Plano de Fundo que não emitem nenhuma luz, e nós Sombreador Adicionar com um ou ambos argumentos de entrada faltando.

  • Elimina Relevo com entrada de Altura constante, usando ao invés sua entrada Normal ou Normal da Geometria.

  • Combina múltiplas cópias do mesmo nó com as mesmas entradas em apenas uma instância.

Finalmente, quaisquer nós que terminam não conectados tanto direta ou indiretamente ao nó de saída são removidos.

Otimizações em Tempo de Execução

Quando executando sombreadores, uma otimização especial é aplicada aos nós Misturar Sombreador. Se o Fator é avaliado para 0 ou 1, quaisquer nós que são alcançados apenas pela ramificação não usada da mistura não são avaliados.

Isso pode diminuir substancialmente o custo de combinar múltiplos materiais em um sombreado com cor de vértices, textura, ou outra entrada usada como comutador.

Linguagem de Sombreamento Aberto

Se a Linguagem de Sombreamento Aberto é escolhida como a renderizadora de fundo, nós sombreadores são traduzidos para código LSA e então compilados e executados pelo tempo de execução LSA. No processo ele aplica seu próprio conjunto extensivo de otimizações, tanto no tempo de compilação como de execução.

A Linguagem de Sombreamento Aberto pode otimizar nós de Script se suas saídas não são usadas ou constantes, mesmo se seus sombreadores LSA tiverem efeitos colaterais como traçador depurador e passagem de mensagem, que podem ser confusos. Por essa razão passagem de mensagem com setmessage e getmessage geralmente não devem ser usados para passar informações a frente no gráfico; preferencialmente deve-se passar informação explicitamente através de soquetes.