Відтінювані Вузли – Shader Nodes

Cycles applies a number of shader node optimizations both at compile time and run-time. By exploiting them it is possible to design complicated «Uber Shader» style node groups that incur minimal render time overhead for unused features.

Оптимізації Вузлів – Node Optimizations

Першим кроком у підготовці відтінюваного взула для виконання Cycles розгортає усі групи вузлів, ніби використовуючи інструмент розгрупування, та відкидає інтерфейс лиш таких функцій, як кадри та розводки вузлів.

Після цього, він застосовує деякі очевидні трансформування, наприклад, він може (цей список не є вичерпним):

  • Замінити наступні вузли з результатом без змін їх оцінення, якщо всі їх уводи визначені бути без змін:

    RGB, Value, Mix RGB, Math, Vector Math, RGB to BW, Gamma, Bright Contrast, Invert, Separate/Combine RGB/XYZ/HSV, Blackbody, RGB Curves, Vector Curves, Color Ramps.

  • Виявити вузли Mix RGB, Math та Vector Math, що стають без операції (без Clamp) або оцінюються як 0 у результаті додання, віднімання, множення ділення або добутку векторів/скалярів з відомим уводом 0 або 1 без змін, та замінити відповідним увідним зв’язком або постійним результатом.

  • Усунути вузли Mix RGB Mix (без Clamp) та Mix Shader, коли Factor є відомо 0 або 1, замінивши відповідним увідним значенням або зв’язком.

  • Усунути вузли без операції Mix RGB (за винятком Burn, Dodge, Lighten, або з увімкненим Clamp), Invert, RGB Curves and Vector Curves з відомим нульовим Factor.

  • Усунути відтінювані вузли Emission та Background, щоб не випромінюють жодного світла, та вузли Add Shader з відсутніми одним чи обома аргументами уводів.

  • Усунути вузол Bump з постійним уводом Height, використавши натомість його увід Normal або увід Normal вузла Geometry.

  • Скомбінувати кілька копій одного і того ж вузла з однаковими уводами в єдиний примірник.

Наостанок, будь-які вузли, що у кінцевому підсумку не пов’язані безпосередньо або опосередковано з вивідним вузлом, вилучаються.

Run-Time Optimizations

При виконанні відтінювачів спеціальна оптимізація застосовується до вузлів Mix Shader. Якщо Factor оцінюється як 0 чи 1, то будь-які вузли, які доступні лише через невикористану гілку мішання, не оцінюються.

Може суттєво підвищити продуктивність комбінування кількох матеріалів в один відтінювач на основі кольору вершин, текстури або іншого уводу, що будуть використовуватися як перемикач.

Відкрита Мова Відтінення – Open Shading Language

If Open Shading Language is chosen as the rendering back end, 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.

Open Shading Language може оптимізувати вузли типу Script, якщо їх виводи не використовуються або без змін, навіть якщо їх відтінювачі OSL мають побічні ефекти, як простеження зневадження та проходження повідомлення, що можуть бути заплутаними. З цієї причини проходження повідомлення з setmessage та getmessage повинні у загальному не використовуватися для проходження інформації вперед у графі; рекомендується явне проходження інформації через роз’єми.