Skip to content

⬅️ Back to Table of Contents

📄 ComputeBuiltinNode.js

📊 Analysis Summary

Metric Count
🔧 Functions 9
🧱 Classes 1
📦 Imports 2

📚 Table of Contents

🛠️ File Location:

📂 src/nodes/gpgpu/ComputeBuiltinNode.js

📦 Imports

Name Source
Node ../core/Node.js
nodeObject ../tsl/TSLBase.js

Functions

ComputeBuiltinNode.getHash(builder: NodeBuilder): string

JSDoc:

/**
     * This method is overwritten since hash is derived from the built-in name.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The hash.
     */

Parameters:

  • builder NodeBuilder

Returns: string

Calls:

  • this.getBuiltinName
Code
getHash( builder ) {

        return this.getBuiltinName( builder );

    }

ComputeBuiltinNode.getNodeType(): string

JSDoc:

/**
     * This method is overwritten since the node type is simply derived from `nodeType`..
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The node type.
     */

Returns: string

Code
getNodeType( /*builder*/ ) {

        return this.nodeType;

    }

ComputeBuiltinNode.setBuiltinName(builtinName: string): ComputeBuiltinNode

JSDoc:

/**
     * Sets the builtin name.
     *
     * @param {string} builtinName - The built-in name.
     * @return {ComputeBuiltinNode} A reference to this node.
     */

Parameters:

  • builtinName string

Returns: ComputeBuiltinNode

Code
setBuiltinName( builtinName ) {

        this._builtinName = builtinName;

        return this;

    }

ComputeBuiltinNode.getBuiltinName(): string

JSDoc:

/**
     * Returns the builtin name.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The builtin name.
     */

Returns: string

Code
getBuiltinName( /*builder*/ ) {

        return this._builtinName;

    }

ComputeBuiltinNode.hasBuiltin(builder: NodeBuilder): boolean

JSDoc:

/**
     * Whether the current node builder has the builtin or not.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {boolean} Whether the builder has the builtin or not.
     */

Parameters:

  • builder NodeBuilder

Returns: boolean

Calls:

  • builder.hasBuiltin
Code
hasBuiltin( builder ) {

        return builder.hasBuiltin( this._builtinName );

    }

ComputeBuiltinNode.generate(builder: any, output: any): any

Parameters:

  • builder any
  • output any

Returns: any

Calls:

  • this.getBuiltinName
  • this.getNodeType
  • builder.format
  • console.warn
  • builder.generateConst
Code
generate( builder, output ) {

        const builtinName = this.getBuiltinName( builder );
        const nodeType = this.getNodeType( builder );

        if ( builder.shaderStage === 'compute' ) {

            return builder.format( builtinName, nodeType, output );

        } else {

            console.warn( `ComputeBuiltinNode: Compute built-in value ${builtinName} can not be accessed in the ${builder.shaderStage} stage` );
            return builder.generateConst( nodeType );

        }

    }

ComputeBuiltinNode.serialize(data: any): void

Parameters:

  • data any

Returns: void

Calls:

  • super.serialize
Code
serialize( data ) {

        super.serialize( data );

        data.global = this.global;
        data._builtinName = this._builtinName;

    }

ComputeBuiltinNode.deserialize(data: any): void

Parameters:

  • data any

Returns: void

Calls:

  • super.deserialize
Code
deserialize( data ) {

        super.deserialize( data );

        this.global = data.global;
        this._builtinName = data._builtinName;

    }

computeBuiltin(name: string, nodeType: string): ComputeBuiltinNode

Parameters:

  • name string
  • nodeType string

Returns: ComputeBuiltinNode

Calls:

  • nodeObject (from ../tsl/TSLBase.js)
Code
( name, nodeType ) => nodeObject( new ComputeBuiltinNode( name, nodeType ) )

Classes

ComputeBuiltinNode

Class Code
class ComputeBuiltinNode extends Node {

    static get type() {

        return 'ComputeBuiltinNode';

    }

    /**
     * Constructs a new compute builtin node.
     *
     * @param {string} builtinName - The built-in name.
     * @param {string} nodeType - The node type.
     */
    constructor( builtinName, nodeType ) {

        super( nodeType );

        /**
         * The built-in name.
         *
         * @private
         * @type {string}
         */
        this._builtinName = builtinName;

    }

    /**
     * This method is overwritten since hash is derived from the built-in name.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The hash.
     */
    getHash( builder ) {

        return this.getBuiltinName( builder );

    }

    /**
     * This method is overwritten since the node type is simply derived from `nodeType`..
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The node type.
     */
    getNodeType( /*builder*/ ) {

        return this.nodeType;

    }

    /**
     * Sets the builtin name.
     *
     * @param {string} builtinName - The built-in name.
     * @return {ComputeBuiltinNode} A reference to this node.
     */
    setBuiltinName( builtinName ) {

        this._builtinName = builtinName;

        return this;

    }

    /**
     * Returns the builtin name.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The builtin name.
     */
    getBuiltinName( /*builder*/ ) {

        return this._builtinName;

    }

    /**
     * Whether the current node builder has the builtin or not.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {boolean} Whether the builder has the builtin or not.
     */
    hasBuiltin( builder ) {

        return builder.hasBuiltin( this._builtinName );

    }

    generate( builder, output ) {

        const builtinName = this.getBuiltinName( builder );
        const nodeType = this.getNodeType( builder );

        if ( builder.shaderStage === 'compute' ) {

            return builder.format( builtinName, nodeType, output );

        } else {

            console.warn( `ComputeBuiltinNode: Compute built-in value ${builtinName} can not be accessed in the ${builder.shaderStage} stage` );
            return builder.generateConst( nodeType );

        }

    }

    serialize( data ) {

        super.serialize( data );

        data.global = this.global;
        data._builtinName = this._builtinName;

    }

    deserialize( data ) {

        super.deserialize( data );

        this.global = data.global;
        this._builtinName = data._builtinName;

    }

}

Methods

getHash(builder: NodeBuilder): string
Code
getHash( builder ) {

        return this.getBuiltinName( builder );

    }
getNodeType(): string
Code
getNodeType( /*builder*/ ) {

        return this.nodeType;

    }
setBuiltinName(builtinName: string): ComputeBuiltinNode
Code
setBuiltinName( builtinName ) {

        this._builtinName = builtinName;

        return this;

    }
getBuiltinName(): string
Code
getBuiltinName( /*builder*/ ) {

        return this._builtinName;

    }
hasBuiltin(builder: NodeBuilder): boolean
Code
hasBuiltin( builder ) {

        return builder.hasBuiltin( this._builtinName );

    }
generate(builder: any, output: any): any
Code
generate( builder, output ) {

        const builtinName = this.getBuiltinName( builder );
        const nodeType = this.getNodeType( builder );

        if ( builder.shaderStage === 'compute' ) {

            return builder.format( builtinName, nodeType, output );

        } else {

            console.warn( `ComputeBuiltinNode: Compute built-in value ${builtinName} can not be accessed in the ${builder.shaderStage} stage` );
            return builder.generateConst( nodeType );

        }

    }
serialize(data: any): void
Code
serialize( data ) {

        super.serialize( data );

        data.global = this.global;
        data._builtinName = this._builtinName;

    }
deserialize(data: any): void
Code
deserialize( data ) {

        super.deserialize( data );

        this.global = data.global;
        this._builtinName = data._builtinName;

    }