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.

  • Eliminate Bump with constant Height input, using its Normal input or Geometry Normal instead. This is useful for implementing node group inputs that default to normal via routing through a no-op Bump before doing math.

  • Replace Attribute nodes of the View Layer type with the evaluated attribute value (it is constant within the whole Render Layer).

  • 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.

This can substantially reduce the performance cost of combining multiple materials in one shader with a Color Attribute, texture, or other input used as a switch.

Open Shading Language#

If Open Shading Language is chosen as the rendering backend, node shaders are translated to OSL code and then compiled and executed by the OSL runtime. In the process it applies its own extensive set of optimizations, both at compile time and run-time.

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.