着色节点

    作为准备节点着色器执行的第一步,Cycles展开全部的节点组,就像使用取消组工具,丢弃UI 只剩像框架和重新路由节点的特性。

    此后,应用一些明显的变换。比如,它可以(这个列表不是详尽的):

    • 当用适当的输入值或链接替换,因子已知是0或1时,消除混合RGB混合(没有夹具)和混合材质节点。

    • 消除无操作混合RGB(除了颜色加深,颜色减淡,变亮,或启用钳制),反转,RGB曲线和具有已知0系数的矢量曲线节点。

    • 消除 的恒定高度输入,使用其法线输入或几何法线代替。这对于实现节点组输入很有用,这些节点组在做数学运算之前通过无操作的Bump路由来默认为正常。

    • 组合有相同输入的相同节点的多个拷贝成一个实例。

    最终,最终没有直接或间接连接到输出节点的节点将被删除。

    当执行着色器,一个特殊的优化被用于混合材质节点。如果因子评估是0或1,任何只有通过混合的未使用分支才可达的节点不被评估。

    这可以大大降低在一个着色器中将多个材质与用作开关的颜色属性、纹理或其他输入组合在一起的性能成本。

    开放着色语言可以优化脚本节点,如果它们的输出未使用或不变的,即使它们的 OSL 着色器有令人困惑的调试追踪和消息传递的副作用。因此用 和 的消息传递一般不应该用作在图中向前传递消息;准确地讲,通过插口 (sockets)传递消息更好。