Shader Nodes
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.
After that, it applies some obvious transformations, for example, it can (the list is not exhaustive):
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.
Eliminate no-op Mix RGB (except Color Burn, Color Dodge, Lighten, or enabled Clamp), Invert, RGB Curves and Vector Curves nodes with known zero Factor.
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.
Finally, any nodes that end up not connected either directly or indirectly to the Output node are removed.
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.
Open Shading Language
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.