three
Version:
JavaScript 3D library
69 lines (56 loc) • 1.45 kB
JavaScript
/**
* Base class for node functions. A derived module must be implemented
* for each supported native shader language. Similar to other `Node*` modules,
* this class is only relevant during the building process and not used
* in user-level code.
*/
class NodeFunction {
/**
* Constructs a new node function.
*
* @param {string} type - The node type. This type is the return type of the node function.
* @param {Array<NodeFunctionInput>} inputs - The function's inputs.
* @param {string} [name=''] - The function's name.
* @param {string} [precision=''] - The precision qualifier.
*/
constructor( type, inputs, name = '', precision = '' ) {
/**
* The node type. This type is the return type of the node function.
*
* @type {string}
*/
this.type = type;
/**
* The function's inputs.
*
* @type {Array<NodeFunctionInput>}
*/
this.inputs = inputs;
/**
* The name of the uniform.
*
* @type {string}
* @default ''
*/
this.name = name;
/**
* The precision qualifier.
*
* @type {string}
* @default ''
*/
this.precision = precision;
}
/**
* This method returns the native code of the node function.
*
* @abstract
* @param {string} name - The function's name.
* @return {string} A shader code.
*/
getCode( /*name = this.name*/ ) {
console.warn( 'Abstract function.' );
}
}
NodeFunction.isNodeFunction = true;
export default NodeFunction;