:github_url: hide .. Generated automatically by doc/tools/make_rst.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:`RefCounted` **<** :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: .. _class_VisualShaderNodeColorOp_constant_OP_MAX: 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)); } } - **OP_MAX** = **9** --- Represents the size of the :ref:`Operator` enum. 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. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`