three-stdlib 2.12.1 → 2.14.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./core/ArrayUniformNode.cjs.js"),r=require("./core/AttributeNode.cjs.js"),o=require("./core/BypassNode.cjs.js"),s=require("./core/CodeNode.cjs.js"),t=require("./core/ConstNode.cjs.js"),i=require("./core/ContextNode.cjs.js"),p=require("./core/ExpressionNode.cjs.js"),a=require("./core/FunctionCallNode.cjs.js"),d=require("./core/FunctionNode.cjs.js"),c=require("./core/Node.cjs.js"),x=require("./core/NodeAttribute.cjs.js"),n=require("./core/NodeBuilder.cjs.js"),N=require("./core/NodeCode.cjs.js"),u=require("./core/NodeFrame.cjs.js"),j=require("./core/NodeFunctionInput.cjs.js"),l=require("./core/NodeKeywords.cjs.js"),m=require("./core/NodeUniform.cjs.js"),q=require("./core/NodeVar.cjs.js"),h=require("./core/NodeVary.cjs.js"),f=require("./core/PropertyNode.cjs.js"),g=require("./core/TempNode.cjs.js"),b=require("./core/UniformNode.cjs.js"),v=require("./core/VarNode.cjs.js"),M=require("./core/VaryNode.cjs.js"),y=require("./accessors/BufferNode.cjs.js"),C=require("./accessors/CameraNode.cjs.js"),T=require("./accessors/CubeTextureNode.cjs.js"),V=require("./accessors/MaterialNode.cjs.js"),L=require("./accessors/MaterialReferenceNode.cjs.js"),S=require("./accessors/ModelNode.cjs.js"),F=require("./accessors/ModelViewProjectionNode.cjs.js"),w=require("./accessors/NormalNode.cjs.js"),P=require("./accessors/Object3DNode.cjs.js"),_=require("./accessors/PointUVNode.cjs.js"),D=require("./accessors/PositionNode.cjs.js"),U=require("./accessors/ReferenceNode.cjs.js"),R=require("./accessors/ReflectNode.cjs.js"),B=require("./accessors/SkinningNode.cjs.js"),O=require("./accessors/TextureNode.cjs.js"),G=require("./accessors/UVNode.cjs.js"),A=require("./display/ColorSpaceNode.cjs.js"),E=require("./display/NormalMapNode.cjs.js"),I=require("./math/MathNode.cjs.js"),X=require("./math/OperatorNode.cjs.js"),k=require("./math/CondNode.cjs.js"),W=require("./lights/LightContextNode.cjs.js"),z=require("./lights/LightNode.cjs.js"),J=require("./lights/LightsNode.cjs.js"),K=require("./utils/ArrayElementNode.cjs.js"),Y=require("./utils/ConvertNode.cjs.js"),H=require("./utils/JoinNode.cjs.js"),Q=require("./utils/SplitNode.cjs.js"),Z=require("./utils/SpriteSheetUVNode.cjs.js"),$=require("./utils/MatcapUVNode.cjs.js"),ee=require("./utils/OscNode.cjs.js"),re=require("./utils/TimerNode.cjs.js"),oe=require("../Nodes-627a8bdf.js"),se=require("./loaders/NodeMaterialLoader.cjs.js"),te=require("./procedural/CheckerNode.cjs.js"),ie=require("./fog/FogNode.cjs.js"),pe=require("./fog/FogRangeNode.cjs.js"),ae=require("./core/constants.cjs.js"),de=require("./functions/BSDFs.cjs.js"),ce=require("./ShaderNode.cjs.js"),xe=require("./materials/LineBasicNodeMaterial.cjs.js"),ne=require("./materials/MeshBasicNodeMaterial.cjs.js"),Ne=require("./materials/MeshStandardNodeMaterial.cjs.js"),ue=require("./materials/PointsNodeMaterial.cjs.js");require("./core/InputNode.cjs.js"),require("./core/NodeUtils.cjs.js"),require("three"),require("@babel/runtime/helpers/defineProperty"),require("./materials/NodeMaterial.cjs.js"),exports.ArrayUniformNode=e,exports.AttributeNode=r,exports.BypassNode=o,exports.CodeNode=s,exports.ConstNode=t,exports.ContextNode=i,exports.ExpressionNode=p,exports.FunctionCallNode=a,exports.FunctionNode=d,exports.Node=c,exports.NodeAttribute=x,exports.NodeBuilder=n.default,exports.NodeCode=N,exports.NodeFrame=u,exports.NodeFunctionInput=j,exports.NodeKeywords=l,exports.NodeUniform=m,exports.NodeVar=q,exports.NodeVary=h,exports.PropertyNode=f,exports.TempNode=g,exports.UniformNode=b,exports.VarNode=v,exports.VaryNode=M,exports.BufferNode=y,exports.CameraNode=C,exports.CubeTextureNode=T,exports.MaterialNode=V,exports.MaterialReferenceNode=L,exports.ModelNode=S,exports.ModelViewProjectionNode=F,exports.NormalNode=w,exports.Object3DNode=P,exports.PointUVNode=_,exports.PositionNode=D,exports.ReferenceNode=U,exports.ReflectNode=R,exports.SkinningNode=B,exports.TextureNode=O,exports.UVNode=G,exports.ColorSpaceNode=A.default,exports.NormalMapNode=E,exports.MathNode=I,exports.OperatorNode=X,exports.CondNode=k,exports.LightContextNode=W,exports.LightNode=z,exports.LightsNode=J,exports.ArrayElementNode=K,exports.ConvertNode=Y,exports.JoinNode=H,exports.SplitNode=Q,exports.SpriteSheetUVNode=Z,exports.MatcapUVNode=$,exports.OscNode=ee,exports.TimerNode=re,exports.NodeLoader=oe.NodeLoader,exports.NodeObjectLoader=oe.NodeObjectLoader,exports.fromType=oe.fromType,exports.NodeMaterialLoader=se,exports.CheckerNode=te,exports.FogNode=ie,exports.FogRangeNode=pe,exports.NodeShaderStage=ae.NodeShaderStage,exports.NodeType=ae.NodeType,exports.NodeUpdateType=ae.NodeUpdateType,exports.BRDF_GGX=de.BRDF_GGX,exports.BRDF_Lambert=de.BRDF_Lambert,exports.D_GGX=de.D_GGX,exports.F_Schlick=de.F_Schlick,exports.PhysicalLightingModel=de.PhysicalLightingModel,exports.RE_Direct_Physical=de.RE_Direct_Physical,exports.V_GGX_SmithCorrelated=de.V_GGX_SmithCorrelated,exports.getDistanceAttenuation=de.getDistanceAttenuation,exports.EPSILON=ce.EPSILON,exports.INFINITY=ce.INFINITY,exports.ShaderNode=ce.ShaderNode,exports.abs=ce.abs,exports.acos=ce.acos,exports.add=ce.add,exports.addTo=ce.addTo,exports.alphaTest=ce.alphaTest,exports.and=ce.and,exports.asin=ce.asin,exports.assign=ce.assign,exports.atan=ce.atan,exports.attribute=ce.attribute,exports.bitAnd=ce.bitAnd,exports.bitOr=ce.bitOr,exports.bitXor=ce.bitXor,exports.bmat3=ce.bmat3,exports.bmat4=ce.bmat4,exports.bool=ce.bool,exports.buffer=ce.buffer,exports.bvec2=ce.bvec2,exports.bvec3=ce.bvec3,exports.bvec4=ce.bvec4,exports.cameraPosition=ce.cameraPosition,exports.ceil=ce.ceil,exports.clamp=ce.clamp,exports.color=ce.color,exports.cond=ce.cond,exports.cos=ce.cos,exports.cross=ce.cross,exports.dFdx=ce.dFdx,exports.dFdy=ce.dFdy,exports.degrees=ce.degrees,exports.diffuseColor=ce.diffuseColor,exports.distance=ce.distance,exports.div=ce.div,exports.dot=ce.dot,exports.element=ce.element,exports.equal=ce.equal,exports.exp=ce.exp,exports.exp2=ce.exp2,exports.faceforward=ce.faceforward,exports.float=ce.float,exports.floor=ce.floor,exports.fract=ce.fract,exports.greaterThan=ce.greaterThan,exports.greaterThanEqual=ce.greaterThanEqual,exports.imat3=ce.imat3,exports.imat4=ce.imat4,exports.int=ce.int,exports.inversesqrt=ce.inversesqrt,exports.invert=ce.invert,exports.ivec2=ce.ivec2,exports.ivec3=ce.ivec3,exports.ivec4=ce.ivec4,exports.join=ce.join,exports.label=ce.label,exports.length=ce.length,exports.lessThan=ce.lessThan,exports.lessThanEqual=ce.lessThanEqual,exports.log=ce.log,exports.log2=ce.log2,exports.mat3=ce.mat3,exports.mat4=ce.mat4,exports.max=ce.max,exports.metalness=ce.metalness,exports.min=ce.min,exports.mix=ce.mix,exports.mod=ce.mod,exports.mul=ce.mul,exports.negate=ce.negate,exports.nodeObject=ce.nodeObject,exports.normalGeometry=ce.normalGeometry,exports.normalLocal=ce.normalLocal,exports.normalView=ce.normalView,exports.normalWorld=ce.normalWorld,exports.normalize=ce.normalize,exports.or=ce.or,exports.positionLocal=ce.positionLocal,exports.positionView=ce.positionView,exports.positionViewDirection=ce.positionViewDirection,exports.positionWorld=ce.positionWorld,exports.pow=ce.pow,exports.pow2=ce.pow2,exports.pow3=ce.pow3,exports.pow4=ce.pow4,exports.radians=ce.radians,exports.reflect=ce.reflect,exports.refract=ce.refract,exports.remainder=ce.remainder,exports.roughness=ce.roughness,exports.round=ce.round,exports.sampler=ce.sampler,exports.saturate=ce.saturate,exports.shiftLeft=ce.shiftLeft,exports.shiftRight=ce.shiftRight,exports.sign=ce.sign,exports.sin=ce.sin,exports.smoothstep=ce.smoothstep,exports.specularColor=ce.specularColor,exports.sqrt=ce.sqrt,exports.step=ce.step,exports.sub=ce.sub,exports.tan=ce.tan,exports.temp=ce.temp,exports.texture=ce.texture,exports.transformDirection=ce.transformDirection,exports.transformedNormalView=ce.transformedNormalView,exports.uint=ce.uint,exports.umat3=ce.umat3,exports.umat4=ce.umat4,exports.uniform=ce.uniform,exports.uv=ce.uv,exports.uvec2=ce.uvec2,exports.uvec3=ce.uvec3,exports.uvec4=ce.uvec4,exports.vec2=ce.vec2,exports.vec3=ce.vec3,exports.vec4=ce.vec4,exports.viewMatrix=ce.viewMatrix,exports.xor=ce.xor,exports.LineBasicNodeMaterial=xe,exports.MeshBasicNodeMaterial=ne,exports.MeshStandardNodeMaterial=Ne,exports.PointsNodeMaterial=ue;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./core/ArrayUniformNode.cjs.js"),r=require("./core/AttributeNode.cjs.js"),o=require("./core/BypassNode.cjs.js"),s=require("./core/CodeNode.cjs.js"),t=require("./core/ConstNode.cjs.js"),i=require("./core/ContextNode.cjs.js"),p=require("./core/ExpressionNode.cjs.js"),a=require("./core/FunctionCallNode.cjs.js"),d=require("./core/FunctionNode.cjs.js"),c=require("./core/Node.cjs.js"),x=require("./core/NodeAttribute.cjs.js"),n=require("./core/NodeBuilder.cjs.js"),N=require("./core/NodeCode.cjs.js"),u=require("./core/NodeFrame.cjs.js"),j=require("./core/NodeFunctionInput.cjs.js"),l=require("./core/NodeKeywords.cjs.js"),m=require("./core/NodeUniform.cjs.js"),q=require("./core/NodeVar.cjs.js"),h=require("./core/NodeVary.cjs.js"),f=require("./core/PropertyNode.cjs.js"),g=require("./core/TempNode.cjs.js"),b=require("./core/UniformNode.cjs.js"),v=require("./core/VarNode.cjs.js"),M=require("./core/VaryNode.cjs.js"),y=require("./accessors/BufferNode.cjs.js"),C=require("./accessors/CameraNode.cjs.js"),T=require("./accessors/CubeTextureNode.cjs.js"),V=require("./accessors/MaterialNode.cjs.js"),L=require("./accessors/MaterialReferenceNode.cjs.js"),S=require("./accessors/ModelNode.cjs.js"),F=require("./accessors/ModelViewProjectionNode.cjs.js"),w=require("./accessors/NormalNode.cjs.js"),P=require("./accessors/Object3DNode.cjs.js"),_=require("./accessors/PointUVNode.cjs.js"),D=require("./accessors/PositionNode.cjs.js"),U=require("./accessors/ReferenceNode.cjs.js"),R=require("./accessors/ReflectNode.cjs.js"),B=require("./accessors/SkinningNode.cjs.js"),O=require("./accessors/TextureNode.cjs.js"),G=require("./accessors/UVNode.cjs.js"),A=require("./display/ColorSpaceNode.cjs.js"),E=require("./display/NormalMapNode.cjs.js"),I=require("./math/MathNode.cjs.js"),X=require("./math/OperatorNode.cjs.js"),k=require("./math/CondNode.cjs.js"),W=require("./lights/LightContextNode.cjs.js"),z=require("./lights/LightNode.cjs.js"),J=require("./lights/LightsNode.cjs.js"),K=require("./utils/ArrayElementNode.cjs.js"),Y=require("./utils/ConvertNode.cjs.js"),H=require("./utils/JoinNode.cjs.js"),Q=require("./utils/SplitNode.cjs.js"),Z=require("./utils/SpriteSheetUVNode.cjs.js"),$=require("./utils/MatcapUVNode.cjs.js"),ee=require("./utils/OscNode.cjs.js"),re=require("./utils/TimerNode.cjs.js"),oe=require("../Nodes-9aa16d74.js"),se=require("./loaders/NodeMaterialLoader.cjs.js"),te=require("./procedural/CheckerNode.cjs.js"),ie=require("./fog/FogNode.cjs.js"),pe=require("./fog/FogRangeNode.cjs.js"),ae=require("./core/constants.cjs.js"),de=require("./functions/BSDFs.cjs.js"),ce=require("./ShaderNode.cjs.js"),xe=require("./materials/LineBasicNodeMaterial.cjs.js"),ne=require("./materials/MeshBasicNodeMaterial.cjs.js"),Ne=require("./materials/MeshStandardNodeMaterial.cjs.js"),ue=require("./materials/PointsNodeMaterial.cjs.js");require("./core/InputNode.cjs.js"),require("./core/NodeUtils.cjs.js"),require("three"),require("@babel/runtime/helpers/defineProperty"),require("./materials/NodeMaterial.cjs.js"),exports.ArrayUniformNode=e,exports.AttributeNode=r,exports.BypassNode=o,exports.CodeNode=s,exports.ConstNode=t,exports.ContextNode=i,exports.ExpressionNode=p,exports.FunctionCallNode=a,exports.FunctionNode=d,exports.Node=c,exports.NodeAttribute=x,exports.NodeBuilder=n.default,exports.NodeCode=N,exports.NodeFrame=u,exports.NodeFunctionInput=j,exports.NodeKeywords=l,exports.NodeUniform=m,exports.NodeVar=q,exports.NodeVary=h,exports.PropertyNode=f,exports.TempNode=g,exports.UniformNode=b,exports.VarNode=v,exports.VaryNode=M,exports.BufferNode=y,exports.CameraNode=C,exports.CubeTextureNode=T,exports.MaterialNode=V,exports.MaterialReferenceNode=L,exports.ModelNode=S,exports.ModelViewProjectionNode=F,exports.NormalNode=w,exports.Object3DNode=P,exports.PointUVNode=_,exports.PositionNode=D,exports.ReferenceNode=U,exports.ReflectNode=R,exports.SkinningNode=B,exports.TextureNode=O,exports.UVNode=G,exports.ColorSpaceNode=A.default,exports.NormalMapNode=E,exports.MathNode=I,exports.OperatorNode=X,exports.CondNode=k,exports.LightContextNode=W,exports.LightNode=z,exports.LightsNode=J,exports.ArrayElementNode=K,exports.ConvertNode=Y,exports.JoinNode=H,exports.SplitNode=Q,exports.SpriteSheetUVNode=Z,exports.MatcapUVNode=$,exports.OscNode=ee,exports.TimerNode=re,exports.NodeLoader=oe.NodeLoader,exports.NodeObjectLoader=oe.NodeObjectLoader,exports.fromType=oe.fromType,exports.NodeMaterialLoader=se,exports.CheckerNode=te,exports.FogNode=ie,exports.FogRangeNode=pe,exports.NodeShaderStage=ae.NodeShaderStage,exports.NodeType=ae.NodeType,exports.NodeUpdateType=ae.NodeUpdateType,exports.BRDF_GGX=de.BRDF_GGX,exports.BRDF_Lambert=de.BRDF_Lambert,exports.D_GGX=de.D_GGX,exports.F_Schlick=de.F_Schlick,exports.PhysicalLightingModel=de.PhysicalLightingModel,exports.RE_Direct_Physical=de.RE_Direct_Physical,exports.V_GGX_SmithCorrelated=de.V_GGX_SmithCorrelated,exports.getDistanceAttenuation=de.getDistanceAttenuation,exports.EPSILON=ce.EPSILON,exports.INFINITY=ce.INFINITY,exports.ShaderNode=ce.ShaderNode,exports.abs=ce.abs,exports.acos=ce.acos,exports.add=ce.add,exports.addTo=ce.addTo,exports.alphaTest=ce.alphaTest,exports.and=ce.and,exports.asin=ce.asin,exports.assign=ce.assign,exports.atan=ce.atan,exports.attribute=ce.attribute,exports.bitAnd=ce.bitAnd,exports.bitOr=ce.bitOr,exports.bitXor=ce.bitXor,exports.bmat3=ce.bmat3,exports.bmat4=ce.bmat4,exports.bool=ce.bool,exports.buffer=ce.buffer,exports.bvec2=ce.bvec2,exports.bvec3=ce.bvec3,exports.bvec4=ce.bvec4,exports.cameraPosition=ce.cameraPosition,exports.ceil=ce.ceil,exports.clamp=ce.clamp,exports.color=ce.color,exports.cond=ce.cond,exports.cos=ce.cos,exports.cross=ce.cross,exports.dFdx=ce.dFdx,exports.dFdy=ce.dFdy,exports.degrees=ce.degrees,exports.diffuseColor=ce.diffuseColor,exports.distance=ce.distance,exports.div=ce.div,exports.dot=ce.dot,exports.element=ce.element,exports.equal=ce.equal,exports.exp=ce.exp,exports.exp2=ce.exp2,exports.faceforward=ce.faceforward,exports.float=ce.float,exports.floor=ce.floor,exports.fract=ce.fract,exports.greaterThan=ce.greaterThan,exports.greaterThanEqual=ce.greaterThanEqual,exports.imat3=ce.imat3,exports.imat4=ce.imat4,exports.int=ce.int,exports.inversesqrt=ce.inversesqrt,exports.invert=ce.invert,exports.ivec2=ce.ivec2,exports.ivec3=ce.ivec3,exports.ivec4=ce.ivec4,exports.join=ce.join,exports.label=ce.label,exports.length=ce.length,exports.lessThan=ce.lessThan,exports.lessThanEqual=ce.lessThanEqual,exports.log=ce.log,exports.log2=ce.log2,exports.mat3=ce.mat3,exports.mat4=ce.mat4,exports.max=ce.max,exports.metalness=ce.metalness,exports.min=ce.min,exports.mix=ce.mix,exports.mod=ce.mod,exports.mul=ce.mul,exports.negate=ce.negate,exports.nodeObject=ce.nodeObject,exports.normalGeometry=ce.normalGeometry,exports.normalLocal=ce.normalLocal,exports.normalView=ce.normalView,exports.normalWorld=ce.normalWorld,exports.normalize=ce.normalize,exports.or=ce.or,exports.positionLocal=ce.positionLocal,exports.positionView=ce.positionView,exports.positionViewDirection=ce.positionViewDirection,exports.positionWorld=ce.positionWorld,exports.pow=ce.pow,exports.pow2=ce.pow2,exports.pow3=ce.pow3,exports.pow4=ce.pow4,exports.radians=ce.radians,exports.reflect=ce.reflect,exports.refract=ce.refract,exports.remainder=ce.remainder,exports.roughness=ce.roughness,exports.round=ce.round,exports.sampler=ce.sampler,exports.saturate=ce.saturate,exports.shiftLeft=ce.shiftLeft,exports.shiftRight=ce.shiftRight,exports.sign=ce.sign,exports.sin=ce.sin,exports.smoothstep=ce.smoothstep,exports.specularColor=ce.specularColor,exports.sqrt=ce.sqrt,exports.step=ce.step,exports.sub=ce.sub,exports.tan=ce.tan,exports.temp=ce.temp,exports.texture=ce.texture,exports.transformDirection=ce.transformDirection,exports.transformedNormalView=ce.transformedNormalView,exports.uint=ce.uint,exports.umat3=ce.umat3,exports.umat4=ce.umat4,exports.uniform=ce.uniform,exports.uv=ce.uv,exports.uvec2=ce.uvec2,exports.uvec3=ce.uvec3,exports.uvec4=ce.uvec4,exports.vec2=ce.vec2,exports.vec3=ce.vec3,exports.vec4=ce.vec4,exports.viewMatrix=ce.viewMatrix,exports.xor=ce.xor,exports.LineBasicNodeMaterial=xe,exports.MeshBasicNodeMaterial=ne,exports.MeshStandardNodeMaterial=Ne,exports.PointsNodeMaterial=ue;
@@ -140,7 +140,11 @@ class NodeBuilder {
140
140
  if (type === 'int') return `${Math.round(value)}`;
141
141
  if (type === 'uint') return value >= 0 ? `${Math.round(value)}u` : '0u';
142
142
  if (type === 'bool') return value ? 'true' : 'false';
143
- if (type === 'color') return `${this.getType('vec3')}( ${toFloat(value.r)}, ${toFloat(value.g)}, ${toFloat(value.b)} )`;
143
+
144
+ if (type === 'color') {
145
+ return `${this.getType('vec3')}( ${toFloat(value.r)}, ${toFloat(value.g)}, ${toFloat(value.b)} )`;
146
+ }
147
+
144
148
  const typeLength = this.getTypeLength(type);
145
149
  const componentType = this.getComponentType(type);
146
150
 
@@ -1 +1 @@
1
- "use strict";var e=require("../../Nodes-627a8bdf.js");require("three"),require("../core/ArrayUniformNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/BypassNode.cjs.js"),require("../core/CodeNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/FunctionCallNode.cjs.js"),require("../core/FunctionNode.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../core/NodeFrame.cjs.js"),require("../core/NodeFunctionInput.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/Object3DNode.cjs.js"),require("../accessors/CubeTextureNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../accessors/ReflectNode.cjs.js"),require("../ShaderNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("../accessors/ModelNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js"),require("../accessors/MaterialNode.cjs.js"),require("../accessors/MaterialReferenceNode.cjs.js"),require("../accessors/ReferenceNode.cjs.js"),require("../accessors/ModelViewProjectionNode.cjs.js"),require("../accessors/PointUVNode.cjs.js"),require("../accessors/SkinningNode.cjs.js"),require("../display/ColorSpaceNode.cjs.js"),require("../display/NormalMapNode.cjs.js"),require("../lights/LightContextNode.cjs.js"),require("../functions/BSDFs.cjs.js"),require("../lights/LightNode.cjs.js"),require("../lights/LightsNode.cjs.js"),require("../utils/SpriteSheetUVNode.cjs.js"),require("../utils/MatcapUVNode.cjs.js"),require("../utils/OscNode.cjs.js"),require("../utils/TimerNode.cjs.js"),require("./NodeMaterialLoader.cjs.js"),require("../procedural/CheckerNode.cjs.js"),require("../fog/FogNode.cjs.js"),require("../fog/FogRangeNode.cjs.js"),require("../materials/LineBasicNodeMaterial.cjs.js"),require("../materials/NodeMaterial.cjs.js"),require("../materials/MeshBasicNodeMaterial.cjs.js"),require("../materials/MeshStandardNodeMaterial.cjs.js"),require("../materials/PointsNodeMaterial.cjs.js"),module.exports=e.NodeLoader;
1
+ "use strict";var e=require("../../Nodes-9aa16d74.js");require("three"),require("../core/ArrayUniformNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/BypassNode.cjs.js"),require("../core/CodeNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/FunctionCallNode.cjs.js"),require("../core/FunctionNode.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../core/NodeFrame.cjs.js"),require("../core/NodeFunctionInput.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/Object3DNode.cjs.js"),require("../accessors/CubeTextureNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../accessors/ReflectNode.cjs.js"),require("../ShaderNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("../accessors/ModelNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js"),require("../accessors/MaterialNode.cjs.js"),require("../accessors/MaterialReferenceNode.cjs.js"),require("../accessors/ReferenceNode.cjs.js"),require("../accessors/ModelViewProjectionNode.cjs.js"),require("../accessors/PointUVNode.cjs.js"),require("../accessors/SkinningNode.cjs.js"),require("../display/ColorSpaceNode.cjs.js"),require("../display/NormalMapNode.cjs.js"),require("../lights/LightContextNode.cjs.js"),require("../functions/BSDFs.cjs.js"),require("../lights/LightNode.cjs.js"),require("../lights/LightsNode.cjs.js"),require("../utils/SpriteSheetUVNode.cjs.js"),require("../utils/MatcapUVNode.cjs.js"),require("../utils/OscNode.cjs.js"),require("../utils/TimerNode.cjs.js"),require("./NodeMaterialLoader.cjs.js"),require("../procedural/CheckerNode.cjs.js"),require("../fog/FogNode.cjs.js"),require("../fog/FogRangeNode.cjs.js"),require("../materials/LineBasicNodeMaterial.cjs.js"),require("../materials/NodeMaterial.cjs.js"),require("../materials/MeshBasicNodeMaterial.cjs.js"),require("../materials/MeshStandardNodeMaterial.cjs.js"),require("../materials/PointsNodeMaterial.cjs.js"),module.exports=e.NodeLoader;
@@ -1 +1 @@
1
- "use strict";var e=require("../../Nodes-627a8bdf.js");require("./NodeMaterialLoader.cjs.js"),require("three"),require("../core/ArrayUniformNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/BypassNode.cjs.js"),require("../core/CodeNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/FunctionCallNode.cjs.js"),require("../core/FunctionNode.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../core/NodeFrame.cjs.js"),require("../core/NodeFunctionInput.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/Object3DNode.cjs.js"),require("../accessors/CubeTextureNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../accessors/ReflectNode.cjs.js"),require("../ShaderNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("../accessors/ModelNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js"),require("../accessors/MaterialNode.cjs.js"),require("../accessors/MaterialReferenceNode.cjs.js"),require("../accessors/ReferenceNode.cjs.js"),require("../accessors/ModelViewProjectionNode.cjs.js"),require("../accessors/PointUVNode.cjs.js"),require("../accessors/SkinningNode.cjs.js"),require("../display/ColorSpaceNode.cjs.js"),require("../display/NormalMapNode.cjs.js"),require("../lights/LightContextNode.cjs.js"),require("../functions/BSDFs.cjs.js"),require("../lights/LightNode.cjs.js"),require("../lights/LightsNode.cjs.js"),require("../utils/SpriteSheetUVNode.cjs.js"),require("../utils/MatcapUVNode.cjs.js"),require("../utils/OscNode.cjs.js"),require("../utils/TimerNode.cjs.js"),require("../procedural/CheckerNode.cjs.js"),require("../fog/FogNode.cjs.js"),require("../fog/FogRangeNode.cjs.js"),require("../materials/LineBasicNodeMaterial.cjs.js"),require("../materials/NodeMaterial.cjs.js"),require("../materials/MeshBasicNodeMaterial.cjs.js"),require("../materials/MeshStandardNodeMaterial.cjs.js"),require("../materials/PointsNodeMaterial.cjs.js"),module.exports=e.NodeObjectLoader;
1
+ "use strict";var e=require("../../Nodes-9aa16d74.js");require("./NodeMaterialLoader.cjs.js"),require("three"),require("../core/ArrayUniformNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/BypassNode.cjs.js"),require("../core/CodeNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/FunctionCallNode.cjs.js"),require("../core/FunctionNode.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../core/NodeFrame.cjs.js"),require("../core/NodeFunctionInput.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/Object3DNode.cjs.js"),require("../accessors/CubeTextureNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../accessors/ReflectNode.cjs.js"),require("../ShaderNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("../accessors/ModelNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js"),require("../accessors/MaterialNode.cjs.js"),require("../accessors/MaterialReferenceNode.cjs.js"),require("../accessors/ReferenceNode.cjs.js"),require("../accessors/ModelViewProjectionNode.cjs.js"),require("../accessors/PointUVNode.cjs.js"),require("../accessors/SkinningNode.cjs.js"),require("../display/ColorSpaceNode.cjs.js"),require("../display/NormalMapNode.cjs.js"),require("../lights/LightContextNode.cjs.js"),require("../functions/BSDFs.cjs.js"),require("../lights/LightNode.cjs.js"),require("../lights/LightsNode.cjs.js"),require("../utils/SpriteSheetUVNode.cjs.js"),require("../utils/MatcapUVNode.cjs.js"),require("../utils/OscNode.cjs.js"),require("../utils/TimerNode.cjs.js"),require("../procedural/CheckerNode.cjs.js"),require("../fog/FogNode.cjs.js"),require("../fog/FogRangeNode.cjs.js"),require("../materials/LineBasicNodeMaterial.cjs.js"),require("../materials/NodeMaterial.cjs.js"),require("../materials/MeshBasicNodeMaterial.cjs.js"),require("../materials/MeshStandardNodeMaterial.cjs.js"),require("../materials/PointsNodeMaterial.cjs.js"),module.exports=e.NodeObjectLoader;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("three");class n extends e.Mesh{constructor(n,o){var t,r;const i=(a=n)&&a.isCubeTexture;var a;const c=(null!=(t=i?null===(r=n.image[0])||void 0===r?void 0:r.width:n.image.width)?t:1024)/4,s=Math.floor(Math.log2(c)),l=Math.pow(2,s),d=[i?"#define ENVMAP_TYPE_CUBE":"","#define CUBEUV_TEXEL_WIDTH "+1/(3*Math.max(l,112)),"#define CUBEUV_TEXEL_HEIGHT "+1/(4*l),`#define CUBEUV_MAX_MIP ${s}.0`].join("\n")+"\n #define ENVMAP_TYPE_CUBE_UV\n varying vec3 vWorldPosition;\n uniform float radius;\n uniform float height;\n uniform float angle;\n #ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube map;\n #else\n uniform sampler2D map;\n #endif\n // From: https://www.shadertoy.com/view/4tsBD7\n float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r ) \n {\n float d = dot ( rd, n );\n \n if( d > 0.0 ) { return 1e6; }\n \n vec3 o = ro - c;\n float t = - dot( n, o ) / d;\n vec3 q = o + rd * t;\n \n return ( dot( q, q ) < r * r ) ? t : 1e6;\n }\n // From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm\n float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra ) \n {\n vec3 oc = ro - ce;\n float b = dot( oc, rd );\n float c = dot( oc, oc ) - ra * ra;\n float h = b * b - c;\n \n if( h < 0.0 ) { return -1.0; }\n \n h = sqrt( h );\n \n return - b + h;\n }\n vec3 project() \n {\n vec3 p = normalize( vWorldPosition );\n vec3 camPos = cameraPosition;\n camPos.y -= height;\n float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );\n if( intersection > 0.0 ) {\n \n vec3 h = vec3( 0.0, - height, 0.0 );\n float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );\n p = ( camPos + min( intersection, intersection2 ) * p ) / radius;\n } else {\n p = vec3( 0.0, 1.0, 0.0 );\n }\n return p;\n }\n #include <common>\n #include <cube_uv_reflection_fragment>\n void main() \n {\n vec3 projectedWorldPosition = project();\n \n #ifdef ENVMAP_TYPE_CUBE\n vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;\n #else\n vec3 direction = normalize( projectedWorldPosition );\n vec2 uv = equirectUv( direction );\n vec3 outcolor = texture2D( map, uv ).rgb;\n #endif\n gl_FragColor = vec4( outcolor, 1.0 );\n #include <tonemapping_fragment>\n #include <encodings_fragment>\n }\n ",u={map:{value:n},height:{value:(null==o?void 0:o.height)||15},radius:{value:(null==o?void 0:o.radius)||100}};super(new e.IcosahedronGeometry(1,16),new e.ShaderMaterial({uniforms:u,fragmentShader:d,vertexShader:"\n varying vec3 vWorldPosition;\n void main() \n {\n vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );\n vWorldPosition = worldPosition.xyz;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }\n ",side:e.DoubleSide}))}set radius(e){this.material.uniforms.radius.value=e}get radius(){return this.material.uniforms.radius.value}set height(e){this.material.uniforms.height.value=e}get height(){return this.material.uniforms.height.value}}exports.GroundProjectedEnv=n;
@@ -0,0 +1,12 @@
1
+ import { Mesh, ShaderMaterial, Texture, CubeTexture, BufferGeometry } from 'three';
2
+ export interface GroundProjectedEnvParameters {
3
+ height?: number;
4
+ radius?: number;
5
+ }
6
+ export declare class GroundProjectedEnv extends Mesh<BufferGeometry, ShaderMaterial> {
7
+ constructor(texture: CubeTexture | Texture, options?: GroundProjectedEnvParameters);
8
+ set radius(radius: number);
9
+ get radius(): number;
10
+ set height(height: number);
11
+ get height(): number;
12
+ }
@@ -0,0 +1,145 @@
1
+ import { Mesh, IcosahedronGeometry, ShaderMaterial, DoubleSide } from 'three';
2
+
3
+ const isCubeTexture = def => def && def.isCubeTexture;
4
+
5
+ class GroundProjectedEnv extends Mesh {
6
+ constructor(texture, options) {
7
+ var _ref, _texture$image$;
8
+
9
+ const isCubeMap = isCubeTexture(texture);
10
+ const w = (_ref = isCubeMap ? (_texture$image$ = texture.image[0]) === null || _texture$image$ === void 0 ? void 0 : _texture$image$.width : texture.image.width) != null ? _ref : 1024;
11
+ const cubeSize = w / 4;
12
+
13
+ const _lodMax = Math.floor(Math.log2(cubeSize));
14
+
15
+ const _cubeSize = Math.pow(2, _lodMax);
16
+
17
+ const width = 3 * Math.max(_cubeSize, 16 * 7);
18
+ const height = 4 * _cubeSize;
19
+ const defines = [isCubeMap ? '#define ENVMAP_TYPE_CUBE' : '', `#define CUBEUV_TEXEL_WIDTH ${1.0 / width}`, `#define CUBEUV_TEXEL_HEIGHT ${1.0 / height}`, `#define CUBEUV_MAX_MIP ${_lodMax}.0`];
20
+ const vertexShader =
21
+ /* glsl */
22
+ `
23
+ varying vec3 vWorldPosition;
24
+ void main()
25
+ {
26
+ vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );
27
+ vWorldPosition = worldPosition.xyz;
28
+
29
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
30
+ }
31
+ `;
32
+ const fragmentShader = defines.join('\n') +
33
+ /* glsl */
34
+ `
35
+ #define ENVMAP_TYPE_CUBE_UV
36
+ varying vec3 vWorldPosition;
37
+ uniform float radius;
38
+ uniform float height;
39
+ uniform float angle;
40
+ #ifdef ENVMAP_TYPE_CUBE
41
+ uniform samplerCube map;
42
+ #else
43
+ uniform sampler2D map;
44
+ #endif
45
+ // From: https://www.shadertoy.com/view/4tsBD7
46
+ float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r )
47
+ {
48
+ float d = dot ( rd, n );
49
+
50
+ if( d > 0.0 ) { return 1e6; }
51
+
52
+ vec3 o = ro - c;
53
+ float t = - dot( n, o ) / d;
54
+ vec3 q = o + rd * t;
55
+
56
+ return ( dot( q, q ) < r * r ) ? t : 1e6;
57
+ }
58
+ // From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm
59
+ float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra )
60
+ {
61
+ vec3 oc = ro - ce;
62
+ float b = dot( oc, rd );
63
+ float c = dot( oc, oc ) - ra * ra;
64
+ float h = b * b - c;
65
+
66
+ if( h < 0.0 ) { return -1.0; }
67
+
68
+ h = sqrt( h );
69
+
70
+ return - b + h;
71
+ }
72
+ vec3 project()
73
+ {
74
+ vec3 p = normalize( vWorldPosition );
75
+ vec3 camPos = cameraPosition;
76
+ camPos.y -= height;
77
+ float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );
78
+ if( intersection > 0.0 ) {
79
+
80
+ vec3 h = vec3( 0.0, - height, 0.0 );
81
+ float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );
82
+ p = ( camPos + min( intersection, intersection2 ) * p ) / radius;
83
+ } else {
84
+ p = vec3( 0.0, 1.0, 0.0 );
85
+ }
86
+ return p;
87
+ }
88
+ #include <common>
89
+ #include <cube_uv_reflection_fragment>
90
+ void main()
91
+ {
92
+ vec3 projectedWorldPosition = project();
93
+
94
+ #ifdef ENVMAP_TYPE_CUBE
95
+ vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;
96
+ #else
97
+ vec3 direction = normalize( projectedWorldPosition );
98
+ vec2 uv = equirectUv( direction );
99
+ vec3 outcolor = texture2D( map, uv ).rgb;
100
+ #endif
101
+ gl_FragColor = vec4( outcolor, 1.0 );
102
+ #include <tonemapping_fragment>
103
+ #include <encodings_fragment>
104
+ }
105
+ `;
106
+ const uniforms = {
107
+ map: {
108
+ value: texture
109
+ },
110
+ height: {
111
+ value: (options === null || options === void 0 ? void 0 : options.height) || 15
112
+ },
113
+ radius: {
114
+ value: (options === null || options === void 0 ? void 0 : options.radius) || 100
115
+ }
116
+ };
117
+ const geometry = new IcosahedronGeometry(1, 16);
118
+ const material = new ShaderMaterial({
119
+ uniforms,
120
+ fragmentShader,
121
+ vertexShader,
122
+ side: DoubleSide
123
+ });
124
+ super(geometry, material);
125
+ }
126
+
127
+ set radius(radius) {
128
+ this.material.uniforms.radius.value = radius;
129
+ }
130
+
131
+ get radius() {
132
+ return this.material.uniforms.radius.value;
133
+ }
134
+
135
+ set height(height) {
136
+ this.material.uniforms.height.value = height;
137
+ }
138
+
139
+ get height() {
140
+ return this.material.uniforms.height.value;
141
+ }
142
+
143
+ }
144
+
145
+ export { GroundProjectedEnv };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-stdlib",
3
- "version": "2.12.1",
3
+ "version": "2.14.0",
4
4
  "private": false,
5
5
  "description": "stand-alone library of threejs examples",
6
6
  "main": "index.cjs.js",
@@ -25,7 +25,7 @@
25
25
  "chevrotain": "^10.1.2",
26
26
  "draco3d": "^1.4.1",
27
27
  "fflate": "^0.6.9",
28
- "ktx-parse": "^0.2.1",
28
+ "ktx-parse": "^0.4.5",
29
29
  "mmd-parser": "^1.0.4",
30
30
  "opentype.js": "^1.3.3",
31
31
  "potpack": "^1.0.1",
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.WorkerPool=class{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(e){if(!this.workers[e]){const s=this.workerCreator();s.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=s}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,s){const r=this.workersResolve[e];if(r&&r(s),this.queue.length){const{resolve:s,msg:r,transfer:t}=this.queue.shift();this.workersResolve[e]=s,this.workers[e].postMessage(r,t)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,s){return new Promise((r=>{const t=this._getIdleWorker();-1!==t?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=r,this.workers[t].postMessage(e,s)):this.queue.push({resolve:r,msg:e,transfer:s})}))}dispose(){this.workers.forEach((e=>e.terminate())),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}};
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @author Deepkolos / https://github.com/deepkolos
3
+ */
4
+ class WorkerPool {
5
+ constructor(pool = 4) {
6
+ this.pool = pool;
7
+ this.queue = [];
8
+ this.workers = [];
9
+ this.workersResolve = [];
10
+ this.workerStatus = 0;
11
+ }
12
+
13
+ _initWorker(workerId) {
14
+ if (!this.workers[workerId]) {
15
+ const worker = this.workerCreator();
16
+ worker.addEventListener('message', this._onMessage.bind(this, workerId));
17
+ this.workers[workerId] = worker;
18
+ }
19
+ }
20
+
21
+ _getIdleWorker() {
22
+ for (let i = 0; i < this.pool; i++) if (!(this.workerStatus & 1 << i)) return i;
23
+
24
+ return -1;
25
+ }
26
+
27
+ _onMessage(workerId, msg) {
28
+ const resolve = this.workersResolve[workerId];
29
+ resolve && resolve(msg);
30
+
31
+ if (this.queue.length) {
32
+ const {
33
+ resolve,
34
+ msg,
35
+ transfer
36
+ } = this.queue.shift();
37
+ this.workersResolve[workerId] = resolve;
38
+ this.workers[workerId].postMessage(msg, transfer);
39
+ } else {
40
+ this.workerStatus ^= 1 << workerId;
41
+ }
42
+ }
43
+
44
+ setWorkerCreator(workerCreator) {
45
+ this.workerCreator = workerCreator;
46
+ }
47
+
48
+ setWorkerLimit(pool) {
49
+ this.pool = pool;
50
+ }
51
+
52
+ postMessage(msg, transfer) {
53
+ return new Promise(resolve => {
54
+ const workerId = this._getIdleWorker();
55
+
56
+ if (workerId !== -1) {
57
+ this._initWorker(workerId);
58
+
59
+ this.workerStatus |= 1 << workerId;
60
+ this.workersResolve[workerId] = resolve;
61
+ this.workers[workerId].postMessage(msg, transfer);
62
+ } else {
63
+ this.queue.push({
64
+ resolve,
65
+ msg,
66
+ transfer
67
+ });
68
+ }
69
+ });
70
+ }
71
+
72
+ dispose() {
73
+ this.workers.forEach(worker => worker.terminate());
74
+ this.workersResolve.length = 0;
75
+ this.workers.length = 0;
76
+ this.queue.length = 0;
77
+ this.workerStatus = 0;
78
+ }
79
+
80
+ }
81
+
82
+ export { WorkerPool };