super-three 0.173.4 → 0.175.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/build/three.cjs +22198 -1564
- package/build/three.core.js +21287 -1346
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +882 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19358 -17482
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19342 -17482
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- 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 +28 -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 +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- 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 +63 -0
- 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/extras/lib/earcut.js +685 -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 +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- 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 +45 -5
- 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 +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- 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 +94 -0
- package/src/math/MathUtils.js +405 -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 +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- 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 +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +187 -11
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
package/src/audio/Audio.js
CHANGED
|
@@ -1,48 +1,239 @@
|
|
|
1
1
|
import { Object3D } from '../core/Object3D.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Represents a non-positional ( global ) audio object.
|
|
5
|
+
*
|
|
6
|
+
* This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* // create an AudioListener and add it to the camera
|
|
10
|
+
* const listener = new THREE.AudioListener();
|
|
11
|
+
* camera.add( listener );
|
|
12
|
+
*
|
|
13
|
+
* // create a global audio source
|
|
14
|
+
* const sound = new THREE.Audio( listener );
|
|
15
|
+
*
|
|
16
|
+
* // load a sound and set it as the Audio object's buffer
|
|
17
|
+
* const audioLoader = new THREE.AudioLoader();
|
|
18
|
+
* audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
|
|
19
|
+
* sound.setBuffer( buffer );
|
|
20
|
+
* sound.setLoop( true );
|
|
21
|
+
* sound.setVolume( 0.5 );
|
|
22
|
+
* sound.play();
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @augments Object3D
|
|
27
|
+
*/
|
|
3
28
|
class Audio extends Object3D {
|
|
4
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new audio.
|
|
32
|
+
*
|
|
33
|
+
* @param {AudioListener} listener - The global audio listener.
|
|
34
|
+
*/
|
|
5
35
|
constructor( listener ) {
|
|
6
36
|
|
|
7
37
|
super();
|
|
8
38
|
|
|
9
39
|
this.type = 'Audio';
|
|
10
40
|
|
|
41
|
+
/**
|
|
42
|
+
* The global audio listener.
|
|
43
|
+
*
|
|
44
|
+
* @type {AudioListener}
|
|
45
|
+
* @readonly
|
|
46
|
+
*/
|
|
11
47
|
this.listener = listener;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The audio context.
|
|
51
|
+
*
|
|
52
|
+
* @type {AudioContext}
|
|
53
|
+
* @readonly
|
|
54
|
+
*/
|
|
12
55
|
this.context = listener.context;
|
|
13
56
|
|
|
57
|
+
/**
|
|
58
|
+
* The gain node used for volume control.
|
|
59
|
+
*
|
|
60
|
+
* @type {GainNode}
|
|
61
|
+
* @readonly
|
|
62
|
+
*/
|
|
14
63
|
this.gain = this.context.createGain();
|
|
15
64
|
this.gain.connect( listener.getInput() );
|
|
16
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Whether to start playback automatically or not.
|
|
68
|
+
*
|
|
69
|
+
* @type {boolean}
|
|
70
|
+
* @default false
|
|
71
|
+
*/
|
|
17
72
|
this.autoplay = false;
|
|
18
73
|
|
|
74
|
+
/**
|
|
75
|
+
* A reference to an audio buffer.
|
|
76
|
+
*
|
|
77
|
+
* Defined via {@link Audio#setBuffer}.
|
|
78
|
+
*
|
|
79
|
+
* @type {?AudioBuffer}
|
|
80
|
+
* @default null
|
|
81
|
+
* @readonly
|
|
82
|
+
*/
|
|
19
83
|
this.buffer = null;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Modify pitch, measured in cents. +/- 100 is a semitone.
|
|
87
|
+
* +/- 1200 is an octave.
|
|
88
|
+
*
|
|
89
|
+
* Defined via {@link Audio#setDetune}.
|
|
90
|
+
*
|
|
91
|
+
* @type {number}
|
|
92
|
+
* @default 0
|
|
93
|
+
* @readonly
|
|
94
|
+
*/
|
|
20
95
|
this.detune = 0;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Whether the audio should loop or not.
|
|
99
|
+
*
|
|
100
|
+
* Defined via {@link Audio#setLoop}.
|
|
101
|
+
*
|
|
102
|
+
* @type {boolean}
|
|
103
|
+
* @default false
|
|
104
|
+
* @readonly
|
|
105
|
+
*/
|
|
21
106
|
this.loop = false;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Defines where in the audio buffer the replay should
|
|
110
|
+
* start, in seconds.
|
|
111
|
+
*
|
|
112
|
+
* @type {number}
|
|
113
|
+
* @default 0
|
|
114
|
+
*/
|
|
22
115
|
this.loopStart = 0;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Defines where in the audio buffer the replay should
|
|
119
|
+
* stop, in seconds.
|
|
120
|
+
*
|
|
121
|
+
* @type {number}
|
|
122
|
+
* @default 0
|
|
123
|
+
*/
|
|
23
124
|
this.loopEnd = 0;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* An offset to the time within the audio buffer the playback
|
|
128
|
+
* should begin, in seconds.
|
|
129
|
+
*
|
|
130
|
+
* @type {number}
|
|
131
|
+
* @default 0
|
|
132
|
+
*/
|
|
24
133
|
this.offset = 0;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Overrides the default duration of the audio.
|
|
137
|
+
*
|
|
138
|
+
* @type {undefined|number}
|
|
139
|
+
* @default undefined
|
|
140
|
+
*/
|
|
25
141
|
this.duration = undefined;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* The playback speed.
|
|
145
|
+
*
|
|
146
|
+
* Defined via {@link Audio#setPlaybackRate}.
|
|
147
|
+
*
|
|
148
|
+
* @type {number}
|
|
149
|
+
* @readonly
|
|
150
|
+
* @default 1
|
|
151
|
+
*/
|
|
26
152
|
this.playbackRate = 1;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Indicates whether the audio is playing or not.
|
|
156
|
+
*
|
|
157
|
+
* This flag will be automatically set when using {@link Audio#play},
|
|
158
|
+
* {@link Audio#pause}, {@link Audio#stop}.
|
|
159
|
+
*
|
|
160
|
+
* @type {boolean}
|
|
161
|
+
* @readonly
|
|
162
|
+
* @default false
|
|
163
|
+
*/
|
|
27
164
|
this.isPlaying = false;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Indicates whether the audio playback can be controlled
|
|
168
|
+
* with method like {@link Audio#play} or {@link Audio#pause}.
|
|
169
|
+
*
|
|
170
|
+
* This flag will be automatically set when audio sources are
|
|
171
|
+
* defined.
|
|
172
|
+
*
|
|
173
|
+
* @type {boolean}
|
|
174
|
+
* @readonly
|
|
175
|
+
* @default true
|
|
176
|
+
*/
|
|
28
177
|
this.hasPlaybackControl = true;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Holds a reference to the current audio source.
|
|
181
|
+
*
|
|
182
|
+
* The property is automatically by one of the `set*()` methods.
|
|
183
|
+
*
|
|
184
|
+
* @type {?AudioNode}
|
|
185
|
+
* @readonly
|
|
186
|
+
* @default null
|
|
187
|
+
*/
|
|
29
188
|
this.source = null;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Defines the source type.
|
|
192
|
+
*
|
|
193
|
+
* The property is automatically by one of the `set*()` methods.
|
|
194
|
+
*
|
|
195
|
+
* @type {('empty'|'audioNode'|'mediaNode'|'mediaStreamNode'|'buffer')}
|
|
196
|
+
* @readonly
|
|
197
|
+
* @default 'empty'
|
|
198
|
+
*/
|
|
30
199
|
this.sourceType = 'empty';
|
|
31
200
|
|
|
32
201
|
this._startedAt = 0;
|
|
33
202
|
this._progress = 0;
|
|
34
203
|
this._connected = false;
|
|
35
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Can be used to apply a variety of low-order filters to create
|
|
207
|
+
* more complex sound effects e.g. via `BiquadFilterNode`.
|
|
208
|
+
*
|
|
209
|
+
* The property is automatically set by {@link Audio#setFilters}.
|
|
210
|
+
*
|
|
211
|
+
* @type {Array<AudioNode>}
|
|
212
|
+
* @readonly
|
|
213
|
+
*/
|
|
36
214
|
this.filters = [];
|
|
37
215
|
|
|
38
216
|
}
|
|
39
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Returns the output audio node.
|
|
220
|
+
*
|
|
221
|
+
* @return {GainNode} The output node.
|
|
222
|
+
*/
|
|
40
223
|
getOutput() {
|
|
41
224
|
|
|
42
225
|
return this.gain;
|
|
43
226
|
|
|
44
227
|
}
|
|
45
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Sets the given audio node as the source of this instance.
|
|
231
|
+
*
|
|
232
|
+
* {@link Audio#sourceType} is set to `audioNode` and {@link Audio#hasPlaybackControl} to `false`.
|
|
233
|
+
*
|
|
234
|
+
* @param {AudioNode} audioNode - The audio node like an instance of `OscillatorNode`.
|
|
235
|
+
* @return {Audio} A reference to this instance.
|
|
236
|
+
*/
|
|
46
237
|
setNodeSource( audioNode ) {
|
|
47
238
|
|
|
48
239
|
this.hasPlaybackControl = false;
|
|
@@ -54,6 +245,14 @@ class Audio extends Object3D {
|
|
|
54
245
|
|
|
55
246
|
}
|
|
56
247
|
|
|
248
|
+
/**
|
|
249
|
+
* Sets the given media element as the source of this instance.
|
|
250
|
+
*
|
|
251
|
+
* {@link Audio#sourceType} is set to `mediaNode` and {@link Audio#hasPlaybackControl} to `false`.
|
|
252
|
+
*
|
|
253
|
+
* @param {HTMLMediaElement} mediaElement - The media element.
|
|
254
|
+
* @return {Audio} A reference to this instance.
|
|
255
|
+
*/
|
|
57
256
|
setMediaElementSource( mediaElement ) {
|
|
58
257
|
|
|
59
258
|
this.hasPlaybackControl = false;
|
|
@@ -65,6 +264,14 @@ class Audio extends Object3D {
|
|
|
65
264
|
|
|
66
265
|
}
|
|
67
266
|
|
|
267
|
+
/**
|
|
268
|
+
* Sets the given media stream as the source of this instance.
|
|
269
|
+
*
|
|
270
|
+
* {@link Audio#sourceType} is set to `mediaStreamNode` and {@link Audio#hasPlaybackControl} to `false`.
|
|
271
|
+
*
|
|
272
|
+
* @param {MediaStream} mediaStream - The media stream.
|
|
273
|
+
* @return {Audio} A reference to this instance.
|
|
274
|
+
*/
|
|
68
275
|
setMediaStreamSource( mediaStream ) {
|
|
69
276
|
|
|
70
277
|
this.hasPlaybackControl = false;
|
|
@@ -76,6 +283,14 @@ class Audio extends Object3D {
|
|
|
76
283
|
|
|
77
284
|
}
|
|
78
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Sets the given audio buffer as the source of this instance.
|
|
288
|
+
*
|
|
289
|
+
* {@link Audio#sourceType} is set to `buffer` and {@link Audio#hasPlaybackControl} to `true`.
|
|
290
|
+
*
|
|
291
|
+
* @param {AudioBuffer} audioBuffer - The audio buffer.
|
|
292
|
+
* @return {Audio} A reference to this instance.
|
|
293
|
+
*/
|
|
79
294
|
setBuffer( audioBuffer ) {
|
|
80
295
|
|
|
81
296
|
this.buffer = audioBuffer;
|
|
@@ -87,6 +302,14 @@ class Audio extends Object3D {
|
|
|
87
302
|
|
|
88
303
|
}
|
|
89
304
|
|
|
305
|
+
/**
|
|
306
|
+
* Starts the playback of the audio.
|
|
307
|
+
*
|
|
308
|
+
* Can only be used with compatible audio sources that allow playback control.
|
|
309
|
+
*
|
|
310
|
+
* @param {number} [delay=0] - The delay, in seconds, at which the audio should start playing.
|
|
311
|
+
* @return {Audio|undefined} A reference to this instance.
|
|
312
|
+
*/
|
|
90
313
|
play( delay = 0 ) {
|
|
91
314
|
|
|
92
315
|
if ( this.isPlaying === true ) {
|
|
@@ -124,6 +347,13 @@ class Audio extends Object3D {
|
|
|
124
347
|
|
|
125
348
|
}
|
|
126
349
|
|
|
350
|
+
/**
|
|
351
|
+
* Pauses the playback of the audio.
|
|
352
|
+
*
|
|
353
|
+
* Can only be used with compatible audio sources that allow playback control.
|
|
354
|
+
*
|
|
355
|
+
* @return {Audio|undefined} A reference to this instance.
|
|
356
|
+
*/
|
|
127
357
|
pause() {
|
|
128
358
|
|
|
129
359
|
if ( this.hasPlaybackControl === false ) {
|
|
@@ -158,6 +388,14 @@ class Audio extends Object3D {
|
|
|
158
388
|
|
|
159
389
|
}
|
|
160
390
|
|
|
391
|
+
/**
|
|
392
|
+
* Stops the playback of the audio.
|
|
393
|
+
*
|
|
394
|
+
* Can only be used with compatible audio sources that allow playback control.
|
|
395
|
+
*
|
|
396
|
+
* @param {number} [delay=0] - The delay, in seconds, at which the audio should stop playing.
|
|
397
|
+
* @return {Audio|undefined} A reference to this instance.
|
|
398
|
+
*/
|
|
161
399
|
stop( delay = 0 ) {
|
|
162
400
|
|
|
163
401
|
if ( this.hasPlaybackControl === false ) {
|
|
@@ -182,6 +420,12 @@ class Audio extends Object3D {
|
|
|
182
420
|
|
|
183
421
|
}
|
|
184
422
|
|
|
423
|
+
/**
|
|
424
|
+
* Connects to the audio source. This is used internally on
|
|
425
|
+
* initialisation and when setting / removing filters.
|
|
426
|
+
*
|
|
427
|
+
* @return {Audio} A reference to this instance.
|
|
428
|
+
*/
|
|
185
429
|
connect() {
|
|
186
430
|
|
|
187
431
|
if ( this.filters.length > 0 ) {
|
|
@@ -208,6 +452,12 @@ class Audio extends Object3D {
|
|
|
208
452
|
|
|
209
453
|
}
|
|
210
454
|
|
|
455
|
+
/**
|
|
456
|
+
* Disconnects to the audio source. This is used internally on
|
|
457
|
+
* initialisation and when setting / removing filters.
|
|
458
|
+
*
|
|
459
|
+
* @return {Audio|undefined} A reference to this instance.
|
|
460
|
+
*/
|
|
211
461
|
disconnect() {
|
|
212
462
|
|
|
213
463
|
if ( this._connected === false ) {
|
|
@@ -240,12 +490,23 @@ class Audio extends Object3D {
|
|
|
240
490
|
|
|
241
491
|
}
|
|
242
492
|
|
|
493
|
+
/**
|
|
494
|
+
* Returns the current set filters.
|
|
495
|
+
*
|
|
496
|
+
* @return {Array<AudioNode>} The list of filters.
|
|
497
|
+
*/
|
|
243
498
|
getFilters() {
|
|
244
499
|
|
|
245
500
|
return this.filters;
|
|
246
501
|
|
|
247
502
|
}
|
|
248
503
|
|
|
504
|
+
/**
|
|
505
|
+
* Sets an array of filters and connects them with the audio source.
|
|
506
|
+
*
|
|
507
|
+
* @param {Array<AudioNode>} [value] - A list of filters.
|
|
508
|
+
* @return {Audio} A reference to this instance.
|
|
509
|
+
*/
|
|
249
510
|
setFilters( value ) {
|
|
250
511
|
|
|
251
512
|
if ( ! value ) value = [];
|
|
@@ -266,6 +527,12 @@ class Audio extends Object3D {
|
|
|
266
527
|
|
|
267
528
|
}
|
|
268
529
|
|
|
530
|
+
/**
|
|
531
|
+
* Defines the detuning of oscillation in cents.
|
|
532
|
+
*
|
|
533
|
+
* @param {number} value - The detuning of oscillation in cents.
|
|
534
|
+
* @return {Audio} A reference to this instance.
|
|
535
|
+
*/
|
|
269
536
|
setDetune( value ) {
|
|
270
537
|
|
|
271
538
|
this.detune = value;
|
|
@@ -280,24 +547,48 @@ class Audio extends Object3D {
|
|
|
280
547
|
|
|
281
548
|
}
|
|
282
549
|
|
|
550
|
+
/**
|
|
551
|
+
* Returns the detuning of oscillation in cents.
|
|
552
|
+
*
|
|
553
|
+
* @return {number} The detuning of oscillation in cents.
|
|
554
|
+
*/
|
|
283
555
|
getDetune() {
|
|
284
556
|
|
|
285
557
|
return this.detune;
|
|
286
558
|
|
|
287
559
|
}
|
|
288
560
|
|
|
561
|
+
/**
|
|
562
|
+
* Returns the first filter in the list of filters.
|
|
563
|
+
*
|
|
564
|
+
* @return {AudioNode|undefined} The first filter in the list of filters.
|
|
565
|
+
*/
|
|
289
566
|
getFilter() {
|
|
290
567
|
|
|
291
568
|
return this.getFilters()[ 0 ];
|
|
292
569
|
|
|
293
570
|
}
|
|
294
571
|
|
|
572
|
+
/**
|
|
573
|
+
* Applies a single filter node to the audio.
|
|
574
|
+
*
|
|
575
|
+
* @param {AudioNode} [filter] - The filter to set.
|
|
576
|
+
* @return {Audio} A reference to this instance.
|
|
577
|
+
*/
|
|
295
578
|
setFilter( filter ) {
|
|
296
579
|
|
|
297
580
|
return this.setFilters( filter ? [ filter ] : [] );
|
|
298
581
|
|
|
299
582
|
}
|
|
300
583
|
|
|
584
|
+
/**
|
|
585
|
+
* Sets the playback rate.
|
|
586
|
+
*
|
|
587
|
+
* Can only be used with compatible audio sources that allow playback control.
|
|
588
|
+
*
|
|
589
|
+
* @param {number} [value] - The playback rate to set.
|
|
590
|
+
* @return {Audio|undefined} A reference to this instance.
|
|
591
|
+
*/
|
|
301
592
|
setPlaybackRate( value ) {
|
|
302
593
|
|
|
303
594
|
if ( this.hasPlaybackControl === false ) {
|
|
@@ -319,12 +610,20 @@ class Audio extends Object3D {
|
|
|
319
610
|
|
|
320
611
|
}
|
|
321
612
|
|
|
613
|
+
/**
|
|
614
|
+
* Returns the current playback rate.
|
|
615
|
+
|
|
616
|
+
* @return {number} The playback rate.
|
|
617
|
+
*/
|
|
322
618
|
getPlaybackRate() {
|
|
323
619
|
|
|
324
620
|
return this.playbackRate;
|
|
325
621
|
|
|
326
622
|
}
|
|
327
623
|
|
|
624
|
+
/**
|
|
625
|
+
* Automatically called when playback finished.
|
|
626
|
+
*/
|
|
328
627
|
onEnded() {
|
|
329
628
|
|
|
330
629
|
this.isPlaying = false;
|
|
@@ -332,6 +631,13 @@ class Audio extends Object3D {
|
|
|
332
631
|
|
|
333
632
|
}
|
|
334
633
|
|
|
634
|
+
/**
|
|
635
|
+
* Returns the loop flag.
|
|
636
|
+
*
|
|
637
|
+
* Can only be used with compatible audio sources that allow playback control.
|
|
638
|
+
*
|
|
639
|
+
* @return {boolean} Whether the audio should loop or not.
|
|
640
|
+
*/
|
|
335
641
|
getLoop() {
|
|
336
642
|
|
|
337
643
|
if ( this.hasPlaybackControl === false ) {
|
|
@@ -345,6 +651,14 @@ class Audio extends Object3D {
|
|
|
345
651
|
|
|
346
652
|
}
|
|
347
653
|
|
|
654
|
+
/**
|
|
655
|
+
* Sets the loop flag.
|
|
656
|
+
*
|
|
657
|
+
* Can only be used with compatible audio sources that allow playback control.
|
|
658
|
+
*
|
|
659
|
+
* @param {boolean} value - Whether the audio should loop or not.
|
|
660
|
+
* @return {Audio|undefined} A reference to this instance.
|
|
661
|
+
*/
|
|
348
662
|
setLoop( value ) {
|
|
349
663
|
|
|
350
664
|
if ( this.hasPlaybackControl === false ) {
|
|
@@ -366,6 +680,13 @@ class Audio extends Object3D {
|
|
|
366
680
|
|
|
367
681
|
}
|
|
368
682
|
|
|
683
|
+
/**
|
|
684
|
+
* Sets the loop start value which defines where in the audio buffer the replay should
|
|
685
|
+
* start, in seconds.
|
|
686
|
+
*
|
|
687
|
+
* @param {number} value - The loop start value.
|
|
688
|
+
* @return {Audio} A reference to this instance.
|
|
689
|
+
*/
|
|
369
690
|
setLoopStart( value ) {
|
|
370
691
|
|
|
371
692
|
this.loopStart = value;
|
|
@@ -374,6 +695,13 @@ class Audio extends Object3D {
|
|
|
374
695
|
|
|
375
696
|
}
|
|
376
697
|
|
|
698
|
+
/**
|
|
699
|
+
* Sets the loop end value which defines where in the audio buffer the replay should
|
|
700
|
+
* stop, in seconds.
|
|
701
|
+
*
|
|
702
|
+
* @param {number} value - The loop end value.
|
|
703
|
+
* @return {Audio} A reference to this instance.
|
|
704
|
+
*/
|
|
377
705
|
setLoopEnd( value ) {
|
|
378
706
|
|
|
379
707
|
this.loopEnd = value;
|
|
@@ -382,12 +710,23 @@ class Audio extends Object3D {
|
|
|
382
710
|
|
|
383
711
|
}
|
|
384
712
|
|
|
713
|
+
/**
|
|
714
|
+
* Returns the volume.
|
|
715
|
+
*
|
|
716
|
+
* @return {number} The volume.
|
|
717
|
+
*/
|
|
385
718
|
getVolume() {
|
|
386
719
|
|
|
387
720
|
return this.gain.gain.value;
|
|
388
721
|
|
|
389
722
|
}
|
|
390
723
|
|
|
724
|
+
/**
|
|
725
|
+
* Sets the volume.
|
|
726
|
+
*
|
|
727
|
+
* @param {number} value - The volume to set.
|
|
728
|
+
* @return {Audio} A reference to this instance.
|
|
729
|
+
*/
|
|
391
730
|
setVolume( value ) {
|
|
392
731
|
|
|
393
732
|
this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );
|
|
@@ -1,17 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This class can be used to analyse audio data.
|
|
3
|
+
*
|
|
4
|
+
* ```js
|
|
5
|
+
* // create an AudioListener and add it to the camera
|
|
6
|
+
* const listener = new THREE.AudioListener();
|
|
7
|
+
* camera.add( listener );
|
|
8
|
+
*
|
|
9
|
+
* // create an Audio source
|
|
10
|
+
* const sound = new THREE.Audio( listener );
|
|
11
|
+
*
|
|
12
|
+
* // load a sound and set it as the Audio object's buffer
|
|
13
|
+
* const audioLoader = new THREE.AudioLoader();
|
|
14
|
+
* audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
|
|
15
|
+
* sound.setBuffer( buffer );
|
|
16
|
+
* sound.setLoop(true);
|
|
17
|
+
* sound.setVolume(0.5);
|
|
18
|
+
* sound.play();
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // create an AudioAnalyser, passing in the sound and desired fftSize
|
|
22
|
+
* const analyser = new THREE.AudioAnalyser( sound, 32 );
|
|
23
|
+
*
|
|
24
|
+
* // get the average frequency of the sound
|
|
25
|
+
* const data = analyser.getAverageFrequency();
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
1
28
|
class AudioAnalyser {
|
|
2
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new audio analyzer.
|
|
32
|
+
*
|
|
33
|
+
* @param {Audio} audio - The audio to analyze.
|
|
34
|
+
* @param {number} [fftSize=2048] - The window size in samples that is used when performing a Fast Fourier Transform (FFT) to get frequency domain data.
|
|
35
|
+
*/
|
|
3
36
|
constructor( audio, fftSize = 2048 ) {
|
|
4
37
|
|
|
38
|
+
/**
|
|
39
|
+
* The global audio listener.
|
|
40
|
+
*
|
|
41
|
+
* @type {AnalyserNode}
|
|
42
|
+
*/
|
|
5
43
|
this.analyser = audio.context.createAnalyser();
|
|
6
44
|
this.analyser.fftSize = fftSize;
|
|
7
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Holds the analyzed data.
|
|
48
|
+
*
|
|
49
|
+
* @type {Uint8Array}
|
|
50
|
+
*/
|
|
8
51
|
this.data = new Uint8Array( this.analyser.frequencyBinCount );
|
|
9
52
|
|
|
10
53
|
audio.getOutput().connect( this.analyser );
|
|
11
54
|
|
|
12
55
|
}
|
|
13
56
|
|
|
14
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Returns an array with frequency data of the audio.
|
|
59
|
+
*
|
|
60
|
+
* Each item in the array represents the decibel value for a specific frequency.
|
|
61
|
+
* The frequencies are spread linearly from 0 to 1/2 of the sample rate.
|
|
62
|
+
* For example, for 48000 sample rate, the last item of the array will represent
|
|
63
|
+
* the decibel value for 24000 Hz.
|
|
64
|
+
*
|
|
65
|
+
* @return {Uint8Array} The frequency data.
|
|
66
|
+
*/
|
|
15
67
|
getFrequencyData() {
|
|
16
68
|
|
|
17
69
|
this.analyser.getByteFrequencyData( this.data );
|
|
@@ -20,6 +72,11 @@ class AudioAnalyser {
|
|
|
20
72
|
|
|
21
73
|
}
|
|
22
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Returns the average of the frequencies returned by {@link AudioAnalyser#getFrequencyData}.
|
|
77
|
+
*
|
|
78
|
+
* @return {number} The average frequency.
|
|
79
|
+
*/
|
|
23
80
|
getAverageFrequency() {
|
|
24
81
|
|
|
25
82
|
let value = 0;
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
let _context;
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Manages the global audio context in the engine.
|
|
5
|
+
*
|
|
6
|
+
* @hideconstructor
|
|
7
|
+
*/
|
|
3
8
|
class AudioContext {
|
|
4
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Returns the global native audio context.
|
|
12
|
+
*
|
|
13
|
+
* @return {AudioContext} The native audio context.
|
|
14
|
+
*/
|
|
5
15
|
static getContext() {
|
|
6
16
|
|
|
7
17
|
if ( _context === undefined ) {
|
|
@@ -14,6 +24,11 @@ class AudioContext {
|
|
|
14
24
|
|
|
15
25
|
}
|
|
16
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Allows to set the global native audio context from outside.
|
|
29
|
+
*
|
|
30
|
+
* @param {AudioContext} value - The native context to set.
|
|
31
|
+
*/
|
|
17
32
|
static setContext( value ) {
|
|
18
33
|
|
|
19
34
|
_context = value;
|