rhodonite
    Preparing search index...

    Class SplitVectorShaderNode

    A shader node that splits vector inputs into their individual components or smaller vectors. This node can take vec4, vec3, or vec2 inputs and output various combinations of their components including individual scalars (x, y, z, w) and smaller vectors (xy, zw, xyz).

    Supports both WebGL/GLSL and WebGPU/WGSL shader compilation. Supports float, int, and uint component types.

    const splitNode = new SplitVectorShaderNode(ComponentType.Float);
    // Connect a vec4 input to get x, y, z, w components separately
    // Or connect vec3 input to get xyz, xy components

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    __commonPart?: CommonShaderPart
    __inputConnections: ShaderNodeInputConnectionType[] = []
    __inputs: Socket<
        string,
        CompositionTypeEnum,
        ComponentTypeEnum,
        SocketDefaultValue,
    >[] = []
    __outputs: Socket<
        string,
        CompositionTypeEnum,
        ComponentTypeEnum,
        SocketDefaultValue,
    >[] = []
    __shaderFunctionName: string
    __shaderNodeUid: number
    _tags: RnTags = {}

    Collection of tags associated with this object

    _shaderNodes: AbstractShaderNode[] = []
    currentMaxObjectCount: number = 0

    Current maximum object count for UID generation

    InvalidObjectUID: -1

    Invalid object UID constant

    Accessors

    • get inputConnections(): ShaderNodeInputConnectionType[]

      Gets all input connections for this node.

      Returns ShaderNodeInputConnectionType[]

      An array of input connection configurations

    • get objectUID(): number

      Gets the unique object identifier

      Returns number

      The object's UID

    • get uniqueName(): string

      Gets the unique name of this object

      Returns string

      The unique name string

    Methods

    • Gets the derivative shader function name based on the connected input type and component type. For WebGPU, returns specialized function names (splitVectorXYZW, splitVectorXYZ, splitVectorXY) based on which input is connected, with type suffix (I32, U32) for non-float types. For WebGL, returns the base function name.

      Parameters

      Returns string

      The appropriate shader function name for the current input connection and process approach

      When no valid input connection is found in WebGPU mode

    • Retrieves the value associated with a specific tag name

      Parameters

      • tagName: string

        The name of the tag whose value to retrieve

      Returns any

      The tag value, or undefined if the tag doesn't exist

    • Checks whether this object has a tag with the specified name

      Parameters

      • tagName: string

        The name of the tag to check for

      Returns boolean

      True if the tag exists (value is not null/undefined), false otherwise

    • Generates shader code for calling the split vector function. ShaderGraphResolver already orders varOutputNames to match output socket order and generates dummy variables for unconnected outputs, so we simply use them directly. This node only needs custom handling for selecting the correct input (xyzw, xyz, or xy).

      Parameters

      • engine: Engine

        The engine instance

      • i: number

        The index of the current shader node call

      • _shaderNode: AbstractShaderNode

        The shader node instance (unused in this implementation)

      • functionName: string

        The name of the shader function to call

      • varInputNames: string[][]

        Array of input variable names for each call

      • varOutputNames: string[][]

        Array of output variable names for each call (already ordered by ShaderGraphResolver)

      Returns string

      The generated shader code string for the function call

    • Checks if this object has a tag with the specified name and value

      Parameters

      • tagName: string

        The tag name to match

      • tagValue: string

        The tag value to match

      Returns boolean

      True if the object has a matching tag, false otherwise

    • Checks if this object has all the specified tags with exactly matching values

      Parameters

      • tags: RnTags

        Object containing tag names as keys and expected values

      Returns boolean

      True if all specified tags exist with matching values, false otherwise

    • Checks if the object's combined tag string contains all the provided search strings. This allows for flexible searching within tag names and values.

      Parameters

      • stringArray: string[]

        Array of strings that must all be present in the combined tag string

      Returns boolean

      True if all strings are found in the combined tag string, false otherwise

    • Attempts to set a tag on this object. If the tag already exists, it will be replaced.

      Parameters

      • tag: Tag

        The tag object containing the name and value to set

      Returns boolean

      True if the tag was successfully set, false if the tag name contains invalid characters

    • Attempts to set a unique name for this object

      Parameters

      • name: string

        The desired unique name

      • toAddNameIfConflict: boolean

        If true, appends UID to make name unique when conflicts occur; if false, fails on conflict

      Returns boolean

      True if the name was successfully set, false if there was a conflict and toAddNameIfConflict was false

    • Validates that a tag string contains only allowed characters (alphanumeric and underscore)

      Parameters

      • val: string

        The string to validate

      Returns boolean

      True if the string contains only valid characters, false if it contains invalid characters

    • Searches for the first object that has a specific tag with the given value

      Parameters

      • tag: string

        The tag name to search for

      • value: string

        The tag value to match

      Returns WeakRef<RnObject> | undefined

      WeakRef to the first matching object, or undefined if not found