:github_url: hide .. Generated automatically by doc/tools/makerst.py in Godot's source tree. .. DO NOT EDIT THIS FILE, but the VisualShaderNodeColorOp.xml source instead. .. The source is found in doc/classes or modules//doc_classes. .. _class_VisualShaderNodeColorOp: VisualShaderNodeColorOp ======================= **Inherits:** :ref:`VisualShaderNode` **<** :ref:`Resource` **<** :ref:`Reference` **<** :ref:`Object` A :ref:`Color` operator to be used within the visual shader graph. Description ----------- Applies :ref:`operator` to two color inputs. Properties ---------- +--------------------------------------------------------+------------------------------------------------------------------+-------+ | :ref:`Operator` | :ref:`operator` | ``0`` | +--------------------------------------------------------+------------------------------------------------------------------+-------+ Enumerations ------------ .. _enum_VisualShaderNodeColorOp_Operator: .. _class_VisualShaderNodeColorOp_constant_OP_SCREEN: .. _class_VisualShaderNodeColorOp_constant_OP_DIFFERENCE: .. _class_VisualShaderNodeColorOp_constant_OP_DARKEN: .. _class_VisualShaderNodeColorOp_constant_OP_LIGHTEN: .. _class_VisualShaderNodeColorOp_constant_OP_OVERLAY: .. _class_VisualShaderNodeColorOp_constant_OP_DODGE: .. _class_VisualShaderNodeColorOp_constant_OP_BURN: .. _class_VisualShaderNodeColorOp_constant_OP_SOFT_LIGHT: .. _class_VisualShaderNodeColorOp_constant_OP_HARD_LIGHT: enum **Operator**: - **OP_SCREEN** = **0** --- Produce a screen effect with the following formula: :: result = vec3(1.0) - (vec3(1.0) - a) * (vec3(1.0) - b); - **OP_DIFFERENCE** = **1** --- Produce a difference effect with the following formula: :: result = abs(a - b); - **OP_DARKEN** = **2** --- Produce a darken effect with the following formula: :: result = min(a, b); - **OP_LIGHTEN** = **3** --- Produce a lighten effect with the following formula: :: result = max(a, b); - **OP_OVERLAY** = **4** --- Produce an overlay effect with the following formula: :: for (int i = 0; i < 3; i++) { float base = a[i]; float blend = b[i]; if (base < 0.5) { result[i] = 2.0 * base * blend; } else { result[i] = 1.0 - 2.0 * (1.0 - blend) * (1.0 - base); } } - **OP_DODGE** = **5** --- Produce a dodge effect with the following formula: :: result = a / (vec3(1.0) - b); - **OP_BURN** = **6** --- Produce a burn effect with the following formula: :: result = vec3(1.0) - (vec3(1.0) - a) / b; - **OP_SOFT_LIGHT** = **7** --- Produce a soft light effect with the following formula: :: for (int i = 0; i < 3; i++) { float base = a[i]; float blend = b[i]; if (base < 0.5) { result[i] = base * (blend + 0.5); } else { result[i] = 1.0 - (1.0 - base) * (1.0 - (blend - 0.5)); } } - **OP_HARD_LIGHT** = **8** --- Produce a hard light effect with the following formula: :: for (int i = 0; i < 3; i++) { float base = a[i]; float blend = b[i]; if (base < 0.5) { result[i] = base * (2.0 * blend); } else { result[i] = 1.0 - (1.0 - base) * (1.0 - 2.0 * (blend - 0.5)); } } Property Descriptions --------------------- .. _class_VisualShaderNodeColorOp_property_operator: - :ref:`Operator` **operator** +-----------+---------------------+ | *Default* | ``0`` | +-----------+---------------------+ | *Setter* | set_operator(value) | +-----------+---------------------+ | *Getter* | get_operator() | +-----------+---------------------+ An operator to be applied to the inputs. See :ref:`Operator` for options.