three-stdlib 2.8.9 → 2.8.10
Sign up to get free protection for your applications and to get access to all the features.
- package/Nodes-607e9ed8.js +471 -0
- package/Nodes-627a8bdf.js +1 -0
- package/index.cjs.js +1 -1
- package/index.d.ts +0 -75
- package/index.js +70 -76
- package/loaders/NodeMaterialLoader.cjs.js +1 -1
- package/loaders/NodeMaterialLoader.js +2 -136
- package/nodes/Nodes.cjs.js +1 -1
- package/nodes/Nodes.js +203 -76
- package/nodes/ShaderNode.cjs.js +1 -0
- package/nodes/ShaderNode.js +308 -0
- package/nodes/accessors/BufferNode.cjs.js +1 -0
- package/nodes/accessors/BufferNode.js +18 -0
- package/nodes/accessors/CameraNode.cjs.js +1 -1
- package/nodes/accessors/CameraNode.js +32 -138
- package/nodes/accessors/CubeTextureNode.cjs.js +1 -0
- package/nodes/accessors/CubeTextureNode.js +53 -0
- package/nodes/accessors/MaterialNode.cjs.js +1 -0
- package/nodes/accessors/MaterialNode.js +80 -0
- package/nodes/accessors/MaterialReferenceNode.cjs.js +1 -0
- package/nodes/accessors/MaterialReferenceNode.js +16 -0
- package/nodes/accessors/ModelNode.cjs.js +1 -0
- package/nodes/accessors/ModelNode.js +10 -0
- package/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
- package/nodes/accessors/ModelViewProjectionNode.js +22 -0
- package/nodes/accessors/NormalNode.cjs.js +1 -1
- package/nodes/accessors/NormalNode.js +48 -78
- package/nodes/accessors/Object3DNode.cjs.js +1 -0
- package/nodes/accessors/Object3DNode.js +85 -0
- package/nodes/accessors/PointUVNode.cjs.js +1 -0
- package/nodes/accessors/PointUVNode.js +16 -0
- package/nodes/accessors/PositionNode.cjs.js +1 -1
- package/nodes/accessors/PositionNode.js +49 -87
- package/nodes/accessors/ReferenceNode.cjs.js +1 -0
- package/nodes/accessors/ReferenceNode.js +43 -0
- package/nodes/accessors/ReflectNode.cjs.js +1 -1
- package/nodes/accessors/ReflectNode.js +35 -98
- package/nodes/accessors/SkinningNode.cjs.js +1 -0
- package/nodes/accessors/SkinningNode.js +59 -0
- package/nodes/accessors/TextureNode.cjs.js +1 -0
- package/nodes/accessors/TextureNode.js +68 -0
- package/nodes/accessors/UVNode.cjs.js +1 -1
- package/nodes/accessors/UVNode.js +20 -38
- package/nodes/core/ArrayUniformNode.cjs.js +1 -0
- package/nodes/core/ArrayUniformNode.js +17 -0
- package/nodes/core/AttributeNode.cjs.js +1 -1
- package/nodes/core/AttributeNode.js +31 -40
- package/nodes/core/BypassNode.cjs.js +1 -0
- package/nodes/core/BypassNode.js +28 -0
- package/nodes/core/CodeNode.cjs.js +1 -0
- package/nodes/core/CodeNode.js +35 -0
- package/nodes/core/ConstNode.cjs.js +1 -1
- package/nodes/core/ConstNode.js +10 -78
- package/nodes/core/ContextNode.cjs.js +1 -0
- package/nodes/core/ContextNode.js +26 -0
- package/nodes/core/ExpressionNode.cjs.js +1 -1
- package/nodes/core/ExpressionNode.js +19 -8
- package/nodes/core/FunctionCallNode.cjs.js +1 -1
- package/nodes/core/FunctionCallNode.js +31 -60
- package/nodes/core/FunctionNode.cjs.js +1 -1
- package/nodes/core/FunctionNode.js +45 -166
- package/nodes/core/InputNode.cjs.js +1 -1
- package/nodes/core/InputNode.js +43 -57
- package/nodes/core/Node.cjs.js +1 -1
- package/nodes/core/Node.js +155 -113
- package/nodes/core/NodeAttribute.cjs.js +1 -0
- package/nodes/core/NodeAttribute.js +11 -0
- package/nodes/core/NodeBuilder.cjs.js +1 -1
- package/nodes/core/NodeBuilder.js +422 -548
- package/nodes/core/NodeCode.cjs.js +1 -0
- package/nodes/core/NodeCode.js +13 -0
- package/nodes/core/NodeFrame.cjs.js +1 -1
- package/nodes/core/NodeFrame.js +34 -27
- package/nodes/core/NodeFunction.cjs.js +1 -0
- package/nodes/core/NodeFunction.js +17 -0
- package/nodes/core/NodeFunctionInput.cjs.js +1 -0
- package/nodes/core/NodeFunctionInput.js +14 -0
- package/nodes/core/NodeKeywords.cjs.js +1 -0
- package/nodes/core/NodeKeywords.js +54 -0
- package/nodes/core/NodeParser.cjs.js +1 -0
- package/nodes/core/NodeParser.js +8 -0
- package/nodes/core/NodeUniform.cjs.js +1 -1
- package/nodes/core/NodeUniform.js +18 -17
- package/nodes/core/NodeUtils.cjs.js +1 -1
- package/nodes/core/NodeUtils.js +55 -35
- package/nodes/core/NodeVar.cjs.js +1 -0
- package/nodes/core/NodeVar.js +11 -0
- package/nodes/core/NodeVary.cjs.js +1 -0
- package/nodes/core/NodeVary.js +11 -0
- package/nodes/core/PropertyNode.cjs.js +1 -0
- package/nodes/core/PropertyNode.js +26 -0
- package/nodes/core/TempNode.cjs.js +1 -1
- package/nodes/core/TempNode.js +21 -88
- package/nodes/core/UniformNode.cjs.js +1 -0
- package/nodes/core/UniformNode.js +28 -0
- package/nodes/core/VarNode.cjs.js +1 -1
- package/nodes/core/VarNode.js +28 -35
- package/nodes/core/VaryNode.cjs.js +1 -0
- package/nodes/core/VaryNode.js +38 -0
- package/nodes/core/constants.cjs.js +1 -0
- package/nodes/core/constants.js +11 -0
- package/nodes/display/ColorSpaceNode.cjs.js +1 -0
- package/nodes/display/ColorSpaceNode.js +67 -0
- package/nodes/display/NormalMapNode.cjs.js +1 -0
- package/nodes/display/NormalMapNode.js +71 -0
- package/nodes/fog/FogNode.cjs.js +1 -0
- package/nodes/fog/FogNode.js +18 -0
- package/nodes/fog/FogRangeNode.cjs.js +1 -0
- package/nodes/fog/FogRangeNode.js +20 -0
- package/nodes/functions/BSDFs.cjs.js +1 -0
- package/nodes/functions/BSDFs.js +121 -0
- package/nodes/functions/PhysicalMaterialFunctions.cjs.js +1 -0
- package/nodes/functions/PhysicalMaterialFunctions.js +57 -0
- package/nodes/lights/LightContextNode.cjs.js +1 -0
- package/nodes/lights/LightContextNode.js +43 -0
- package/nodes/lights/LightNode.cjs.js +1 -0
- package/nodes/lights/LightNode.js +61 -0
- package/nodes/lights/LightsNode.cjs.js +1 -0
- package/nodes/lights/LightsNode.js +77 -0
- package/nodes/loaders/NodeLoader.cjs.js +1 -0
- package/nodes/loaders/NodeLoader.js +80 -0
- package/nodes/loaders/NodeMaterialLoader.cjs.js +1 -0
- package/nodes/loaders/NodeMaterialLoader.js +29 -0
- package/nodes/loaders/NodeObjectLoader.cjs.js +1 -0
- package/nodes/loaders/NodeObjectLoader.js +49 -0
- package/nodes/materials/LineBasicNodeMaterial.cjs.js +1 -0
- package/nodes/materials/LineBasicNodeMaterial.js +31 -0
- package/nodes/materials/Materials.cjs.js +1 -0
- package/nodes/materials/Materials.js +27 -0
- package/nodes/materials/MeshBasicNodeMaterial.cjs.js +1 -0
- package/nodes/materials/MeshBasicNodeMaterial.js +32 -0
- package/nodes/materials/MeshStandardNodeMaterial.cjs.js +1 -1
- package/nodes/materials/MeshStandardNodeMaterial.js +41 -13
- package/nodes/materials/NodeMaterial.cjs.js +1 -1
- package/nodes/materials/NodeMaterial.js +67 -140
- package/nodes/materials/PointsNodeMaterial.cjs.js +1 -0
- package/nodes/materials/PointsNodeMaterial.js +34 -0
- package/nodes/math/CondNode.cjs.js +1 -1
- package/nodes/math/CondNode.js +33 -74
- package/nodes/math/MathNode.cjs.js +1 -1
- package/nodes/math/MathNode.js +193 -193
- package/nodes/math/OperatorNode.cjs.js +1 -1
- package/nodes/math/OperatorNode.js +116 -52
- package/nodes/parsers/GLSLNodeFunction.cjs.js +1 -0
- package/nodes/parsers/GLSLNodeFunction.js +101 -0
- package/nodes/parsers/GLSLNodeParser.cjs.js +1 -0
- package/nodes/parsers/GLSLNodeParser.js +13 -0
- package/nodes/parsers/WGSLNodeFunction.cjs.js +1 -0
- package/nodes/parsers/WGSLNodeFunction.js +71 -0
- package/nodes/parsers/WGSLNodeParser.cjs.js +1 -0
- package/nodes/parsers/WGSLNodeParser.js +13 -0
- package/nodes/procedural/CheckerNode.cjs.js +1 -1
- package/nodes/procedural/CheckerNode.js +22 -40
- package/nodes/utils/ArrayElementNode.cjs.js +1 -0
- package/nodes/utils/ArrayElementNode.js +22 -0
- package/nodes/utils/ConvertNode.cjs.js +1 -0
- package/nodes/utils/ConvertNode.js +29 -0
- package/nodes/utils/JoinNode.cjs.js +1 -1
- package/nodes/utils/JoinNode.js +19 -69
- package/nodes/utils/MatcapUVNode.cjs.js +1 -0
- package/nodes/utils/MatcapUVNode.js +18 -0
- package/nodes/utils/OscNode.cjs.js +1 -0
- package/nodes/utils/OscNode.js +55 -0
- package/nodes/utils/SplitNode.cjs.js +1 -0
- package/nodes/utils/SplitNode.js +58 -0
- package/nodes/utils/SpriteSheetUVNode.cjs.js +1 -0
- package/nodes/utils/SpriteSheetUVNode.js +39 -0
- package/nodes/utils/TimerNode.cjs.js +1 -1
- package/nodes/utils/TimerNode.js +38 -56
- package/package.json +1 -1
- package/Nodes-894ac9dc.js +0 -1
- package/Nodes-af575af7.js +0 -157
- package/nodes/accessors/ColorsNode.cjs.js +0 -1
- package/nodes/accessors/ColorsNode.d.ts +0 -10
- package/nodes/accessors/ColorsNode.js +0 -40
- package/nodes/accessors/LightNode.cjs.js +0 -1
- package/nodes/accessors/LightNode.d.ts +0 -12
- package/nodes/accessors/LightNode.js +0 -41
- package/nodes/accessors/ResolutionNode.cjs.js +0 -1
- package/nodes/accessors/ResolutionNode.d.ts +0 -14
- package/nodes/accessors/ResolutionNode.js +0 -41
- package/nodes/accessors/ScreenUVNode.cjs.js +0 -1
- package/nodes/accessors/ScreenUVNode.d.ts +0 -11
- package/nodes/accessors/ScreenUVNode.js +0 -43
- package/nodes/core/NodeLib.cjs.js +0 -1
- package/nodes/core/NodeLib.d.ts +0 -22
- package/nodes/core/NodeLib.js +0 -37
- package/nodes/core/StructNode.cjs.js +0 -1
- package/nodes/core/StructNode.d.ts +0 -19
- package/nodes/core/StructNode.js +0 -72
- package/nodes/effects/BlurNode.cjs.js +0 -1
- package/nodes/effects/BlurNode.d.ts +0 -31
- package/nodes/effects/BlurNode.js +0 -100
- package/nodes/effects/ColorAdjustmentNode.cjs.js +0 -1
- package/nodes/effects/ColorAdjustmentNode.d.ts +0 -27
- package/nodes/effects/ColorAdjustmentNode.js +0 -73
- package/nodes/effects/LuminanceNode.cjs.js +0 -1
- package/nodes/effects/LuminanceNode.d.ts +0 -18
- package/nodes/effects/LuminanceNode.js +0 -46
- package/nodes/inputs/BoolNode.cjs.js +0 -1
- package/nodes/inputs/BoolNode.d.ts +0 -19
- package/nodes/inputs/BoolNode.js +0 -36
- package/nodes/inputs/ColorNode.cjs.js +0 -1
- package/nodes/inputs/ColorNode.d.ts +0 -21
- package/nodes/inputs/ColorNode.js +0 -41
- package/nodes/inputs/CubeTextureNode.cjs.js +0 -1
- package/nodes/inputs/CubeTextureNode.d.ts +0 -17
- package/nodes/inputs/CubeTextureNode.js +0 -79
- package/nodes/inputs/FloatNode.cjs.js +0 -1
- package/nodes/inputs/FloatNode.d.ts +0 -19
- package/nodes/inputs/FloatNode.js +0 -36
- package/nodes/inputs/IntNode.cjs.js +0 -1
- package/nodes/inputs/IntNode.d.ts +0 -19
- package/nodes/inputs/IntNode.js +0 -36
- package/nodes/inputs/Matrix3Node.cjs.js +0 -1
- package/nodes/inputs/Matrix3Node.d.ts +0 -22
- package/nodes/inputs/Matrix3Node.js +0 -46
- package/nodes/inputs/Matrix4Node.cjs.js +0 -1
- package/nodes/inputs/Matrix4Node.d.ts +0 -22
- package/nodes/inputs/Matrix4Node.js +0 -46
- package/nodes/inputs/PropertyNode.cjs.js +0 -1
- package/nodes/inputs/PropertyNode.d.ts +0 -10
- package/nodes/inputs/PropertyNode.js +0 -35
- package/nodes/inputs/RTTNode.cjs.js +0 -1
- package/nodes/inputs/RTTNode.d.ts +0 -27
- package/nodes/inputs/RTTNode.js +0 -103
- package/nodes/inputs/ReflectorNode.cjs.js +0 -1
- package/nodes/inputs/ReflectorNode.d.ts +0 -21
- package/nodes/inputs/ReflectorNode.js +0 -60
- package/nodes/inputs/ScreenNode.cjs.js +0 -1
- package/nodes/inputs/ScreenNode.d.ts +0 -11
- package/nodes/inputs/ScreenNode.js +0 -20
- package/nodes/inputs/TextureNode.cjs.js +0 -1
- package/nodes/inputs/TextureNode.d.ts +0 -20
- package/nodes/inputs/TextureNode.js +0 -83
- package/nodes/inputs/Vector2Node.cjs.js +0 -1
- package/nodes/inputs/Vector2Node.d.ts +0 -21
- package/nodes/inputs/Vector2Node.js +0 -40
- package/nodes/inputs/Vector3Node.cjs.js +0 -1
- package/nodes/inputs/Vector3Node.d.ts +0 -21
- package/nodes/inputs/Vector3Node.js +0 -41
- package/nodes/inputs/Vector4Node.cjs.js +0 -1
- package/nodes/inputs/Vector4Node.d.ts +0 -21
- package/nodes/inputs/Vector4Node.js +0 -42
- package/nodes/materials/BasicNodeMaterial.cjs.js +0 -1
- package/nodes/materials/BasicNodeMaterial.d.ts +0 -11
- package/nodes/materials/BasicNodeMaterial.js +0 -15
- package/nodes/materials/PhongNodeMaterial.cjs.js +0 -1
- package/nodes/materials/PhongNodeMaterial.d.ts +0 -21
- package/nodes/materials/PhongNodeMaterial.js +0 -15
- package/nodes/materials/SpriteNodeMaterial.cjs.js +0 -1
- package/nodes/materials/SpriteNodeMaterial.d.ts +0 -12
- package/nodes/materials/SpriteNodeMaterial.js +0 -15
- package/nodes/materials/StandardNodeMaterial.cjs.js +0 -1
- package/nodes/materials/StandardNodeMaterial.d.ts +0 -25
- package/nodes/materials/StandardNodeMaterial.js +0 -15
- package/nodes/materials/nodes/BasicNode.cjs.js +0 -1
- package/nodes/materials/nodes/BasicNode.d.ts +0 -15
- package/nodes/materials/nodes/BasicNode.js +0 -91
- package/nodes/materials/nodes/MeshStandardNode.cjs.js +0 -1
- package/nodes/materials/nodes/MeshStandardNode.d.ts +0 -25
- package/nodes/materials/nodes/MeshStandardNode.js +0 -81
- package/nodes/materials/nodes/PhongNode.cjs.js +0 -1
- package/nodes/materials/nodes/PhongNode.d.ts +0 -14
- package/nodes/materials/nodes/PhongNode.js +0 -212
- package/nodes/materials/nodes/RawNode.cjs.js +0 -1
- package/nodes/materials/nodes/RawNode.d.ts +0 -10
- package/nodes/materials/nodes/RawNode.js +0 -42
- package/nodes/materials/nodes/SpriteNode.cjs.js +0 -1
- package/nodes/materials/nodes/SpriteNode.d.ts +0 -13
- package/nodes/materials/nodes/SpriteNode.js +0 -113
- package/nodes/materials/nodes/StandardNode.cjs.js +0 -1
- package/nodes/materials/nodes/StandardNode.d.ts +0 -15
- package/nodes/materials/nodes/StandardNode.js +0 -336
- package/nodes/misc/BumpMapNode.cjs.js +0 -1
- package/nodes/misc/BumpMapNode.d.ts +0 -21
- package/nodes/misc/BumpMapNode.js +0 -80
- package/nodes/misc/NormalMapNode.cjs.js +0 -1
- package/nodes/misc/NormalMapNode.d.ts +0 -19
- package/nodes/misc/NormalMapNode.js +0 -102
- package/nodes/misc/TextureCubeNode.cjs.js +0 -1
- package/nodes/misc/TextureCubeNode.d.ts +0 -21
- package/nodes/misc/TextureCubeNode.js +0 -52
- package/nodes/misc/TextureCubeUVNode.cjs.js +0 -1
- package/nodes/misc/TextureCubeUVNode.d.ts +0 -18
- package/nodes/misc/TextureCubeUVNode.js +0 -229
- package/nodes/postprocessing/NodePass.cjs.js +0 -1
- package/nodes/postprocessing/NodePass.d.ts +0 -15
- package/nodes/postprocessing/NodePass.js +0 -61
- package/nodes/postprocessing/NodePostProcessing.cjs.js +0 -1
- package/nodes/postprocessing/NodePostProcessing.d.ts +0 -26
- package/nodes/postprocessing/NodePostProcessing.js +0 -91
- package/nodes/procedural/NoiseNode.cjs.js +0 -1
- package/nodes/procedural/NoiseNode.d.ts +0 -17
- package/nodes/procedural/NoiseNode.js +0 -43
- package/nodes/utils/BypassNode.cjs.js +0 -1
- package/nodes/utils/BypassNode.d.ts +0 -11
- package/nodes/utils/BypassNode.js +0 -55
- package/nodes/utils/ColorSpaceNode.cjs.js +0 -1
- package/nodes/utils/ColorSpaceNode.d.ts +0 -55
- package/nodes/utils/ColorSpaceNode.js +0 -106
- package/nodes/utils/MaxMIPLevelNode.cjs.js +0 -1
- package/nodes/utils/MaxMIPLevelNode.d.ts +0 -11
- package/nodes/utils/MaxMIPLevelNode.js +0 -38
- package/nodes/utils/SpecularMIPLevelNode.cjs.js +0 -1
- package/nodes/utils/SpecularMIPLevelNode.d.ts +0 -17
- package/nodes/utils/SpecularMIPLevelNode.js +0 -61
- package/nodes/utils/SubSlotNode.cjs.js +0 -1
- package/nodes/utils/SubSlotNode.js +0 -53
- package/nodes/utils/SwitchNode.cjs.js +0 -1
- package/nodes/utils/SwitchNode.d.ts +0 -11
- package/nodes/utils/SwitchNode.js +0 -69
- package/nodes/utils/UVTransformNode.cjs.js +0 -1
- package/nodes/utils/UVTransformNode.d.ts +0 -15
- package/nodes/utils/UVTransformNode.js +0 -46
- package/nodes/utils/VelocityNode.cjs.js +0 -1
- package/nodes/utils/VelocityNode.d.ts +0 -28
- package/nodes/utils/VelocityNode.js +0 -115
@@ -0,0 +1,101 @@
|
|
1
|
+
import NodeFunction from '../core/NodeFunction.js';
|
2
|
+
import NodeFunctionInput from '../core/NodeFunctionInput.js';
|
3
|
+
|
4
|
+
const declarationRegexp = /^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i;
|
5
|
+
const propertiesRegexp = /[a-z_0-9]+/gi;
|
6
|
+
const pragmaMain = '#pragma main';
|
7
|
+
|
8
|
+
const parse = source => {
|
9
|
+
source = source.trim();
|
10
|
+
const pragmaMainIndex = source.indexOf(pragmaMain);
|
11
|
+
const mainCode = pragmaMainIndex !== -1 ? source.slice(pragmaMainIndex + pragmaMain.length) : source;
|
12
|
+
const declaration = mainCode.match(declarationRegexp);
|
13
|
+
|
14
|
+
if (declaration !== null && declaration.length === 5) {
|
15
|
+
// tokenizer
|
16
|
+
const inputsCode = declaration[4];
|
17
|
+
const propsMatches = [];
|
18
|
+
let nameMatch = null;
|
19
|
+
|
20
|
+
while ((nameMatch = propertiesRegexp.exec(inputsCode)) !== null) {
|
21
|
+
propsMatches.push(nameMatch);
|
22
|
+
} // parser
|
23
|
+
|
24
|
+
|
25
|
+
const inputs = [];
|
26
|
+
let i = 0;
|
27
|
+
|
28
|
+
while (i < propsMatches.length) {
|
29
|
+
const isConst = propsMatches[i][0] === 'const';
|
30
|
+
|
31
|
+
if (isConst === true) {
|
32
|
+
i++;
|
33
|
+
}
|
34
|
+
|
35
|
+
let qualifier = propsMatches[i][0];
|
36
|
+
|
37
|
+
if (qualifier === 'in' || qualifier === 'out' || qualifier === 'inout') {
|
38
|
+
i++;
|
39
|
+
} else {
|
40
|
+
qualifier = '';
|
41
|
+
}
|
42
|
+
|
43
|
+
const type = propsMatches[i++][0];
|
44
|
+
let count = Number.parseInt(propsMatches[i][0]);
|
45
|
+
if (Number.isNaN(count) === false) i++;else count = null;
|
46
|
+
const name = propsMatches[i++][0];
|
47
|
+
inputs.push(new NodeFunctionInput(type, name, count, qualifier, isConst));
|
48
|
+
} //
|
49
|
+
|
50
|
+
|
51
|
+
const blockCode = mainCode.substring(declaration[0].length);
|
52
|
+
const name = declaration[3] !== undefined ? declaration[3] : '';
|
53
|
+
const type = declaration[2];
|
54
|
+
const presicion = declaration[1] !== undefined ? declaration[1] : '';
|
55
|
+
const headerCode = pragmaMainIndex !== -1 ? source.slice(0, pragmaMainIndex) : '';
|
56
|
+
return {
|
57
|
+
type,
|
58
|
+
inputs,
|
59
|
+
name,
|
60
|
+
presicion,
|
61
|
+
inputsCode,
|
62
|
+
blockCode,
|
63
|
+
headerCode
|
64
|
+
};
|
65
|
+
} else {
|
66
|
+
throw new Error('FunctionNode: Function is not a GLSL code.');
|
67
|
+
}
|
68
|
+
};
|
69
|
+
|
70
|
+
class GLSLNodeFunction extends NodeFunction {
|
71
|
+
constructor(source) {
|
72
|
+
const {
|
73
|
+
type,
|
74
|
+
inputs,
|
75
|
+
name,
|
76
|
+
presicion,
|
77
|
+
inputsCode,
|
78
|
+
blockCode,
|
79
|
+
headerCode
|
80
|
+
} = parse(source);
|
81
|
+
super(type, inputs, name, presicion);
|
82
|
+
this.inputsCode = inputsCode;
|
83
|
+
this.blockCode = blockCode;
|
84
|
+
this.headerCode = headerCode;
|
85
|
+
}
|
86
|
+
|
87
|
+
getCode(name = this.name) {
|
88
|
+
const headerCode = this.headerCode;
|
89
|
+
const presicion = this.presicion;
|
90
|
+
let declarationCode = `${this.type} ${name} ( ${this.inputsCode.trim()} )`;
|
91
|
+
|
92
|
+
if (presicion !== '') {
|
93
|
+
declarationCode = `${presicion} ${declarationCode}`;
|
94
|
+
}
|
95
|
+
|
96
|
+
return headerCode + declarationCode + this.blockCode;
|
97
|
+
}
|
98
|
+
|
99
|
+
}
|
100
|
+
|
101
|
+
export default GLSLNodeFunction;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var e=require("../core/NodeParser.cjs.js"),r=require("./GLSLNodeFunction.cjs.js");require("../core/NodeFunction.cjs.js"),require("../core/NodeFunctionInput.cjs.js");module.exports=class extends e{parseFunction(e){return new r(e)}};
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import NodeParser from '../core/NodeParser.js';
|
2
|
+
import GLSLNodeFunction from './GLSLNodeFunction.js';
|
3
|
+
import '../core/NodeFunction.js';
|
4
|
+
import '../core/NodeFunctionInput.js';
|
5
|
+
|
6
|
+
class GLSLNodeParser extends NodeParser {
|
7
|
+
parseFunction(source) {
|
8
|
+
return new GLSLNodeFunction(source);
|
9
|
+
}
|
10
|
+
|
11
|
+
}
|
12
|
+
|
13
|
+
export default GLSLNodeParser;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var t=require("../core/NodeFunction.cjs.js"),e=require("../core/NodeFunctionInput.cjs.js");const n=/^fn\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)\s*\-\>\s*([a-z_0-9]+)?/i,s=/[a-z_0-9]+/gi;module.exports=class extends t{constructor(t){const{type:o,inputs:i,name:c,inputsCode:u,blockCode:r}=(t=>{const o=(t=t.trim()).match(n);if(null!==o&&4===o.length){const n=o[2],i=[];let c=null;for(;null!==(c=s.exec(n));)i.push(c);const u=[];let r=0;for(;r<i.length;){const t=i[r++][0],n=i[r++][0];r<i.length&&!0===/^[fui]\d{2}$/.test(i[r][0])&&r++,u.push(new e(n,t))}const l=t.substring(o[0].length),d=void 0!==o[1]?o[1]:"";return{type:o[3],inputs:u,name:d,inputsCode:n,blockCode:l}}throw new Error("FunctionNode: Function is not a WGSL code.")})(t);super(o,i,c),this.inputsCode=u,this.blockCode=r}getCode(t=this.name){return`fn ${t} ( ${this.inputsCode.trim()} ) -> ${this.type}`+this.blockCode}};
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import NodeFunction from '../core/NodeFunction.js';
|
2
|
+
import NodeFunctionInput from '../core/NodeFunctionInput.js';
|
3
|
+
|
4
|
+
const declarationRegexp = /^fn\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)\s*\-\>\s*([a-z_0-9]+)?/i;
|
5
|
+
const propertiesRegexp = /[a-z_0-9]+/gi;
|
6
|
+
|
7
|
+
const parse = source => {
|
8
|
+
source = source.trim();
|
9
|
+
const declaration = source.match(declarationRegexp);
|
10
|
+
|
11
|
+
if (declaration !== null && declaration.length === 4) {
|
12
|
+
// tokenizer
|
13
|
+
const inputsCode = declaration[2];
|
14
|
+
const propsMatches = [];
|
15
|
+
let nameMatch = null;
|
16
|
+
|
17
|
+
while ((nameMatch = propertiesRegexp.exec(inputsCode)) !== null) {
|
18
|
+
propsMatches.push(nameMatch);
|
19
|
+
} // parser
|
20
|
+
|
21
|
+
|
22
|
+
const inputs = [];
|
23
|
+
let i = 0;
|
24
|
+
|
25
|
+
while (i < propsMatches.length) {
|
26
|
+
// default
|
27
|
+
const name = propsMatches[i++][0];
|
28
|
+
const type = propsMatches[i++][0]; // precision
|
29
|
+
|
30
|
+
if (i < propsMatches.length && /^[fui]\d{2}$/.test(propsMatches[i][0]) === true) i++; // add input
|
31
|
+
|
32
|
+
inputs.push(new NodeFunctionInput(type, name));
|
33
|
+
} //
|
34
|
+
|
35
|
+
|
36
|
+
const blockCode = source.substring(declaration[0].length);
|
37
|
+
const name = declaration[1] !== undefined ? declaration[1] : '';
|
38
|
+
const type = declaration[3];
|
39
|
+
return {
|
40
|
+
type,
|
41
|
+
inputs,
|
42
|
+
name,
|
43
|
+
inputsCode,
|
44
|
+
blockCode
|
45
|
+
};
|
46
|
+
} else {
|
47
|
+
throw new Error('FunctionNode: Function is not a WGSL code.');
|
48
|
+
}
|
49
|
+
};
|
50
|
+
|
51
|
+
class WGSLNodeFunction extends NodeFunction {
|
52
|
+
constructor(source) {
|
53
|
+
const {
|
54
|
+
type,
|
55
|
+
inputs,
|
56
|
+
name,
|
57
|
+
inputsCode,
|
58
|
+
blockCode
|
59
|
+
} = parse(source);
|
60
|
+
super(type, inputs, name);
|
61
|
+
this.inputsCode = inputsCode;
|
62
|
+
this.blockCode = blockCode;
|
63
|
+
}
|
64
|
+
|
65
|
+
getCode(name = this.name) {
|
66
|
+
return `fn ${name} ( ${this.inputsCode.trim()} ) -> ${this.type}` + this.blockCode;
|
67
|
+
}
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
export default WGSLNodeFunction;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var e=require("../core/NodeParser.cjs.js"),r=require("./WGSLNodeFunction.cjs.js");require("../core/NodeFunction.cjs.js"),require("../core/NodeFunctionInput.cjs.js");module.exports=class extends e{parseFunction(e){return new r(e)}};
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import NodeParser from '../core/NodeParser.js';
|
2
|
+
import WGSLNodeFunction from './WGSLNodeFunction.js';
|
3
|
+
import '../core/NodeFunction.js';
|
4
|
+
import '../core/NodeFunctionInput.js';
|
5
|
+
|
6
|
+
class WGSLNodeParser extends NodeParser {
|
7
|
+
parseFunction(source) {
|
8
|
+
return new WGSLNodeFunction(source);
|
9
|
+
}
|
10
|
+
|
11
|
+
}
|
12
|
+
|
13
|
+
export default WGSLNodeParser;
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";
|
1
|
+
"use strict";var e=require("../core/Node.cjs.js"),r=require("../ShaderNode.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");const s=new r.ShaderNode((e=>{const s=r.mul(e.uv,2),o=r.floor(s.x),c=r.floor(s.y),j=r.mod(r.add(o,c),2);return r.sign(j)}));module.exports=class extends e{constructor(e=r.uv()){super("float"),this.uvNode=e}generate(e){return s({uv:this.uvNode}).build(e)}};
|
@@ -1,44 +1,26 @@
|
|
1
|
-
import
|
2
|
-
import {
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
CheckerNode
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
return {
|
18
|
-
checker: checker
|
19
|
-
};
|
20
|
-
}();
|
21
|
-
|
22
|
-
CheckerNode.prototype.generate = function (builder, output) {
|
23
|
-
var snoise = builder.include(CheckerNode.Nodes.checker);
|
24
|
-
return builder.format(snoise + '( ' + this.uv.build(builder, 'v2') + ' )', this.getType(builder), output);
|
25
|
-
};
|
26
|
-
|
27
|
-
CheckerNode.prototype.copy = function (source) {
|
28
|
-
TempNode.prototype.copy.call(this, source);
|
29
|
-
this.uv = source.uv;
|
30
|
-
return this;
|
31
|
-
};
|
32
|
-
|
33
|
-
CheckerNode.prototype.toJSON = function (meta) {
|
34
|
-
var data = this.getJSONNode(meta);
|
1
|
+
import Node from '../core/Node.js';
|
2
|
+
import { ShaderNode, mul, floor, mod, add, sign, uv } from '../ShaderNode.js';
|
3
|
+
|
4
|
+
const checkerShaderNode = new ShaderNode(inputs => {
|
5
|
+
const uv = mul(inputs.uv, 2.0);
|
6
|
+
const cx = floor(uv.x);
|
7
|
+
const cy = floor(uv.y);
|
8
|
+
const result = mod(add(cx, cy), 2.0);
|
9
|
+
return sign(result);
|
10
|
+
});
|
11
|
+
|
12
|
+
class CheckerNode extends Node {
|
13
|
+
constructor(uvNode = uv()) {
|
14
|
+
super('float');
|
15
|
+
this.uvNode = uvNode;
|
16
|
+
}
|
35
17
|
|
36
|
-
|
37
|
-
|
38
|
-
|
18
|
+
generate(builder) {
|
19
|
+
return checkerShaderNode({
|
20
|
+
uv: this.uvNode
|
21
|
+
}).build(builder);
|
39
22
|
}
|
40
23
|
|
41
|
-
|
42
|
-
};
|
24
|
+
}
|
43
25
|
|
44
|
-
export
|
26
|
+
export default CheckerNode;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var e=require("../core/Node.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three");module.exports=class extends e{constructor(e,r){super(),this.node=e,this.indexNode=r}getNodeType(e){return this.node.getNodeType(e)}generate(e){return`${this.node.build(e)}[ ${this.indexNode.build(e,"int")} ]`}};
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import Node from '../core/Node.js';
|
2
|
+
|
3
|
+
class ArrayElementNode extends Node {
|
4
|
+
constructor(node, indexNode) {
|
5
|
+
super();
|
6
|
+
this.node = node;
|
7
|
+
this.indexNode = indexNode;
|
8
|
+
}
|
9
|
+
|
10
|
+
getNodeType(builder) {
|
11
|
+
return this.node.getNodeType(builder);
|
12
|
+
}
|
13
|
+
|
14
|
+
generate(builder) {
|
15
|
+
const nodeSnippet = this.node.build(builder);
|
16
|
+
const indexSnippet = this.indexNode.build(builder, 'int');
|
17
|
+
return `${nodeSnippet}[ ${indexSnippet} ]`;
|
18
|
+
}
|
19
|
+
|
20
|
+
}
|
21
|
+
|
22
|
+
export default ArrayElementNode;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var e=require("../core/Node.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three");module.exports=class extends e{constructor(e,r){super(),this.node=e,this.convertTo=r}getNodeType(){return this.convertTo}generate(e){const r=this.convertTo,t=this.node;if(!1===e.isReference(r)){const s=e.getType(r),o=t.build(e,r);return`${e.getVectorType(s)}( ${o} )`}return t.build(e,r)}};
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import Node from '../core/Node.js';
|
2
|
+
|
3
|
+
class ConvertNode extends Node {
|
4
|
+
constructor(node, convertTo) {
|
5
|
+
super();
|
6
|
+
this.node = node;
|
7
|
+
this.convertTo = convertTo;
|
8
|
+
}
|
9
|
+
|
10
|
+
getNodeType() {
|
11
|
+
return this.convertTo;
|
12
|
+
}
|
13
|
+
|
14
|
+
generate(builder) {
|
15
|
+
const convertTo = this.convertTo;
|
16
|
+
const node = this.node;
|
17
|
+
|
18
|
+
if (builder.isReference(convertTo) === false) {
|
19
|
+
const convertToSnippet = builder.getType(convertTo);
|
20
|
+
const nodeSnippet = node.build(builder, convertTo);
|
21
|
+
return `${builder.getVectorType(convertToSnippet)}( ${nodeSnippet} )`;
|
22
|
+
} else {
|
23
|
+
return node.build(builder, convertTo);
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
}
|
28
|
+
|
29
|
+
export default ConvertNode;
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";
|
1
|
+
"use strict";var e=require("../core/Node.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three");module.exports=class extends e{constructor(e=[]){super(),this.nodes=e}getNodeType(e){return e.getTypeFromLength(this.nodes.reduce(((t,s)=>t+e.getTypeLength(s.getNodeType(e))),0))}generate(e){const t=this.getNodeType(e),s=this.nodes,r=[];for(let t=0;t<s.length;t++){const o=s[t].build(e);r.push(o)}return`${e.getType(t)}( ${r.join(", ")} )`}};
|
package/nodes/utils/JoinNode.js
CHANGED
@@ -1,79 +1,29 @@
|
|
1
|
-
import
|
2
|
-
import { NodeUtils } from '../core/NodeUtils.js';
|
1
|
+
import Node from '../core/Node.js';
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
this.x = x;
|
9
|
-
this.y = y;
|
10
|
-
this.z = z;
|
11
|
-
this.w = w;
|
12
|
-
}
|
13
|
-
|
14
|
-
JoinNode.prototype = Object.create(TempNode.prototype);
|
15
|
-
JoinNode.prototype.constructor = JoinNode;
|
16
|
-
JoinNode.prototype.nodeType = 'Join';
|
17
|
-
|
18
|
-
JoinNode.prototype.getNumElements = function () {
|
19
|
-
var i = inputs.length;
|
20
|
-
|
21
|
-
while (i--) {
|
22
|
-
if (this[inputs[i]] !== undefined) {
|
23
|
-
++i;
|
24
|
-
break;
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
return Math.max(i, 2);
|
29
|
-
};
|
30
|
-
|
31
|
-
JoinNode.prototype.getType = function (builder) {
|
32
|
-
return builder.getTypeFromLength(this.getNumElements());
|
33
|
-
};
|
34
|
-
|
35
|
-
JoinNode.prototype.generate = function (builder, output) {
|
36
|
-
var type = this.getType(builder),
|
37
|
-
length = this.getNumElements(),
|
38
|
-
outputs = [];
|
39
|
-
|
40
|
-
for (let i = 0; i < length; i++) {
|
41
|
-
var elm = this[inputs[i]];
|
42
|
-
outputs.push(elm ? elm.build(builder, 'f') : '0.0');
|
3
|
+
class JoinNode extends Node {
|
4
|
+
constructor(nodes = []) {
|
5
|
+
super();
|
6
|
+
this.nodes = nodes;
|
43
7
|
}
|
44
8
|
|
45
|
-
|
46
|
-
|
47
|
-
};
|
48
|
-
|
49
|
-
JoinNode.prototype.copy = function (source) {
|
50
|
-
TempNode.prototype.copy.call(this, source);
|
51
|
-
|
52
|
-
for (let prop in source.inputs) {
|
53
|
-
this[prop] = source.inputs[prop];
|
9
|
+
getNodeType(builder) {
|
10
|
+
return builder.getTypeFromLength(this.nodes.reduce((count, cur) => count + builder.getTypeLength(cur.getNodeType(builder)), 0));
|
54
11
|
}
|
55
12
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
var data = this.getJSONNode(meta);
|
13
|
+
generate(builder) {
|
14
|
+
const type = this.getNodeType(builder);
|
15
|
+
const nodes = this.nodes;
|
16
|
+
const snippetValues = [];
|
61
17
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
for (let i = 0; i < length; i++) {
|
68
|
-
var elm = this[inputs[i]];
|
69
|
-
|
70
|
-
if (elm) {
|
71
|
-
data.inputs[inputs[i]] = elm.toJSON(meta).uuid;
|
72
|
-
}
|
18
|
+
for (let i = 0; i < nodes.length; i++) {
|
19
|
+
const input = nodes[i];
|
20
|
+
const inputSnippet = input.build(builder);
|
21
|
+
snippetValues.push(inputSnippet);
|
73
22
|
}
|
23
|
+
|
24
|
+
return `${builder.getType(type)}( ${snippetValues.join(', ')} )`;
|
74
25
|
}
|
75
26
|
|
76
|
-
|
77
|
-
};
|
27
|
+
}
|
78
28
|
|
79
|
-
export
|
29
|
+
export default JoinNode;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var e=require("../core/TempNode.cjs.js"),r=require("../ShaderNode.cjs.js");require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("./JoinNode.cjs.js"),require("./SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("./ArrayElementNode.cjs.js"),require("./ConvertNode.cjs.js");module.exports=class extends e{constructor(){super("vec2")}generate(e){const s=r.normalize(r.join(r.positionViewDirection.z,0,r.negate(r.positionViewDirection.x))),o=r.cross(r.positionViewDirection,s);return r.add(r.mul(r.join(r.dot(s,r.transformedNormalView),r.dot(o,r.transformedNormalView)),.495),.5).build(e,this.getNodeType(e))}};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import TempNode from '../core/TempNode.js';
|
2
|
+
import { normalize, join, negate, positionViewDirection, cross, add, mul, dot, transformedNormalView } from '../ShaderNode.js';
|
3
|
+
|
4
|
+
class MatcapUVNode extends TempNode {
|
5
|
+
constructor() {
|
6
|
+
super('vec2');
|
7
|
+
}
|
8
|
+
|
9
|
+
generate(builder) {
|
10
|
+
const x = normalize(join(positionViewDirection.z, 0, negate(positionViewDirection.x)));
|
11
|
+
const y = cross(positionViewDirection, x);
|
12
|
+
const uv = add(mul(join(dot(x, transformedNormalView), dot(y, transformedNormalView)), 0.495), 0.5);
|
13
|
+
return uv.build(builder, this.getNodeType(builder));
|
14
|
+
}
|
15
|
+
|
16
|
+
}
|
17
|
+
|
18
|
+
export default MatcapUVNode;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("../core/Node.cjs.js"),s=require("./TimerNode.cjs.js"),o=require("../ShaderNode.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("./JoinNode.cjs.js"),require("./SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("./ArrayElementNode.cjs.js"),require("./ConvertNode.cjs.js");var i=c(e);class j extends r{constructor(e=j.SINE,r=new s){super(),this.method=e,this.timeNode=r}getNodeType(e){return this.timeNode.getNodeType(e)}generate(e){const r=this.method,s=this.timeNode;let c=null;return r===j.SINE?c=o.add(o.mul(o.sin(o.mul(o.add(s,.75),2*Math.PI)),.5),.5):r===j.SQUARE?c=o.round(o.fract(s)):r===j.TRIANGLE?c=o.abs(o.sub(1,o.mul(o.fract(o.add(s,.5)),2))):r===j.SAWTOOTH&&(c=o.fract(s)),c.build(e)}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}}i.default(j,"SINE","sine"),i.default(j,"SQUARE","square"),i.default(j,"TRIANGLE","triangle"),i.default(j,"SAWTOOTH","sawtooth"),module.exports=j;
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
2
|
+
import Node from '../core/Node.js';
|
3
|
+
import TimerNode from './TimerNode.js';
|
4
|
+
import { add, mul, sin, round, fract, abs, sub } from '../ShaderNode.js';
|
5
|
+
|
6
|
+
class OscNode extends Node {
|
7
|
+
constructor(method = OscNode.SINE, timeNode = new TimerNode()) {
|
8
|
+
super();
|
9
|
+
this.method = method;
|
10
|
+
this.timeNode = timeNode;
|
11
|
+
}
|
12
|
+
|
13
|
+
getNodeType(builder) {
|
14
|
+
return this.timeNode.getNodeType(builder);
|
15
|
+
}
|
16
|
+
|
17
|
+
generate(builder) {
|
18
|
+
const method = this.method;
|
19
|
+
const timeNode = this.timeNode;
|
20
|
+
let outputNode = null;
|
21
|
+
|
22
|
+
if (method === OscNode.SINE) {
|
23
|
+
outputNode = add(mul(sin(mul(add(timeNode, 0.75), Math.PI * 2)), 0.5), 0.5);
|
24
|
+
} else if (method === OscNode.SQUARE) {
|
25
|
+
outputNode = round(fract(timeNode));
|
26
|
+
} else if (method === OscNode.TRIANGLE) {
|
27
|
+
outputNode = abs(sub(1, mul(fract(add(timeNode, 0.5)), 2)));
|
28
|
+
} else if (method === OscNode.SAWTOOTH) {
|
29
|
+
outputNode = fract(timeNode);
|
30
|
+
}
|
31
|
+
|
32
|
+
return outputNode.build(builder);
|
33
|
+
}
|
34
|
+
|
35
|
+
serialize(data) {
|
36
|
+
super.serialize(data);
|
37
|
+
data.method = this.method;
|
38
|
+
}
|
39
|
+
|
40
|
+
deserialize(data) {
|
41
|
+
super.deserialize(data);
|
42
|
+
this.method = data.method;
|
43
|
+
}
|
44
|
+
|
45
|
+
}
|
46
|
+
|
47
|
+
_defineProperty(OscNode, "SINE", 'sine');
|
48
|
+
|
49
|
+
_defineProperty(OscNode, "SQUARE", 'square');
|
50
|
+
|
51
|
+
_defineProperty(OscNode, "TRIANGLE", 'triangle');
|
52
|
+
|
53
|
+
_defineProperty(OscNode, "SAWTOOTH", 'sawtooth');
|
54
|
+
|
55
|
+
export default OscNode;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var e=require("../core/Node.cjs.js"),r=require("../core/NodeBuilder.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js");module.exports=class extends e{constructor(e,r="x"){super(),this.node=e,this.components=r}getVectorLength(){let e=this.components.length;for(const t of this.components)e=Math.max(r.vector.indexOf(t)+1,e);return e}getNodeType(e){return e.getTypeFromLength(this.components.length)}generate(e){const r=this.node,t=e.getTypeLength(r.getNodeType(e));if(t>1){let s=null;this.getVectorLength()>=t&&(s=e.getTypeFromLength(this.getVectorLength()));return`${r.build(e,s)}.${this.components}`}return r.build(e)}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}};
|
@@ -0,0 +1,58 @@
|
|
1
|
+
import Node from '../core/Node.js';
|
2
|
+
import { vector } from '../core/NodeBuilder.js';
|
3
|
+
|
4
|
+
class SplitNode extends Node {
|
5
|
+
constructor(node, components = 'x') {
|
6
|
+
super();
|
7
|
+
this.node = node;
|
8
|
+
this.components = components;
|
9
|
+
}
|
10
|
+
|
11
|
+
getVectorLength() {
|
12
|
+
let vectorLength = this.components.length;
|
13
|
+
|
14
|
+
for (const c of this.components) {
|
15
|
+
vectorLength = Math.max(vector.indexOf(c) + 1, vectorLength);
|
16
|
+
}
|
17
|
+
|
18
|
+
return vectorLength;
|
19
|
+
}
|
20
|
+
|
21
|
+
getNodeType(builder) {
|
22
|
+
return builder.getTypeFromLength(this.components.length);
|
23
|
+
}
|
24
|
+
|
25
|
+
generate(builder) {
|
26
|
+
const node = this.node;
|
27
|
+
const nodeTypeLength = builder.getTypeLength(node.getNodeType(builder));
|
28
|
+
|
29
|
+
if (nodeTypeLength > 1) {
|
30
|
+
let type = null;
|
31
|
+
const componentsLength = this.getVectorLength();
|
32
|
+
|
33
|
+
if (componentsLength >= nodeTypeLength) {
|
34
|
+
// need expand the input node
|
35
|
+
type = builder.getTypeFromLength(this.getVectorLength());
|
36
|
+
}
|
37
|
+
|
38
|
+
const nodeSnippet = node.build(builder, type);
|
39
|
+
return `${nodeSnippet}.${this.components}`;
|
40
|
+
} else {
|
41
|
+
// ignore components if node is a float
|
42
|
+
return node.build(builder);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
serialize(data) {
|
47
|
+
super.serialize(data);
|
48
|
+
data.components = this.components;
|
49
|
+
}
|
50
|
+
|
51
|
+
deserialize(data) {
|
52
|
+
super.deserialize(data);
|
53
|
+
this.components = data.components;
|
54
|
+
}
|
55
|
+
|
56
|
+
}
|
57
|
+
|
58
|
+
export default SplitNode;
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var e=require("../core/Node.cjs.js"),r=require("../core/ConstNode.cjs.js"),s=require("../accessors/UVNode.cjs.js"),o=require("../math/MathNode.cjs.js"),c=require("../math/OperatorNode.cjs.js"),i=require("./SplitNode.cjs.js"),j=require("./JoinNode.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/InputNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js");module.exports=class extends e{constructor(e,o=new s,c=new r(0)){super("vec2"),this.countNode=e,this.uvNode=o,this.frameNode=c}generate(e){const s=this.countNode,t=this.uvNode,u=this.frameNode,n=new r(1),d=new i(s,"x"),N=new i(s,"y"),q=new c("*",d,N),w=new o(o.FLOOR,new o(o.MOD,u,q)),a=new c("+",w,n),h=new o(o.MOD,w,d),p=new o(o.CEIL,new c("/",a,d)),l=new c("-",N,p),m=new c("/",n,s),y=new j([new c("*",h,new i(m,"x")),new c("*",l,new i(m,"y"))]),b=new c("*",t,m);return new c("+",b,y).build(e,this.getNodeType(e))}};
|