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.
- package/{Nodes-607e9ed8.js → Nodes-4f766d71.js} +0 -0
- package/{Nodes-627a8bdf.js → Nodes-9aa16d74.js} +0 -0
- package/geometries/ConvexGeometry.cjs.js +1 -1
- package/geometries/ConvexGeometry.js +1 -1
- package/index.cjs.js +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/loaders/FontLoader.cjs.js +1 -1
- package/loaders/FontLoader.d.ts +8 -1
- package/loaders/FontLoader.js +18 -6
- package/loaders/KTX2Loader.cjs.js +1 -1
- package/loaders/KTX2Loader.js +493 -102
- package/loaders/NodeMaterialLoader.cjs.js +1 -1
- package/loaders/RGBMLoader.js +248 -177
- package/misc/ProgressiveLightmap.cjs.js +1 -1
- package/misc/ProgressiveLightmap.js +2 -2
- package/nodes/Nodes.cjs.js +1 -1
- package/nodes/core/NodeBuilder.js +5 -1
- package/nodes/loaders/NodeLoader.cjs.js +1 -1
- package/nodes/loaders/NodeObjectLoader.cjs.js +1 -1
- package/objects/GroundProjectedEnv.cjs.js +1 -0
- package/objects/GroundProjectedEnv.d.ts +12 -0
- package/objects/GroundProjectedEnv.js +145 -0
- package/package.json +2 -2
- package/utils/WorkerPool.cjs.js +1 -0
- package/utils/WorkerPool.js +82 -0
package/nodes/Nodes.cjs.js
CHANGED
@@ -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-
|
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
|
-
|
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-
|
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-
|
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.
|
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.
|
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 };
|