:github_url: hide .. _class_VisualShaderNode: VisualShaderNode ================ **继承:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` **派生:** :ref:`VisualShaderNodeBillboard`, :ref:`VisualShaderNodeClamp`, :ref:`VisualShaderNodeColorFunc`, :ref:`VisualShaderNodeColorOp`, :ref:`VisualShaderNodeCompare`, :ref:`VisualShaderNodeConstant`, :ref:`VisualShaderNodeCubemap`, :ref:`VisualShaderNodeCustom`, :ref:`VisualShaderNodeDerivativeFunc`, :ref:`VisualShaderNodeDeterminant`, :ref:`VisualShaderNodeDistanceFade`, :ref:`VisualShaderNodeDotProduct`, :ref:`VisualShaderNodeFloatFunc`, :ref:`VisualShaderNodeFloatOp`, :ref:`VisualShaderNodeFresnel`, :ref:`VisualShaderNodeIf`, :ref:`VisualShaderNodeInput`, :ref:`VisualShaderNodeIntFunc`, :ref:`VisualShaderNodeIntOp`, :ref:`VisualShaderNodeIs`, :ref:`VisualShaderNodeLinearSceneDepth`, :ref:`VisualShaderNodeMix`, :ref:`VisualShaderNodeMultiplyAdd`, :ref:`VisualShaderNodeOuterProduct`, :ref:`VisualShaderNodeOutput`, :ref:`VisualShaderNodeParameter`, :ref:`VisualShaderNodeParameterRef`, :ref:`VisualShaderNodeParticleAccelerator`, :ref:`VisualShaderNodeParticleConeVelocity`, :ref:`VisualShaderNodeParticleEmit`, :ref:`VisualShaderNodeParticleEmitter`, :ref:`VisualShaderNodeParticleMultiplyByAxisAngle`, :ref:`VisualShaderNodeParticleRandomness`, :ref:`VisualShaderNodeProximityFade`, :ref:`VisualShaderNodeRandomRange`, :ref:`VisualShaderNodeRemap`, :ref:`VisualShaderNodeReroute`, :ref:`VisualShaderNodeResizableBase`, :ref:`VisualShaderNodeRotationByAxis`, :ref:`VisualShaderNodeSample3D`, :ref:`VisualShaderNodeScreenNormalWorldSpace`, :ref:`VisualShaderNodeScreenUVToSDF`, :ref:`VisualShaderNodeSDFRaymarch`, :ref:`VisualShaderNodeSDFToScreenUV`, :ref:`VisualShaderNodeSmoothStep`, :ref:`VisualShaderNodeStep`, :ref:`VisualShaderNodeSwitch`, :ref:`VisualShaderNodeTexture`, :ref:`VisualShaderNodeTextureSDF`, :ref:`VisualShaderNodeTextureSDFNormal`, :ref:`VisualShaderNodeTransformCompose`, :ref:`VisualShaderNodeTransformDecompose`, :ref:`VisualShaderNodeTransformFunc`, :ref:`VisualShaderNodeTransformOp`, :ref:`VisualShaderNodeTransformVecMult`, :ref:`VisualShaderNodeUIntFunc`, :ref:`VisualShaderNodeUIntOp`, :ref:`VisualShaderNodeUVFunc`, :ref:`VisualShaderNodeUVPolarCoord`, :ref:`VisualShaderNodeVarying`, :ref:`VisualShaderNodeVectorBase`, :ref:`VisualShaderNodeWorldPositionFromDepth` :ref:`VisualShader` 节点的基类。与场景节点无关。 .. rst-class:: classref-introduction-group 描述 ---- 可视化着色器图由各种节点组成。图中的每个节点都是一个独立的对象,它们被表示为带有标题和一系列属性的矩形框。每个节点还有连接端口,可以将其连接到另一个节点并控制着色器的流程。 .. rst-class:: classref-introduction-group 教程 ---- - :doc:`使用可视化着色器 <../tutorials/shaders/visual_shaders>` .. rst-class:: classref-reftable-group 属性 ---- .. table:: :widths: auto +-----------------------+---------------------------------------------------------------------------------------------+--------+ | :ref:`int` | :ref:`linked_parent_graph_frame` | ``-1`` | +-----------------------+---------------------------------------------------------------------------------------------+--------+ | :ref:`int` | :ref:`output_port_for_preview` | ``-1`` | +-----------------------+---------------------------------------------------------------------------------------------+--------+ .. rst-class:: classref-reftable-group 方法 ---- .. table:: :widths: auto +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear_default_input_values`\ (\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_default_input_port`\ (\ type\: :ref:`PortType`\ ) |const| | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array` | :ref:`get_default_input_values`\ (\ ) |const| | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`get_input_port_default_value`\ (\ port\: :ref:`int`\ ) |const| | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`remove_input_port_default_value`\ (\ port\: :ref:`int`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_default_input_values`\ (\ values\: :ref:`Array`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_input_port_default_value`\ (\ port\: :ref:`int`, value\: :ref:`Variant`, prev_value\: :ref:`Variant` = null\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 枚举 ---- .. _enum_VisualShaderNode_PortType: .. rst-class:: classref-enumeration enum **PortType**: :ref:`🔗` .. _class_VisualShaderNode_constant_PORT_TYPE_SCALAR: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_SCALAR** = ``0`` 浮点数类型。在着色器代码中,会被翻译为 ``float`` 类型。 .. _class_VisualShaderNode_constant_PORT_TYPE_SCALAR_INT: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_SCALAR_INT** = ``1`` 整数标量。在着色器代码中,会被翻译为 ``int`` 类型。 .. _class_VisualShaderNode_constant_PORT_TYPE_SCALAR_UINT: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_SCALAR_UINT** = ``2`` 无符号整数标量。在着色器代码中,会被翻译为 ``uint`` 类型。 .. _class_VisualShaderNode_constant_PORT_TYPE_VECTOR_2D: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_VECTOR_2D** = ``3`` 浮点数 2D 向量。在着色器代码中,会被翻译为 ``vec2`` 类型。 .. _class_VisualShaderNode_constant_PORT_TYPE_VECTOR_3D: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_VECTOR_3D** = ``4`` 浮点数 3D 向量。在着色器代码中,会被翻译为 ``vec3`` 类型。 .. _class_VisualShaderNode_constant_PORT_TYPE_VECTOR_4D: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_VECTOR_4D** = ``5`` 浮点数 4D 向量。在着色器代码中,会被翻译为 ``vec4`` 类型。 .. _class_VisualShaderNode_constant_PORT_TYPE_BOOLEAN: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_BOOLEAN** = ``6`` 布尔值类型。在着色器代码中,会被翻译为 ``bool`` 类型。 .. _class_VisualShaderNode_constant_PORT_TYPE_TRANSFORM: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_TRANSFORM** = ``7`` 变换类型。在着色器代码中,会被翻译为 ``mat4`` 类型。 .. _class_VisualShaderNode_constant_PORT_TYPE_SAMPLER: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_SAMPLER** = ``8`` 采样器类型。在着色器代码中,会被翻译为对采样器 uniform 的引用。只能用于非 uniform 节点的输入端口。 .. _class_VisualShaderNode_constant_PORT_TYPE_MAX: .. rst-class:: classref-enumeration-constant :ref:`PortType` **PORT_TYPE_MAX** = ``9`` 表示 :ref:`PortType` 枚举的大小。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 属性说明 -------- .. _class_VisualShaderNode_property_linked_parent_graph_frame: .. rst-class:: classref-property :ref:`int` **linked_parent_graph_frame** = ``-1`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_frame**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_frame**\ (\ ) 表示该节点被链接到的框的索引。如果设置为 ``-1``\ ,则表示节点未被链接到任何框。 .. rst-class:: classref-item-separator ---- .. _class_VisualShaderNode_property_output_port_for_preview: .. rst-class:: classref-property :ref:`int` **output_port_for_preview** = ``-1`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_output_port_for_preview**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_output_port_for_preview**\ (\ ) 设置将被显示为预览的输出端口索引。如果设置为\ ``-1``\ ,则没有端口会被打开进行预览。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 方法说明 -------- .. _class_VisualShaderNode_method_clear_default_input_values: .. rst-class:: classref-method |void| **clear_default_input_values**\ (\ ) :ref:`🔗` 清除默认输入端口值。 .. rst-class:: classref-item-separator ---- .. _class_VisualShaderNode_method_get_default_input_port: .. rst-class:: classref-method :ref:`int` **get_default_input_port**\ (\ type\: :ref:`PortType`\ ) |const| :ref:`🔗` 返回输入端口,当由于将连接从已有节点拖动到图形上的空白区域而创建节点时,默认情况下应连接该输入端口。 .. rst-class:: classref-item-separator ---- .. _class_VisualShaderNode_method_get_default_input_values: .. rst-class:: classref-method :ref:`Array` **get_default_input_values**\ (\ ) |const| :ref:`🔗` 返回一个包含节点所有输入端口默认值的 :ref:`Array`\ ,形式为 ``[index0, value0, index1, value1, ...]``\ 。 .. rst-class:: classref-item-separator ---- .. _class_VisualShaderNode_method_get_input_port_default_value: .. rst-class:: classref-method :ref:`Variant` **get_input_port_default_value**\ (\ port\: :ref:`int`\ ) |const| :ref:`🔗` 返回输入端口 ``port`` 的默认值。 .. rst-class:: classref-item-separator ---- .. _class_VisualShaderNode_method_remove_input_port_default_value: .. rst-class:: classref-method |void| **remove_input_port_default_value**\ (\ port\: :ref:`int`\ ) :ref:`🔗` 移除输入端口 ``port`` 的默认值。 .. rst-class:: classref-item-separator ---- .. _class_VisualShaderNode_method_set_default_input_values: .. rst-class:: classref-method |void| **set_default_input_values**\ (\ values\: :ref:`Array`\ ) :ref:`🔗` 使用 ``[index0, value0, index1, value1, ...]`` 形式的 :ref:`Array` 设置默认输入端口值。例如: ``[0, Vector3(0, 0, 0), 1, Vector3(0, 0, 0)]``\ 。 .. rst-class:: classref-item-separator ---- .. _class_VisualShaderNode_method_set_input_port_default_value: .. rst-class:: classref-method |void| **set_input_port_default_value**\ (\ port\: :ref:`int`, value\: :ref:`Variant`, prev_value\: :ref:`Variant` = null\ ) :ref:`🔗` 设置输入端口 ``port`` 的默认值 ``value``\ 。 .. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (本方法无副作用,不会修改该实例的任何成员变量。)` .. |vararg| replace:: :abbr:`vararg (本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。)` .. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)` .. |static| replace:: :abbr:`static (调用本方法无需实例,可直接使用类名进行调用。)` .. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效运算符。)` .. |bitfield| replace:: :abbr:`BitField (这个值是由下列位标志构成位掩码的整数。)` .. |void| replace:: :abbr:`void (无返回值。)`