|
@@ -1,7 +1,7 @@
|
|
|
<!doctype html>
|
|
|
<html lang="en">
|
|
|
<head>
|
|
|
- <title>WebGL NodeMaterial</title>
|
|
|
+ <title>WebGL MaterialNode</title>
|
|
|
<meta charset="utf-8">
|
|
|
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
|
|
<style>
|
|
@@ -39,56 +39,56 @@
|
|
|
<script src="js/controls/OrbitControls.js"></script>
|
|
|
<script src="js/libs/dat.gui.min.js"></script>
|
|
|
|
|
|
- <!-- NodeMaterial Base -->
|
|
|
- <script src="js/materials/nodes/NodeGL.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeBuilder.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeRaw.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeTemp.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeInput.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeMaterial.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeConst.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeFunction.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeFunctionCall.js"></script>
|
|
|
- <script src="js/materials/nodes/NodeLib.js"></script>
|
|
|
+ <!-- MaterialNode Base -->
|
|
|
+ <script src="js/materials/nodes/GLNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/BuilderNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/RawNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/TempNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/InputNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/MaterialNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/ConstNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/FunctionNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/FunctionCallNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/LibNode.js"></script>
|
|
|
|
|
|
<!-- Accessors -->
|
|
|
- <script src="js/materials/nodes/accessors/NodeColors.js"></script>
|
|
|
- <script src="js/materials/nodes/accessors/NodeCamera.js"></script>
|
|
|
- <script src="js/materials/nodes/accessors/NodeNormal.js"></script>
|
|
|
- <script src="js/materials/nodes/accessors/NodePosition.js"></script>
|
|
|
- <script src="js/materials/nodes/accessors/NodeReflect.js"></script>
|
|
|
- <script src="js/materials/nodes/accessors/NodeUV.js"></script>
|
|
|
+ <script src="js/materials/nodes/accessors/ColorsNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/accessors/CameraNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/accessors/NormalNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/accessors/PositionNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/accessors/ReflectNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/accessors/UVNode.js"></script>
|
|
|
|
|
|
<!-- Inputs -->
|
|
|
- <script src="js/materials/nodes/inputs/NodeColor.js"></script>
|
|
|
- <script src="js/materials/nodes/inputs/NodeFloat.js"></script>
|
|
|
- <script src="js/materials/nodes/inputs/NodeInt.js"></script>
|
|
|
- <script src="js/materials/nodes/inputs/NodeVector2.js"></script>
|
|
|
- <script src="js/materials/nodes/inputs/NodeVector3.js"></script>
|
|
|
- <script src="js/materials/nodes/inputs/NodeVector4.js"></script>
|
|
|
- <script src="js/materials/nodes/inputs/NodeTexture.js"></script>
|
|
|
- <script src="js/materials/nodes/inputs/NodeCubeTexture.js"></script>
|
|
|
+ <script src="js/materials/nodes/inputs/ColorNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/inputs/FloatNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/inputs/IntNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/inputs/Vector2Node.js"></script>
|
|
|
+ <script src="js/materials/nodes/inputs/Vector3Node.js"></script>
|
|
|
+ <script src="js/materials/nodes/inputs/Vector4Node.js"></script>
|
|
|
+ <script src="js/materials/nodes/inputs/TextureNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/inputs/CubeTextureNode.js"></script>
|
|
|
|
|
|
<!-- Math -->
|
|
|
- <script src="js/materials/nodes/math/NodeMath1.js"></script>
|
|
|
- <script src="js/materials/nodes/math/NodeMath2.js"></script>
|
|
|
- <script src="js/materials/nodes/math/NodeMath3.js"></script>
|
|
|
- <script src="js/materials/nodes/math/NodeOperator.js"></script>
|
|
|
+ <script src="js/materials/nodes/math/Math1Node.js"></script>
|
|
|
+ <script src="js/materials/nodes/math/Math2Node.js"></script>
|
|
|
+ <script src="js/materials/nodes/math/Math3Node.js"></script>
|
|
|
+ <script src="js/materials/nodes/math/OperatorNode.js"></script>
|
|
|
|
|
|
<!-- Utils -->
|
|
|
- <script src="js/materials/nodes/utils/NodeJoin.js"></script>
|
|
|
- <script src="js/materials/nodes/utils/NodeSwitch.js"></script>
|
|
|
- <script src="js/materials/nodes/utils/NodeTime.js"></script>
|
|
|
- <script src="js/materials/nodes/utils/NodeRoughnessToBlinnExponent.js"></script>
|
|
|
+ <script src="js/materials/nodes/utils/JoinNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/utils/SwitchNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/utils/TimeNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/utils/RoughnessToBlinnExponentNode.js"></script>
|
|
|
|
|
|
<!-- Interfaces -->
|
|
|
- <script src="js/materials/nodes/interfaces/NodePhong.js"></script>
|
|
|
- <script src="js/materials/nodes/interfaces/NodePhongMaterial.js"></script>
|
|
|
- <script src="js/materials/nodes/interfaces/NodeStandard.js"></script>
|
|
|
- <script src="js/materials/nodes/interfaces/NodeStandardMaterial.js"></script>
|
|
|
+ <script src="js/materials/nodes/interfaces/PhongNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/interfaces/PhongMaterialNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/interfaces/StandardNode.js"></script>
|
|
|
+ <script src="js/materials/nodes/interfaces/StandardMaterialNode.js"></script>
|
|
|
|
|
|
<!-- Extras -->
|
|
|
- <script src="js/materials/nodes/extras/NodeVelocity.js"></script>
|
|
|
+ <script src="js/materials/nodes/extras/VelocityNode.js"></script>
|
|
|
|
|
|
<script>
|
|
|
|
|
@@ -253,7 +253,7 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
//mtl.color = // albedo color
|
|
|
//mtl.alpha = // opacity (0 at 1)
|
|
@@ -269,15 +269,15 @@
|
|
|
//mtl.reflectivity = // environment intensity
|
|
|
//mtl.transform = // vertex transformation
|
|
|
|
|
|
- var mask = new THREE.NodeSwitch(new THREE.NodeTexture(decalDiffuse), 'w');
|
|
|
+ var mask = new THREE.SwitchNode(new THREE.TextureNode(decalDiffuse), 'w');
|
|
|
|
|
|
- mtl.color = new THREE.NodeTexture(grass);
|
|
|
- mtl.specular = new THREE.NodeFloat(.5);
|
|
|
- mtl.shininess = new THREE.NodeFloat(15);
|
|
|
- mtl.environment = new THREE.NodeCubeTexture(cubemap);
|
|
|
+ mtl.color = new THREE.TextureNode(grass);
|
|
|
+ mtl.specular = new THREE.FloatNode(.5);
|
|
|
+ mtl.shininess = new THREE.FloatNode(15);
|
|
|
+ mtl.environment = new THREE.CubeTextureNode(cubemap);
|
|
|
mtl.reflectivity = mask;
|
|
|
- mtl.normal = new THREE.NodeTexture(grassNormal);
|
|
|
- mtl.normalScale = new THREE.NodeMath1( mask, THREE.NodeMath1.INVERT );
|
|
|
+ mtl.normal = new THREE.TextureNode(grassNormal);
|
|
|
+ mtl.normalScale = new THREE.Math1Node( mask, THREE.Math1Node.INVERT );
|
|
|
|
|
|
break;
|
|
|
|
|
@@ -285,7 +285,7 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodeStandardMaterial();
|
|
|
+ mtl = new THREE.StandardMaterialNode();
|
|
|
|
|
|
//mtl.color = // albedo color
|
|
|
//mtl.alpha = // opacity (0 at 1)
|
|
@@ -301,41 +301,41 @@
|
|
|
//mtl.reflectivity = // environment intensity
|
|
|
//mtl.transform = // vertex transformation
|
|
|
|
|
|
- var mask = new THREE.NodeSwitch(new THREE.NodeTexture(decalDiffuse), 'w');
|
|
|
+ var mask = new THREE.SwitchNode(new THREE.TextureNode(decalDiffuse), 'w');
|
|
|
|
|
|
- var normalScale = new THREE.NodeFloat(.3);
|
|
|
+ var normalScale = new THREE.FloatNode(.3);
|
|
|
|
|
|
- var roughnessA = new THREE.NodeFloat(.5);
|
|
|
- var metalnessA = new THREE.NodeFloat(.5);
|
|
|
+ var roughnessA = new THREE.FloatNode(.5);
|
|
|
+ var metalnessA = new THREE.FloatNode(.5);
|
|
|
|
|
|
- var roughnessB = new THREE.NodeFloat(0);
|
|
|
- var metalnessB = new THREE.NodeFloat(1);
|
|
|
+ var roughnessB = new THREE.FloatNode(0);
|
|
|
+ var metalnessB = new THREE.FloatNode(1);
|
|
|
|
|
|
- var roughness = new THREE.NodeMath3(
|
|
|
+ var roughness = new THREE.Math3Node(
|
|
|
roughnessA,
|
|
|
roughnessB,
|
|
|
mask,
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
- var metalness = new THREE.NodeMath3(
|
|
|
+ var metalness = new THREE.Math3Node(
|
|
|
metalnessA,
|
|
|
metalnessB,
|
|
|
mask,
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
- var normalMask = new THREE.NodeOperator(
|
|
|
- new THREE.NodeMath1( mask, THREE.NodeMath1.INVERT ),
|
|
|
+ var normalMask = new THREE.OperatorNode(
|
|
|
+ new THREE.Math1Node( mask, THREE.Math1Node.INVERT ),
|
|
|
normalScale,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- mtl.color = new THREE.NodeColor(0xFFFFFF);
|
|
|
+ mtl.color = new THREE.ColorNode(0xFFFFFF);
|
|
|
mtl.roughness = roughness;
|
|
|
mtl.metalness = metalness;
|
|
|
- mtl.environment = new THREE.NodeCubeTexture(cubemap);
|
|
|
- mtl.normal = new THREE.NodeTexture(grassNormal);
|
|
|
+ mtl.environment = new THREE.CubeTextureNode(cubemap);
|
|
|
+ mtl.normal = new THREE.TextureNode(grassNormal);
|
|
|
mtl.normalScale = normalMask;
|
|
|
|
|
|
// GUI
|
|
@@ -382,67 +382,67 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
- var time = new THREE.NodeTime();
|
|
|
- var speed = new THREE.NodeFloat(5);
|
|
|
- var scale = new THREE.NodeFloat(1);
|
|
|
- var worldScale = new THREE.NodeFloat(.4);
|
|
|
- var colorA = new THREE.NodeColor(0xFFFFFF);
|
|
|
- var colorB = new THREE.NodeColor(0x0054df);
|
|
|
+ var time = new THREE.TimeNode();
|
|
|
+ var speed = new THREE.FloatNode(5);
|
|
|
+ var scale = new THREE.FloatNode(1);
|
|
|
+ var worldScale = new THREE.FloatNode(.4);
|
|
|
+ var colorA = new THREE.ColorNode(0xFFFFFF);
|
|
|
+ var colorB = new THREE.ColorNode(0x0054df);
|
|
|
|
|
|
- var uv = new THREE.NodeUV();
|
|
|
+ var uv = new THREE.UVNode();
|
|
|
|
|
|
- var timeScale = new THREE.NodeOperator(
|
|
|
+ var timeScale = new THREE.OperatorNode(
|
|
|
time,
|
|
|
speed,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var worldScl = new THREE.NodeOperator(
|
|
|
- new THREE.NodePosition(),
|
|
|
+ var worldScl = new THREE.OperatorNode(
|
|
|
+ new THREE.PositionNode(),
|
|
|
worldScale,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var posContinuous = new THREE.NodeOperator(
|
|
|
+ var posContinuous = new THREE.OperatorNode(
|
|
|
worldScl,
|
|
|
timeScale,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var wave = new THREE.NodeMath1(posContinuous, THREE.NodeMath1.SIN);
|
|
|
- wave = new THREE.NodeSwitch(wave, 'x');
|
|
|
+ var wave = new THREE.Math1Node(posContinuous, THREE.Math1Node.SIN);
|
|
|
+ wave = new THREE.SwitchNode(wave, 'x');
|
|
|
|
|
|
- var waveScale = new THREE.NodeOperator(
|
|
|
+ var waveScale = new THREE.OperatorNode(
|
|
|
wave,
|
|
|
scale,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var displaceY = new THREE.NodeJoin(
|
|
|
- new THREE.NodeFloat(),
|
|
|
+ var displaceY = new THREE.JoinNode(
|
|
|
+ new THREE.FloatNode(),
|
|
|
waveScale,
|
|
|
- new THREE.NodeFloat()
|
|
|
+ new THREE.FloatNode()
|
|
|
);
|
|
|
|
|
|
- var displace = new THREE.NodeOperator(
|
|
|
- new THREE.NodeNormal(),
|
|
|
+ var displace = new THREE.OperatorNode(
|
|
|
+ new THREE.NormalNode(),
|
|
|
displaceY,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var blend = new THREE.NodeOperator(
|
|
|
- new THREE.NodePosition(),
|
|
|
+ var blend = new THREE.OperatorNode(
|
|
|
+ new THREE.PositionNode(),
|
|
|
displaceY,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var color = new THREE.NodeMath3(
|
|
|
+ var color = new THREE.Math3Node(
|
|
|
colorB,
|
|
|
colorA,
|
|
|
wave,
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
mtl.color = color;
|
|
@@ -494,37 +494,37 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
var intensity = 1.3;
|
|
|
- var power = new THREE.NodeFloat(3);
|
|
|
- var color = new THREE.NodeColor(0xFFFFFF);
|
|
|
+ var power = new THREE.FloatNode(3);
|
|
|
+ var color = new THREE.ColorNode(0xFFFFFF);
|
|
|
|
|
|
- var viewZ = new THREE.NodeMath2(
|
|
|
- new THREE.NodeNormal( THREE.NodeNormal.VIEW ),
|
|
|
- new THREE.NodeVector3(0, 0, -intensity),
|
|
|
- THREE.NodeMath2.DOT
|
|
|
+ var viewZ = new THREE.Math2Node(
|
|
|
+ new THREE.NormalNode( THREE.NormalNode.VIEW ),
|
|
|
+ new THREE.Vector3Node(0, 0, -intensity),
|
|
|
+ THREE.Math2Node.DOT
|
|
|
);
|
|
|
|
|
|
- var rim = new THREE.NodeOperator(
|
|
|
+ var rim = new THREE.OperatorNode(
|
|
|
viewZ,
|
|
|
- new THREE.NodeFloat(intensity),
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ new THREE.FloatNode(intensity),
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var rimPower = new THREE.NodeMath2(
|
|
|
+ var rimPower = new THREE.Math2Node(
|
|
|
rim,
|
|
|
power,
|
|
|
- THREE.NodeMath2.POW
|
|
|
+ THREE.Math2Node.POW
|
|
|
);
|
|
|
|
|
|
- var rimColor = new THREE.NodeOperator(
|
|
|
+ var rimColor = new THREE.OperatorNode(
|
|
|
rimPower,
|
|
|
color,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- mtl.color = new THREE.NodeColor(0x111111);
|
|
|
+ mtl.color = new THREE.ColorNode(0x111111);
|
|
|
mtl.emissive = rimColor;
|
|
|
|
|
|
// GUI
|
|
@@ -580,39 +580,39 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
- var reflectance = new THREE.NodeFloat(1.3);
|
|
|
- var power = new THREE.NodeFloat(1);
|
|
|
- var color = new THREE.NodeCubeTexture(cubemap);
|
|
|
+ var reflectance = new THREE.FloatNode(1.3);
|
|
|
+ var power = new THREE.FloatNode(1);
|
|
|
+ var color = new THREE.CubeTextureNode(cubemap);
|
|
|
|
|
|
- var viewZ = new THREE.NodeMath2(
|
|
|
- new THREE.NodeNormal( THREE.NodeNormal.VIEW ),
|
|
|
- new THREE.NodeVector3(0, 0, -1),
|
|
|
- THREE.NodeMath2.DOT
|
|
|
+ var viewZ = new THREE.Math2Node(
|
|
|
+ new THREE.NormalNode( THREE.NormalNode.VIEW ),
|
|
|
+ new THREE.Vector3Node(0, 0, -1),
|
|
|
+ THREE.Math2Node.DOT
|
|
|
);
|
|
|
|
|
|
- var theta = new THREE.NodeOperator(
|
|
|
+ var theta = new THREE.OperatorNode(
|
|
|
viewZ,
|
|
|
- new THREE.NodeFloat(1),
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ new THREE.FloatNode(1),
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var thetaPower = new THREE.NodeMath2(
|
|
|
+ var thetaPower = new THREE.Math2Node(
|
|
|
theta,
|
|
|
power,
|
|
|
- THREE.NodeMath2.POW
|
|
|
+ THREE.Math2Node.POW
|
|
|
);
|
|
|
|
|
|
- var fresnel = new THREE.NodeOperator(
|
|
|
+ var fresnel = new THREE.OperatorNode(
|
|
|
reflectance,
|
|
|
thetaPower,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- mtl.color = new THREE.NodeColor(0x3399FF);
|
|
|
+ mtl.color = new THREE.ColorNode(0x3399FF);
|
|
|
mtl.environment = color;
|
|
|
- mtl.reflectivity = new THREE.NodeMath1( fresnel, THREE.NodeMath1.SAT );
|
|
|
+ mtl.reflectivity = new THREE.Math1Node( fresnel, THREE.Math1Node.SAT );
|
|
|
|
|
|
// GUI
|
|
|
|
|
@@ -634,35 +634,35 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
- var tex1 = new THREE.NodeTexture(grass);
|
|
|
- var tex2 = new THREE.NodeTexture(brick);
|
|
|
+ var tex1 = new THREE.TextureNode(grass);
|
|
|
+ var tex2 = new THREE.TextureNode(brick);
|
|
|
|
|
|
- var offset = new THREE.NodeFloat(0);
|
|
|
- var scale = new THREE.NodeFloat(1);
|
|
|
- var uv = new THREE.NodeUV();
|
|
|
+ var offset = new THREE.FloatNode(0);
|
|
|
+ var scale = new THREE.FloatNode(1);
|
|
|
+ var uv = new THREE.UVNode();
|
|
|
|
|
|
- var uvOffset = new THREE.NodeOperator(
|
|
|
+ var uvOffset = new THREE.OperatorNode(
|
|
|
offset,
|
|
|
uv,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var uvScale = new THREE.NodeOperator(
|
|
|
+ var uvScale = new THREE.OperatorNode(
|
|
|
uvOffset,
|
|
|
scale,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var mask = new THREE.NodeTexture(decalDiffuse, uvScale);
|
|
|
- var maskAlphaChannel = new THREE.NodeSwitch(mask, 'w');
|
|
|
+ var mask = new THREE.TextureNode(decalDiffuse, uvScale);
|
|
|
+ var maskAlphaChannel = new THREE.SwitchNode(mask, 'w');
|
|
|
|
|
|
- var blend = new THREE.NodeMath3(
|
|
|
+ var blend = new THREE.Math3Node(
|
|
|
tex1,
|
|
|
tex2,
|
|
|
maskAlphaChannel,
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
mtl.color = blend;
|
|
@@ -687,12 +687,12 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodeStandardMaterial();
|
|
|
+ mtl = new THREE.StandardMaterialNode();
|
|
|
|
|
|
- var tex = new THREE.NodeTexture(brick);
|
|
|
- var sat = new THREE.NodeFloat(0);
|
|
|
+ var tex = new THREE.TextureNode(brick);
|
|
|
+ var sat = new THREE.FloatNode(0);
|
|
|
|
|
|
- var satrgb = new THREE.NodeFunction([
|
|
|
+ var satrgb = new THREE.FunctionNode([
|
|
|
"vec3 satrgb(vec3 rgb, float adjustment) {",
|
|
|
//"const vec3 W = vec3(0.2125, 0.7154, 0.0721);", // LUMA
|
|
|
"vec3 intensity = vec3(dot(rgb, LUMA));",
|
|
@@ -700,7 +700,7 @@
|
|
|
"}"
|
|
|
].join( "\n" ));
|
|
|
|
|
|
- var saturation = new THREE.NodeFunctionCall(satrgb);
|
|
|
+ var saturation = new THREE.FunctionCallNode(satrgb);
|
|
|
saturation.input.rgb = tex;
|
|
|
saturation.input.adjustment = sat;
|
|
|
|
|
@@ -710,7 +710,7 @@
|
|
|
//saturation.input[1] = sat;
|
|
|
|
|
|
mtl.color = saturation;
|
|
|
- mtl.environment = new THREE.NodeCubeTexture(cubemap); // optional
|
|
|
+ mtl.environment = new THREE.CubeTextureNode(cubemap); // optional
|
|
|
|
|
|
// GUI
|
|
|
|
|
@@ -726,32 +726,32 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
- var top = new THREE.NodeTexture(grass);
|
|
|
- var bottom = new THREE.NodeTexture(brick);
|
|
|
+ var top = new THREE.TextureNode(grass);
|
|
|
+ var bottom = new THREE.TextureNode(brick);
|
|
|
|
|
|
- var normal = new THREE.NodeNormal( THREE.NodeNormal.WORLD );
|
|
|
- var normalY = new THREE.NodeSwitch(normal, 'y');
|
|
|
+ var normal = new THREE.NormalNode( THREE.NormalNode.WORLD );
|
|
|
+ var normalY = new THREE.SwitchNode(normal, 'y');
|
|
|
|
|
|
- var hard = new THREE.NodeFloat(9);
|
|
|
- var offset = new THREE.NodeFloat(-2.5);
|
|
|
+ var hard = new THREE.FloatNode(9);
|
|
|
+ var offset = new THREE.FloatNode(-2.5);
|
|
|
|
|
|
- var hardClamp = new THREE.NodeOperator(
|
|
|
+ var hardClamp = new THREE.OperatorNode(
|
|
|
normalY,
|
|
|
hard,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var offsetClamp = new THREE.NodeOperator(
|
|
|
+ var offsetClamp = new THREE.OperatorNode(
|
|
|
hardClamp,
|
|
|
offset,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var clamp0at1 = new THREE.NodeMath1( offsetClamp, THREE.NodeMath1.SAT );
|
|
|
+ var clamp0at1 = new THREE.Math1Node( offsetClamp, THREE.Math1Node.SAT );
|
|
|
|
|
|
- var blend = new THREE.NodeMath3(top,bottom,clamp0at1,THREE.NodeMath3.MIX);
|
|
|
+ var blend = new THREE.Math3Node(top,bottom,clamp0at1,THREE.Math3Node.MIX);
|
|
|
|
|
|
mtl.color = blend;
|
|
|
|
|
@@ -775,57 +775,57 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
- var time = new THREE.NodeTime();
|
|
|
- var scale = new THREE.NodeFloat(2);
|
|
|
- var speed = new THREE.NodeFloat(.2);
|
|
|
- var colorA = new THREE.NodeColor(0xFFFFFF);
|
|
|
- var colorB = new THREE.NodeColor(0x0054df);
|
|
|
+ var time = new THREE.TimeNode();
|
|
|
+ var scale = new THREE.FloatNode(2);
|
|
|
+ var speed = new THREE.FloatNode(.2);
|
|
|
+ var colorA = new THREE.ColorNode(0xFFFFFF);
|
|
|
+ var colorB = new THREE.ColorNode(0x0054df);
|
|
|
|
|
|
- var uv = new THREE.NodeUV();
|
|
|
+ var uv = new THREE.UVNode();
|
|
|
|
|
|
- var timeScl = new THREE.NodeOperator(
|
|
|
+ var timeScl = new THREE.OperatorNode(
|
|
|
time,
|
|
|
speed,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var displaceOffset = new THREE.NodeOperator(
|
|
|
+ var displaceOffset = new THREE.OperatorNode(
|
|
|
timeScl,
|
|
|
uv,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var tex = new THREE.NodeTexture(cloud, displaceOffset);
|
|
|
- var texArea = new THREE.NodeSwitch(tex, 'w');
|
|
|
+ var tex = new THREE.TextureNode(cloud, displaceOffset);
|
|
|
+ var texArea = new THREE.SwitchNode(tex, 'w');
|
|
|
|
|
|
- var displace = new THREE.NodeOperator(
|
|
|
- new THREE.NodeNormal(),
|
|
|
+ var displace = new THREE.OperatorNode(
|
|
|
+ new THREE.NormalNode(),
|
|
|
texArea,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var displaceScale = new THREE.NodeOperator(
|
|
|
+ var displaceScale = new THREE.OperatorNode(
|
|
|
displace,
|
|
|
scale,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var blend = new THREE.NodeOperator(
|
|
|
- new THREE.NodePosition(),
|
|
|
+ var blend = new THREE.OperatorNode(
|
|
|
+ new THREE.PositionNode(),
|
|
|
displaceScale,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var color = new THREE.NodeMath3(
|
|
|
+ var color = new THREE.Math3Node(
|
|
|
colorB,
|
|
|
colorA,
|
|
|
texArea,
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
- mtl.color = mtl.specular = new THREE.NodeColor(0);
|
|
|
+ mtl.color = mtl.specular = new THREE.ColorNode(0);
|
|
|
mtl.emissive = color;
|
|
|
mtl.transform = blend;
|
|
|
|
|
@@ -861,45 +861,45 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
- var time = new THREE.NodeTime();
|
|
|
- var uv = new THREE.NodeUV();
|
|
|
+ var time = new THREE.TimeNode();
|
|
|
+ var uv = new THREE.UVNode();
|
|
|
|
|
|
- var timeSpeedA = new THREE.NodeOperator(
|
|
|
+ var timeSpeedA = new THREE.OperatorNode(
|
|
|
time,
|
|
|
- new THREE.NodeVector2(0.3, 0.1),
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ new THREE.Vector2Node(0.3, 0.1),
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var timeSpeedB = new THREE.NodeOperator(
|
|
|
+ var timeSpeedB = new THREE.OperatorNode(
|
|
|
time,
|
|
|
- new THREE.NodeVector2(0.15, 0.4),
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ new THREE.Vector2Node(0.15, 0.4),
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var uvOffsetA = new THREE.NodeOperator(
|
|
|
+ var uvOffsetA = new THREE.OperatorNode(
|
|
|
timeSpeedA,
|
|
|
uv,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var uvOffsetB = new THREE.NodeOperator(
|
|
|
+ var uvOffsetB = new THREE.OperatorNode(
|
|
|
timeSpeedB,
|
|
|
uv,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var cloudA = new THREE.NodeTexture(cloud, uvOffsetA);
|
|
|
- var cloudB = new THREE.NodeTexture(cloud, uvOffsetB);
|
|
|
+ var cloudA = new THREE.TextureNode(cloud, uvOffsetA);
|
|
|
+ var cloudB = new THREE.TextureNode(cloud, uvOffsetB);
|
|
|
|
|
|
- var clouds = new THREE.NodeOperator(
|
|
|
+ var clouds = new THREE.OperatorNode(
|
|
|
cloudA,
|
|
|
cloudB,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- mtl.environment = new THREE.NodeColor(0xFFFFFF);
|
|
|
+ mtl.environment = new THREE.ColorNode(0xFFFFFF);
|
|
|
mtl.alpha = clouds;
|
|
|
|
|
|
// GUI
|
|
@@ -916,21 +916,21 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- var colorA = new THREE.NodeColor(0xFFFFFF);
|
|
|
- var colorB = new THREE.NodeColor(0x0054df);
|
|
|
+ var colorA = new THREE.ColorNode(0xFFFFFF);
|
|
|
+ var colorB = new THREE.ColorNode(0x0054df);
|
|
|
|
|
|
- var depth = new THREE.NodeCamera( THREE.NodeCamera.DEPTH );
|
|
|
+ var depth = new THREE.CameraNode( THREE.CameraNode.DEPTH );
|
|
|
depth.near.number = 1;
|
|
|
depth.far.number = 200;
|
|
|
|
|
|
- var colors = new THREE.NodeMath3(
|
|
|
+ var colors = new THREE.Math3Node(
|
|
|
colorB,
|
|
|
colorA,
|
|
|
depth,
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
mtl.color = colors;
|
|
|
|
|
|
// GUI
|
|
@@ -965,15 +965,15 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodeStandardMaterial();
|
|
|
+ mtl = new THREE.StandardMaterialNode();
|
|
|
|
|
|
- var hash2 = new THREE.NodeFunction([
|
|
|
+ var hash2 = new THREE.FunctionNode([
|
|
|
"vec2 hash2(vec2 p) {",
|
|
|
"return fract(sin(vec2(dot(p, vec2(123.4, 748.6)), dot(p, vec2(547.3, 659.3))))*5232.85324);",
|
|
|
"}"
|
|
|
].join( "\n" ));
|
|
|
|
|
|
- var voronoi = new THREE.NodeFunction([
|
|
|
+ var voronoi = new THREE.FunctionNode([
|
|
|
// Based off of iq's described here: http://www.iquilezles.org/www/articles/voronoili
|
|
|
"float voronoi(vec2 p, in float time) {",
|
|
|
"vec2 n = floor(p);",
|
|
@@ -997,7 +997,7 @@
|
|
|
"}"
|
|
|
].join( "\n" ), [hash2]); // define hash2 as dependencies
|
|
|
|
|
|
- var voronoiLayers = new THREE.NodeFunction([
|
|
|
+ var voronoiLayers = new THREE.FunctionNode([
|
|
|
// based on https://www.shadertoy.com/view/4tXSDf
|
|
|
"float voronoiLayers(vec2 p, in float time) {",
|
|
|
"float v = 0.0;",
|
|
@@ -1011,74 +1011,74 @@
|
|
|
"}"
|
|
|
].join( "\n" ), [voronoi]); // define voronoi as dependencies
|
|
|
|
|
|
- var time = new THREE.NodeTime();
|
|
|
- var timeScale = new THREE.NodeFloat(2);
|
|
|
+ var time = new THREE.TimeNode();
|
|
|
+ var timeScale = new THREE.FloatNode(2);
|
|
|
|
|
|
- var alpha = new THREE.NodeFloat(1);
|
|
|
- var scale = new THREE.NodeFloat(.1);
|
|
|
- var intensity = new THREE.NodeFloat(1.5);
|
|
|
+ var alpha = new THREE.FloatNode(1);
|
|
|
+ var scale = new THREE.FloatNode(.1);
|
|
|
+ var intensity = new THREE.FloatNode(1.5);
|
|
|
|
|
|
- var color = new THREE.NodeColor(0xFFFFFF);
|
|
|
- var colorA = new THREE.NodeColor(0xFFFFFF);
|
|
|
- var colorB = new THREE.NodeColor(0x0054df);
|
|
|
+ var color = new THREE.ColorNode(0xFFFFFF);
|
|
|
+ var colorA = new THREE.ColorNode(0xFFFFFF);
|
|
|
+ var colorB = new THREE.ColorNode(0x0054df);
|
|
|
|
|
|
- var worldPos = new THREE.NodePosition( THREE.NodePosition.WORLD );
|
|
|
- var worldPosTop = new THREE.NodeSwitch(worldPos, 'xz');
|
|
|
+ var worldPos = new THREE.PositionNode( THREE.PositionNode.WORLD );
|
|
|
+ var worldPosTop = new THREE.SwitchNode(worldPos, 'xz');
|
|
|
|
|
|
- var pos = new THREE.NodePosition( THREE.NodePosition.WORLD );
|
|
|
- var posNorm = new THREE.NodeMath1(pos, THREE.NodeMath1.NORMALIZE);
|
|
|
+ var pos = new THREE.PositionNode( THREE.PositionNode.WORLD );
|
|
|
+ var posNorm = new THREE.Math1Node(pos, THREE.Math1Node.NORMALIZE);
|
|
|
|
|
|
- var mask = new THREE.NodeSwitch(posNorm, 'y');
|
|
|
+ var mask = new THREE.SwitchNode(posNorm, 'y');
|
|
|
|
|
|
// clamp0at1
|
|
|
- mask = new THREE.NodeMath1( mask, THREE.NodeMath1.SAT );
|
|
|
+ mask = new THREE.Math1Node( mask, THREE.Math1Node.SAT );
|
|
|
|
|
|
- var timeOffset = new THREE.NodeOperator(
|
|
|
+ var timeOffset = new THREE.OperatorNode(
|
|
|
time,
|
|
|
timeScale,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var uvPos = new THREE.NodeOperator(
|
|
|
+ var uvPos = new THREE.OperatorNode(
|
|
|
worldPosTop,
|
|
|
scale,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var voronoi = new THREE.NodeFunctionCall(voronoiLayers);
|
|
|
+ var voronoi = new THREE.FunctionCallNode(voronoiLayers);
|
|
|
voronoi.input.p = uvPos;
|
|
|
voronoi.input.time = timeOffset;
|
|
|
|
|
|
- var maskCaustic = new THREE.NodeOperator(
|
|
|
+ var maskCaustic = new THREE.OperatorNode(
|
|
|
alpha,
|
|
|
mask,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var voronoiIntensity = new THREE.NodeOperator(
|
|
|
+ var voronoiIntensity = new THREE.OperatorNode(
|
|
|
voronoi,
|
|
|
intensity,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var voronoiColors = new THREE.NodeMath3(
|
|
|
+ var voronoiColors = new THREE.Math3Node(
|
|
|
colorB,
|
|
|
colorA,
|
|
|
- new THREE.NodeMath1( voronoiIntensity, THREE.NodeMath1.SAT ), // mix needs clamp
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ new THREE.Math1Node( voronoiIntensity, THREE.Math1Node.SAT ), // mix needs clamp
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
- var caustic = new THREE.NodeMath3(
|
|
|
+ var caustic = new THREE.Math3Node(
|
|
|
color,
|
|
|
voronoiColors,
|
|
|
maskCaustic,
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
- var causticLights = new THREE.NodeOperator(
|
|
|
+ var causticLights = new THREE.OperatorNode(
|
|
|
voronoiIntensity,
|
|
|
maskCaustic,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
mtl.color = caustic;
|
|
@@ -1136,46 +1136,46 @@
|
|
|
|
|
|
move = true;
|
|
|
|
|
|
- mtl = new THREE.NodeStandardMaterial();
|
|
|
+ mtl = new THREE.StandardMaterialNode();
|
|
|
|
|
|
- var scale = new THREE.NodeFloat(2);
|
|
|
- var colorA = new THREE.NodeColor(0xFF6633);
|
|
|
- var colorB = new THREE.NodeColor(0x3366FF);
|
|
|
+ var scale = new THREE.FloatNode(2);
|
|
|
+ var colorA = new THREE.ColorNode(0xFF6633);
|
|
|
+ var colorB = new THREE.ColorNode(0x3366FF);
|
|
|
|
|
|
- var pos = new THREE.NodePosition();
|
|
|
- var posNorm = new THREE.NodeMath1(pos, THREE.NodeMath1.NORMALIZE);
|
|
|
+ var pos = new THREE.PositionNode();
|
|
|
+ var posNorm = new THREE.Math1Node(pos, THREE.Math1Node.NORMALIZE);
|
|
|
|
|
|
- var mask = new THREE.NodeSwitch(posNorm, 'y');
|
|
|
+ var mask = new THREE.SwitchNode(posNorm, 'y');
|
|
|
|
|
|
- var velocity = new THREE.NodeVelocity( mesh, {
|
|
|
+ var velocity = new THREE.VelocityNode( mesh, {
|
|
|
type:'elastic',
|
|
|
spring:.8,
|
|
|
friction:.9
|
|
|
} );
|
|
|
|
|
|
- var velocityArea = new THREE.NodeOperator(
|
|
|
+ var velocityArea = new THREE.OperatorNode(
|
|
|
mask,
|
|
|
scale,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var softVelocity = new THREE.NodeOperator(
|
|
|
+ var softVelocity = new THREE.OperatorNode(
|
|
|
velocity,
|
|
|
velocityArea,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var softPosition = new THREE.NodeOperator(
|
|
|
- new THREE.NodePosition(),
|
|
|
+ var softPosition = new THREE.OperatorNode(
|
|
|
+ new THREE.PositionNode(),
|
|
|
softVelocity,
|
|
|
- THREE.NodeOperator.ADD
|
|
|
+ THREE.OperatorNode.ADD
|
|
|
);
|
|
|
|
|
|
- var colors = new THREE.NodeMath3(
|
|
|
+ var colors = new THREE.Math3Node(
|
|
|
colorB,
|
|
|
colorA,
|
|
|
mask,
|
|
|
- THREE.NodeMath3.MIX
|
|
|
+ THREE.Math3Node.MIX
|
|
|
);
|
|
|
|
|
|
mtl.color = colors;
|
|
@@ -1219,36 +1219,36 @@
|
|
|
|
|
|
// MATERIAL
|
|
|
|
|
|
- mtl = new THREE.NodePhongMaterial();
|
|
|
+ mtl = new THREE.PhongMaterialNode();
|
|
|
|
|
|
- var time = new THREE.NodeTime();
|
|
|
- var speed = new THREE.NodeFloat(.5);
|
|
|
+ var time = new THREE.TimeNode();
|
|
|
+ var speed = new THREE.FloatNode(.5);
|
|
|
|
|
|
- var color = new THREE.NodeColor(0x98ff00);
|
|
|
+ var color = new THREE.ColorNode(0x98ff00);
|
|
|
|
|
|
- var timeSpeed = new THREE.NodeOperator(
|
|
|
+ var timeSpeed = new THREE.OperatorNode(
|
|
|
time,
|
|
|
speed,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var sinCycleInSecs = new THREE.NodeOperator(
|
|
|
+ var sinCycleInSecs = new THREE.OperatorNode(
|
|
|
timeSpeed,
|
|
|
- new THREE.NodeConst( THREE.NodeConst.PI2 ),
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ new THREE.ConstNode( THREE.ConstNode.PI2 ),
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var cycle = new THREE.NodeMath1(sinCycleInSecs, THREE.NodeMath1.SIN);
|
|
|
+ var cycle = new THREE.Math1Node(sinCycleInSecs, THREE.Math1Node.SIN);
|
|
|
|
|
|
- var cycleColor = new THREE.NodeOperator(
|
|
|
+ var cycleColor = new THREE.OperatorNode(
|
|
|
cycle,
|
|
|
color,
|
|
|
- THREE.NodeOperator.MUL
|
|
|
+ THREE.OperatorNode.MUL
|
|
|
);
|
|
|
|
|
|
- var cos = new THREE.NodeMath1(cycleColor, THREE.NodeMath1.SIN);
|
|
|
+ var cos = new THREE.Math1Node(cycleColor, THREE.Math1Node.SIN);
|
|
|
|
|
|
- mtl.color = new THREE.NodeColor(0);
|
|
|
+ mtl.color = new THREE.ColorNode(0);
|
|
|
mtl.emissive = cos;
|
|
|
|
|
|
// GUI
|