材质节点

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

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

    • 替代下面的节点为它们评估的恒定结果,如果所有的它们的输入是确定不变的:

      RGB,值,混合 RGB,数学,向量数学,RGB 到 BW,Gamma,明反差,反转,分离/组合 RGB/XYZ/HSV,黑体,RGB 曲线,向量曲线,颜色斜坡。

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

    • 消除发射和不发射任何光的背景材质节点,和一个或两个输入参数缺失的情况下添加材质节点。

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

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

    这可以本质上减少在一个具有顶点颜色,纹理,和其他输入作为交换的着色器内组合多种材质的运行消耗。

    如果开放着色语言被选作渲染后端,节点着色器被翻译成开放着色语言代码,然后编译,并通过 OSL 运行时执行。在这个过程,它应用自己的大量优化,包括编译时和运行时。