@plastic-software/three 0.167.3 → 0.174.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Camera } from './Camera.js';
|
|
2
|
-
import
|
|
2
|
+
import { RAD2DEG, DEG2RAD } from '../math/MathUtils.js';
|
|
3
3
|
import { Vector2 } from '../math/Vector2.js';
|
|
4
4
|
import { Vector3 } from '../math/Vector3.js';
|
|
5
5
|
|
|
@@ -7,29 +7,126 @@ const _v3 = /*@__PURE__*/ new Vector3();
|
|
|
7
7
|
const _minTarget = /*@__PURE__*/ new Vector2();
|
|
8
8
|
const _maxTarget = /*@__PURE__*/ new Vector2();
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.
|
|
12
|
+
*
|
|
13
|
+
* This projection mode is designed to mimic the way the human eye sees. It
|
|
14
|
+
* is the most common projection mode used for rendering a 3D scene.
|
|
15
|
+
*
|
|
16
|
+
* ```js
|
|
17
|
+
* const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
|
|
18
|
+
* scene.add( camera );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments Camera
|
|
22
|
+
*/
|
|
11
23
|
class PerspectiveCamera extends Camera {
|
|
12
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new perspective camera.
|
|
27
|
+
*
|
|
28
|
+
* @param {number} [fov=50] - The vertical field of view.
|
|
29
|
+
* @param {number} [aspect=1] - The aspect ratio.
|
|
30
|
+
* @param {number} [near=0.1] - The camera's near plane.
|
|
31
|
+
* @param {number} [far=2000] - The camera's far plane.
|
|
32
|
+
*/
|
|
13
33
|
constructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {
|
|
14
34
|
|
|
15
35
|
super();
|
|
16
36
|
|
|
37
|
+
/**
|
|
38
|
+
* This flag can be used for type testing.
|
|
39
|
+
*
|
|
40
|
+
* @type {boolean}
|
|
41
|
+
* @readonly
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
17
44
|
this.isPerspectiveCamera = true;
|
|
18
45
|
|
|
19
46
|
this.type = 'PerspectiveCamera';
|
|
20
47
|
|
|
48
|
+
/**
|
|
49
|
+
* The vertical field of view, from bottom to top of view,
|
|
50
|
+
* in degrees.
|
|
51
|
+
*
|
|
52
|
+
* @type {number}
|
|
53
|
+
* @default 50
|
|
54
|
+
*/
|
|
21
55
|
this.fov = fov;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The zoom factor of the camera.
|
|
59
|
+
*
|
|
60
|
+
* @type {number}
|
|
61
|
+
* @default 1
|
|
62
|
+
*/
|
|
22
63
|
this.zoom = 1;
|
|
23
64
|
|
|
65
|
+
/**
|
|
66
|
+
* The camera's near plane. The valid range is greater than `0`
|
|
67
|
+
* and less than the current value of {@link PerspectiveCamera#far}.
|
|
68
|
+
*
|
|
69
|
+
* Note that, unlike for the {@link OrthographicCamera}, `0` is <em>not</em> a
|
|
70
|
+
* valid value for a perspective camera's near plane.
|
|
71
|
+
*
|
|
72
|
+
* @type {number}
|
|
73
|
+
* @default 0.1
|
|
74
|
+
*/
|
|
24
75
|
this.near = near;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The camera's far plane. Must be greater than the
|
|
79
|
+
* current value of {@link PerspectiveCamera#near}.
|
|
80
|
+
*
|
|
81
|
+
* @type {number}
|
|
82
|
+
* @default 2000
|
|
83
|
+
*/
|
|
25
84
|
this.far = far;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Object distance used for stereoscopy and depth-of-field effects. This
|
|
88
|
+
* parameter does not influence the projection matrix unless a
|
|
89
|
+
* {@link StereoCamera} is being used.
|
|
90
|
+
*
|
|
91
|
+
* @type {number}
|
|
92
|
+
* @default 10
|
|
93
|
+
*/
|
|
26
94
|
this.focus = 10;
|
|
27
95
|
|
|
96
|
+
/**
|
|
97
|
+
* The aspect ratio, usually the canvas width / canvas height.
|
|
98
|
+
*
|
|
99
|
+
* @type {number}
|
|
100
|
+
* @default 1
|
|
101
|
+
*/
|
|
28
102
|
this.aspect = aspect;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Represents the frustum window specification. This property should not be edited
|
|
106
|
+
* directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.
|
|
107
|
+
*
|
|
108
|
+
* @type {?Object}
|
|
109
|
+
* @default null
|
|
110
|
+
*/
|
|
29
111
|
this.view = null;
|
|
30
112
|
|
|
31
|
-
|
|
32
|
-
|
|
113
|
+
/**
|
|
114
|
+
* Film size used for the larger axis. Default is `35` (millimeters). This
|
|
115
|
+
* parameter does not influence the projection matrix unless {@link PerspectiveCamera#filmOffset}
|
|
116
|
+
* is set to a nonzero value.
|
|
117
|
+
*
|
|
118
|
+
* @type {number}
|
|
119
|
+
* @default 35
|
|
120
|
+
*/
|
|
121
|
+
this.filmGauge = 35;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Horizontal off-center offset in the same unit as {@link PerspectiveCamera#filmGauge}.
|
|
125
|
+
*
|
|
126
|
+
* @type {number}
|
|
127
|
+
* @default 0
|
|
128
|
+
*/
|
|
129
|
+
this.filmOffset = 0;
|
|
33
130
|
|
|
34
131
|
this.updateProjectionMatrix();
|
|
35
132
|
|
|
@@ -57,41 +154,55 @@ class PerspectiveCamera extends Camera {
|
|
|
57
154
|
}
|
|
58
155
|
|
|
59
156
|
/**
|
|
60
|
-
* Sets the FOV by focal length in respect to the current
|
|
157
|
+
* Sets the FOV by focal length in respect to the current {@link PerspectiveCamera#filmGauge}.
|
|
61
158
|
*
|
|
62
159
|
* The default film gauge is 35, so that the focal length can be specified for
|
|
63
160
|
* a 35mm (full frame) camera.
|
|
64
161
|
*
|
|
65
|
-
* Values for focal length and film gauge must have the same unit.
|
|
162
|
+
* @param {number} focalLength - Values for focal length and film gauge must have the same unit.
|
|
66
163
|
*/
|
|
67
164
|
setFocalLength( focalLength ) {
|
|
68
165
|
|
|
69
166
|
/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */
|
|
70
167
|
const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;
|
|
71
168
|
|
|
72
|
-
this.fov =
|
|
169
|
+
this.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );
|
|
73
170
|
this.updateProjectionMatrix();
|
|
74
171
|
|
|
75
172
|
}
|
|
76
173
|
|
|
77
174
|
/**
|
|
78
|
-
*
|
|
175
|
+
* Returns the focal length from the current {@link PerspectiveCamera#fov} and
|
|
176
|
+
* {@link PerspectiveCamera#filmGauge}.
|
|
177
|
+
*
|
|
178
|
+
* @return {number} The computed focal length.
|
|
79
179
|
*/
|
|
80
180
|
getFocalLength() {
|
|
81
181
|
|
|
82
|
-
const vExtentSlope = Math.tan(
|
|
182
|
+
const vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );
|
|
83
183
|
|
|
84
184
|
return 0.5 * this.getFilmHeight() / vExtentSlope;
|
|
85
185
|
|
|
86
186
|
}
|
|
87
187
|
|
|
188
|
+
/**
|
|
189
|
+
* Returns the current vertical field of view angle in degrees considering {@link PerspectiveCamera#zoom}.
|
|
190
|
+
*
|
|
191
|
+
* @return {number} The effective FOV.
|
|
192
|
+
*/
|
|
88
193
|
getEffectiveFOV() {
|
|
89
194
|
|
|
90
|
-
return
|
|
91
|
-
Math.tan(
|
|
195
|
+
return RAD2DEG * 2 * Math.atan(
|
|
196
|
+
Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );
|
|
92
197
|
|
|
93
198
|
}
|
|
94
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Returns the width of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or
|
|
202
|
+
* equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.
|
|
203
|
+
*
|
|
204
|
+
* @return {number} The film width.
|
|
205
|
+
*/
|
|
95
206
|
getFilmWidth() {
|
|
96
207
|
|
|
97
208
|
// film not completely covered in portrait format (aspect < 1)
|
|
@@ -99,6 +210,12 @@ class PerspectiveCamera extends Camera {
|
|
|
99
210
|
|
|
100
211
|
}
|
|
101
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Returns the height of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or
|
|
215
|
+
* equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.
|
|
216
|
+
*
|
|
217
|
+
* @return {number} The film width.
|
|
218
|
+
*/
|
|
102
219
|
getFilmHeight() {
|
|
103
220
|
|
|
104
221
|
// film not completely covered in landscape format (aspect > 1)
|
|
@@ -108,7 +225,11 @@ class PerspectiveCamera extends Camera {
|
|
|
108
225
|
|
|
109
226
|
/**
|
|
110
227
|
* Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.
|
|
111
|
-
* Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.
|
|
228
|
+
* Sets `minTarget` and `maxTarget` to the coordinates of the lower-left and upper-right corners of the view rectangle.
|
|
229
|
+
*
|
|
230
|
+
* @param {number} distance - The viewing distance.
|
|
231
|
+
* @param {Vector2} minTarget - The lower-left corner of the view rectangle is written into this vector.
|
|
232
|
+
* @param {Vector2} maxTarget - The upper-right corner of the view rectangle is written into this vector.
|
|
112
233
|
*/
|
|
113
234
|
getViewBounds( distance, minTarget, maxTarget ) {
|
|
114
235
|
|
|
@@ -124,7 +245,10 @@ class PerspectiveCamera extends Camera {
|
|
|
124
245
|
|
|
125
246
|
/**
|
|
126
247
|
* Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.
|
|
127
|
-
*
|
|
248
|
+
*
|
|
249
|
+
* @param {number} distance - The viewing distance.
|
|
250
|
+
* @param {Vector2} target - The target vector that is used to store result where x is width and y is height.
|
|
251
|
+
* @returns {Vector2} The view size.
|
|
128
252
|
*/
|
|
129
253
|
getViewSize( distance, target ) {
|
|
130
254
|
|
|
@@ -140,34 +264,42 @@ class PerspectiveCamera extends Camera {
|
|
|
140
264
|
*
|
|
141
265
|
* For example, if you have 3x2 monitors and each monitor is 1920x1080 and
|
|
142
266
|
* the monitors are in grid like this
|
|
143
|
-
|
|
267
|
+
*```
|
|
144
268
|
* +---+---+---+
|
|
145
269
|
* | A | B | C |
|
|
146
270
|
* +---+---+---+
|
|
147
271
|
* | D | E | F |
|
|
148
272
|
* +---+---+---+
|
|
273
|
+
*```
|
|
274
|
+
* then for each monitor you would call it like this:
|
|
275
|
+
*```js
|
|
276
|
+
* const w = 1920;
|
|
277
|
+
* const h = 1080;
|
|
278
|
+
* const fullWidth = w * 3;
|
|
279
|
+
* const fullHeight = h * 2;
|
|
149
280
|
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
281
|
+
* // --A--
|
|
282
|
+
* camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
|
|
283
|
+
* // --B--
|
|
284
|
+
* camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
|
|
285
|
+
* // --C--
|
|
286
|
+
* camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
|
|
287
|
+
* // --D--
|
|
288
|
+
* camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
|
|
289
|
+
* // --E--
|
|
290
|
+
* camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
|
|
291
|
+
* // --F--
|
|
292
|
+
* camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
|
|
293
|
+
* ```
|
|
156
294
|
*
|
|
157
|
-
*
|
|
158
|
-
* camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
|
|
159
|
-
* --B--
|
|
160
|
-
* camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
|
|
161
|
-
* --C--
|
|
162
|
-
* camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
|
|
163
|
-
* --D--
|
|
164
|
-
* camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
|
|
165
|
-
* --E--
|
|
166
|
-
* camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
|
|
167
|
-
* --F--
|
|
168
|
-
* camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
|
|
295
|
+
* Note there is no reason monitors have to be the same size or in a grid.
|
|
169
296
|
*
|
|
170
|
-
*
|
|
297
|
+
* @param {number} fullWidth - The full width of multiview setup.
|
|
298
|
+
* @param {number} fullHeight - The full height of multiview setup.
|
|
299
|
+
* @param {number} x - The horizontal offset of the subcamera.
|
|
300
|
+
* @param {number} y - The vertical offset of the subcamera.
|
|
301
|
+
* @param {number} width - The width of subcamera.
|
|
302
|
+
* @param {number} height - The height of subcamera.
|
|
171
303
|
*/
|
|
172
304
|
setViewOffset( fullWidth, fullHeight, x, y, width, height ) {
|
|
173
305
|
|
|
@@ -199,6 +331,9 @@ class PerspectiveCamera extends Camera {
|
|
|
199
331
|
|
|
200
332
|
}
|
|
201
333
|
|
|
334
|
+
/**
|
|
335
|
+
* Removes the view offset from the projection matrix.
|
|
336
|
+
*/
|
|
202
337
|
clearViewOffset() {
|
|
203
338
|
|
|
204
339
|
if ( this.view !== null ) {
|
|
@@ -211,10 +346,14 @@ class PerspectiveCamera extends Camera {
|
|
|
211
346
|
|
|
212
347
|
}
|
|
213
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Updates the camera's projection matrix. Must be called after any change of
|
|
351
|
+
* camera properties.
|
|
352
|
+
*/
|
|
214
353
|
updateProjectionMatrix() {
|
|
215
354
|
|
|
216
355
|
const near = this.near;
|
|
217
|
-
let top = near * Math.tan(
|
|
356
|
+
let top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;
|
|
218
357
|
let height = 2 * top;
|
|
219
358
|
let width = this.aspect * height;
|
|
220
359
|
let left = - 0.5 * width;
|
|
@@ -1,25 +1,66 @@
|
|
|
1
1
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
2
|
-
import
|
|
2
|
+
import { DEG2RAD } from '../math/MathUtils.js';
|
|
3
3
|
import { PerspectiveCamera } from './PerspectiveCamera.js';
|
|
4
4
|
|
|
5
5
|
const _eyeRight = /*@__PURE__*/ new Matrix4();
|
|
6
6
|
const _eyeLeft = /*@__PURE__*/ new Matrix4();
|
|
7
7
|
const _projectionMatrix = /*@__PURE__*/ new Matrix4();
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* A special type of camera that uses two perspective cameras with
|
|
11
|
+
* stereoscopic projection. Can be used for rendering stereo effects
|
|
12
|
+
* like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or
|
|
13
|
+
* [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.
|
|
14
|
+
*/
|
|
9
15
|
class StereoCamera {
|
|
10
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new stereo camera.
|
|
19
|
+
*/
|
|
11
20
|
constructor() {
|
|
12
21
|
|
|
22
|
+
/**
|
|
23
|
+
* The type property is used for detecting the object type
|
|
24
|
+
* in context of serialization/deserialization.
|
|
25
|
+
*
|
|
26
|
+
* @type {string}
|
|
27
|
+
* @readonly
|
|
28
|
+
*/
|
|
13
29
|
this.type = 'StereoCamera';
|
|
14
30
|
|
|
31
|
+
/**
|
|
32
|
+
* The aspect.
|
|
33
|
+
*
|
|
34
|
+
* @type {number}
|
|
35
|
+
* @default 1
|
|
36
|
+
*/
|
|
15
37
|
this.aspect = 1;
|
|
16
38
|
|
|
39
|
+
/**
|
|
40
|
+
* The eye separation which represents the distance
|
|
41
|
+
* between the left and right camera.
|
|
42
|
+
*
|
|
43
|
+
* @type {number}
|
|
44
|
+
* @default 0.064
|
|
45
|
+
*/
|
|
17
46
|
this.eyeSep = 0.064;
|
|
18
47
|
|
|
48
|
+
/**
|
|
49
|
+
* The camera representing the left eye. This is added to layer `1` so objects to be
|
|
50
|
+
* rendered by the left camera must also be added to this layer.
|
|
51
|
+
*
|
|
52
|
+
* @type {PerspectiveCamera}
|
|
53
|
+
*/
|
|
19
54
|
this.cameraL = new PerspectiveCamera();
|
|
20
55
|
this.cameraL.layers.enable( 1 );
|
|
21
56
|
this.cameraL.matrixAutoUpdate = false;
|
|
22
57
|
|
|
58
|
+
/**
|
|
59
|
+
* The camera representing the right eye. This is added to layer `2` so objects to be
|
|
60
|
+
* rendered by the right camera must also be added to this layer.
|
|
61
|
+
*
|
|
62
|
+
* @type {PerspectiveCamera}
|
|
63
|
+
*/
|
|
23
64
|
this.cameraR = new PerspectiveCamera();
|
|
24
65
|
this.cameraR.layers.enable( 2 );
|
|
25
66
|
this.cameraR.matrixAutoUpdate = false;
|
|
@@ -36,6 +77,11 @@ class StereoCamera {
|
|
|
36
77
|
|
|
37
78
|
}
|
|
38
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Updates the stereo camera based on the given perspective camera.
|
|
82
|
+
*
|
|
83
|
+
* @param {PerspectiveCamera} camera - The perspective camera.
|
|
84
|
+
*/
|
|
39
85
|
update( camera ) {
|
|
40
86
|
|
|
41
87
|
const cache = this._cache;
|
|
@@ -60,7 +106,7 @@ class StereoCamera {
|
|
|
60
106
|
_projectionMatrix.copy( camera.projectionMatrix );
|
|
61
107
|
const eyeSepHalf = cache.eyeSep / 2;
|
|
62
108
|
const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;
|
|
63
|
-
const ymax = ( cache.near * Math.tan(
|
|
109
|
+
const ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;
|
|
64
110
|
let xmin, xmax;
|
|
65
111
|
|
|
66
112
|
// translate xOffset
|
package/src/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const REVISION = '
|
|
1
|
+
export const REVISION = '174';
|
|
2
2
|
|
|
3
3
|
export const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
|
|
4
4
|
export const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
|
|
@@ -163,15 +163,10 @@ export const ObjectSpaceNormalMap = 1;
|
|
|
163
163
|
export const NoColorSpace = '';
|
|
164
164
|
export const SRGBColorSpace = 'srgb';
|
|
165
165
|
export const LinearSRGBColorSpace = 'srgb-linear';
|
|
166
|
-
export const DisplayP3ColorSpace = 'display-p3';
|
|
167
|
-
export const LinearDisplayP3ColorSpace = 'display-p3-linear';
|
|
168
166
|
|
|
169
167
|
export const LinearTransfer = 'linear';
|
|
170
168
|
export const SRGBTransfer = 'srgb';
|
|
171
169
|
|
|
172
|
-
export const Rec709Primaries = 'rec709';
|
|
173
|
-
export const P3Primaries = 'p3';
|
|
174
|
-
|
|
175
170
|
export const ZeroStencilOp = 0;
|
|
176
171
|
export const KeepStencilOp = 7680;
|
|
177
172
|
export const ReplaceStencilOp = 7681;
|
|
@@ -214,3 +209,8 @@ export const GLSL3 = '300 es';
|
|
|
214
209
|
|
|
215
210
|
export const WebGLCoordinateSystem = 2000;
|
|
216
211
|
export const WebGPUCoordinateSystem = 2001;
|
|
212
|
+
|
|
213
|
+
export const TimestampQuery = {
|
|
214
|
+
COMPUTE: 'compute',
|
|
215
|
+
RENDER: 'render'
|
|
216
|
+
};
|
|
@@ -3,11 +3,12 @@ import { Vector2 } from '../math/Vector2.js';
|
|
|
3
3
|
import { denormalize, normalize } from '../math/MathUtils.js';
|
|
4
4
|
import { StaticDrawUsage, FloatType } from '../constants.js';
|
|
5
5
|
import { fromHalfFloat, toHalfFloat } from '../extras/DataUtils.js';
|
|
6
|
-
import { warnOnce } from '../utils.js';
|
|
7
6
|
|
|
8
7
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
9
8
|
const _vector2 = /*@__PURE__*/ new Vector2();
|
|
10
9
|
|
|
10
|
+
let _id = 0;
|
|
11
|
+
|
|
11
12
|
class BufferAttribute {
|
|
12
13
|
|
|
13
14
|
constructor( array, itemSize, normalized = false ) {
|
|
@@ -20,6 +21,8 @@ class BufferAttribute {
|
|
|
20
21
|
|
|
21
22
|
this.isBufferAttribute = true;
|
|
22
23
|
|
|
24
|
+
Object.defineProperty( this, 'id', { value: _id ++ } );
|
|
25
|
+
|
|
23
26
|
this.name = '';
|
|
24
27
|
|
|
25
28
|
this.array = array;
|
|
@@ -28,7 +31,6 @@ class BufferAttribute {
|
|
|
28
31
|
this.normalized = normalized;
|
|
29
32
|
|
|
30
33
|
this.usage = StaticDrawUsage;
|
|
31
|
-
this._updateRange = { offset: 0, count: - 1 };
|
|
32
34
|
this.updateRanges = [];
|
|
33
35
|
this.gpuType = FloatType;
|
|
34
36
|
|
|
@@ -44,13 +46,6 @@ class BufferAttribute {
|
|
|
44
46
|
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
get updateRange() {
|
|
48
|
-
|
|
49
|
-
warnOnce( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159
|
|
50
|
-
return this._updateRange;
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
49
|
setUsage( value ) {
|
|
55
50
|
|
|
56
51
|
this.usage = value;
|
|
@@ -7,7 +7,7 @@ import { Sphere } from '../math/Sphere.js';
|
|
|
7
7
|
import { Object3D } from './Object3D.js';
|
|
8
8
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
9
9
|
import { Matrix3 } from '../math/Matrix3.js';
|
|
10
|
-
import
|
|
10
|
+
import { generateUUID } from '../math/MathUtils.js';
|
|
11
11
|
import { arrayNeedsUint32 } from '../utils.js';
|
|
12
12
|
|
|
13
13
|
let _id = 0;
|
|
@@ -29,12 +29,13 @@ class BufferGeometry extends EventDispatcher {
|
|
|
29
29
|
|
|
30
30
|
Object.defineProperty( this, 'id', { value: _id ++ } );
|
|
31
31
|
|
|
32
|
-
this.uuid =
|
|
32
|
+
this.uuid = generateUUID();
|
|
33
33
|
|
|
34
34
|
this.name = '';
|
|
35
35
|
this.type = 'BufferGeometry';
|
|
36
36
|
|
|
37
37
|
this.index = null;
|
|
38
|
+
this.indirect = null;
|
|
38
39
|
this.attributes = {};
|
|
39
40
|
|
|
40
41
|
this.morphAttributes = {};
|
|
@@ -73,6 +74,20 @@ class BufferGeometry extends EventDispatcher {
|
|
|
73
74
|
|
|
74
75
|
}
|
|
75
76
|
|
|
77
|
+
setIndirect( indirect ) {
|
|
78
|
+
|
|
79
|
+
this.indirect = indirect;
|
|
80
|
+
|
|
81
|
+
return this;
|
|
82
|
+
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
getIndirect() {
|
|
86
|
+
|
|
87
|
+
return this.indirect;
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
76
91
|
getAttribute( name ) {
|
|
77
92
|
|
|
78
93
|
return this.attributes[ name ];
|
|
@@ -272,16 +287,41 @@ class BufferGeometry extends EventDispatcher {
|
|
|
272
287
|
|
|
273
288
|
setFromPoints( points ) {
|
|
274
289
|
|
|
275
|
-
const
|
|
290
|
+
const positionAttribute = this.getAttribute( 'position' );
|
|
276
291
|
|
|
277
|
-
|
|
292
|
+
if ( positionAttribute === undefined ) {
|
|
278
293
|
|
|
279
|
-
const
|
|
280
|
-
position.push( point.x, point.y, point.z || 0 );
|
|
294
|
+
const position = [];
|
|
281
295
|
|
|
282
|
-
|
|
296
|
+
for ( let i = 0, l = points.length; i < l; i ++ ) {
|
|
297
|
+
|
|
298
|
+
const point = points[ i ];
|
|
299
|
+
position.push( point.x, point.y, point.z || 0 );
|
|
300
|
+
|
|
301
|
+
}
|
|
283
302
|
|
|
284
|
-
|
|
303
|
+
this.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );
|
|
304
|
+
|
|
305
|
+
} else {
|
|
306
|
+
|
|
307
|
+
const l = Math.min( points.length, positionAttribute.count ); // make sure data do not exceed buffer size
|
|
308
|
+
|
|
309
|
+
for ( let i = 0; i < l; i ++ ) {
|
|
310
|
+
|
|
311
|
+
const point = points[ i ];
|
|
312
|
+
positionAttribute.setXYZ( i, point.x, point.y, point.z || 0 );
|
|
313
|
+
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
if ( points.length > positionAttribute.count ) {
|
|
317
|
+
|
|
318
|
+
console.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
|
|
319
|
+
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
positionAttribute.needsUpdate = true;
|
|
323
|
+
|
|
324
|
+
}
|
|
285
325
|
|
|
286
326
|
return this;
|
|
287
327
|
|
package/src/core/Clock.js
CHANGED
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* This modules allows to dispatch event objects on custom JavaScript objects.
|
|
3
|
+
*
|
|
4
|
+
* Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}
|
|
5
|
+
*
|
|
6
|
+
* Code Example:
|
|
7
|
+
* ```js
|
|
8
|
+
* class Car extends EventDispatcher {
|
|
9
|
+
* start() {
|
|
10
|
+
* this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );
|
|
11
|
+
* }
|
|
12
|
+
*};
|
|
13
|
+
*
|
|
14
|
+
* // Using events with the custom object
|
|
15
|
+
* const car = new Car();
|
|
16
|
+
* car.addEventListener( 'start', function ( event ) {
|
|
17
|
+
* alert( event.message );
|
|
18
|
+
* } );
|
|
19
|
+
*
|
|
20
|
+
* car.start();
|
|
21
|
+
* ```
|
|
3
22
|
*/
|
|
4
|
-
|
|
5
23
|
class EventDispatcher {
|
|
6
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Adds the given event listener to the given event type.
|
|
27
|
+
*
|
|
28
|
+
* @param {string} type - The type of event to listen to.
|
|
29
|
+
* @param {Function} listener - The function that gets called when the event is fired.
|
|
30
|
+
*/
|
|
7
31
|
addEventListener( type, listener ) {
|
|
8
32
|
|
|
9
33
|
if ( this._listeners === undefined ) this._listeners = {};
|
|
@@ -24,21 +48,35 @@ class EventDispatcher {
|
|
|
24
48
|
|
|
25
49
|
}
|
|
26
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Returns `true` if the given event listener has been added to the given event type.
|
|
53
|
+
*
|
|
54
|
+
* @param {string} type - The type of event.
|
|
55
|
+
* @param {Function} listener - The listener to check.
|
|
56
|
+
* @return {boolean} Whether the given event listener has been added to the given event type.
|
|
57
|
+
*/
|
|
27
58
|
hasEventListener( type, listener ) {
|
|
28
59
|
|
|
29
|
-
if ( this._listeners === undefined ) return false;
|
|
30
|
-
|
|
31
60
|
const listeners = this._listeners;
|
|
32
61
|
|
|
62
|
+
if ( listeners === undefined ) return false;
|
|
63
|
+
|
|
33
64
|
return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;
|
|
34
65
|
|
|
35
66
|
}
|
|
36
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Removes the given event listener from the given event type.
|
|
70
|
+
*
|
|
71
|
+
* @param {string} type - The type of event.
|
|
72
|
+
* @param {Function} listener - The listener to remove.
|
|
73
|
+
*/
|
|
37
74
|
removeEventListener( type, listener ) {
|
|
38
75
|
|
|
39
|
-
if ( this._listeners === undefined ) return;
|
|
40
|
-
|
|
41
76
|
const listeners = this._listeners;
|
|
77
|
+
|
|
78
|
+
if ( listeners === undefined ) return;
|
|
79
|
+
|
|
42
80
|
const listenerArray = listeners[ type ];
|
|
43
81
|
|
|
44
82
|
if ( listenerArray !== undefined ) {
|
|
@@ -55,11 +93,17 @@ class EventDispatcher {
|
|
|
55
93
|
|
|
56
94
|
}
|
|
57
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Dispatches an event object.
|
|
98
|
+
*
|
|
99
|
+
* @param {Object} event - The event that gets fired.
|
|
100
|
+
*/
|
|
58
101
|
dispatchEvent( event ) {
|
|
59
102
|
|
|
60
|
-
if ( this._listeners === undefined ) return;
|
|
61
|
-
|
|
62
103
|
const listeners = this._listeners;
|
|
104
|
+
|
|
105
|
+
if ( listeners === undefined ) return;
|
|
106
|
+
|
|
63
107
|
const listenerArray = listeners[ event.type ];
|
|
64
108
|
|
|
65
109
|
if ( listenerArray !== undefined ) {
|