super-three 0.173.5 → 0.176.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 +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- 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 +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- 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 +185 -9
- 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/loaders/Loader.js
CHANGED
|
@@ -1,21 +1,86 @@
|
|
|
1
1
|
import { DefaultLoadingManager } from './LoadingManager.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Abstract base class for loaders.
|
|
5
|
+
*
|
|
6
|
+
* @abstract
|
|
7
|
+
*/
|
|
3
8
|
class Loader {
|
|
4
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new loader.
|
|
12
|
+
*
|
|
13
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
14
|
+
*/
|
|
5
15
|
constructor( manager ) {
|
|
6
16
|
|
|
17
|
+
/**
|
|
18
|
+
* The loading manager.
|
|
19
|
+
*
|
|
20
|
+
* @type {LoadingManager}
|
|
21
|
+
* @default DefaultLoadingManager
|
|
22
|
+
*/
|
|
7
23
|
this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
|
|
8
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The crossOrigin string to implement CORS for loading the url from a
|
|
27
|
+
* different domain that allows CORS.
|
|
28
|
+
*
|
|
29
|
+
* @type {string}
|
|
30
|
+
* @default 'anonymous'
|
|
31
|
+
*/
|
|
9
32
|
this.crossOrigin = 'anonymous';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Whether the XMLHttpRequest uses credentials.
|
|
36
|
+
*
|
|
37
|
+
* @type {boolean}
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
10
40
|
this.withCredentials = false;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The base path from which the asset will be loaded.
|
|
44
|
+
*
|
|
45
|
+
* @type {string}
|
|
46
|
+
*/
|
|
11
47
|
this.path = '';
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The base path from which additional resources like textures will be loaded.
|
|
51
|
+
*
|
|
52
|
+
* @type {string}
|
|
53
|
+
*/
|
|
12
54
|
this.resourcePath = '';
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}
|
|
58
|
+
* used in HTTP request.
|
|
59
|
+
*
|
|
60
|
+
* @type {Object<string, any>}
|
|
61
|
+
*/
|
|
13
62
|
this.requestHeader = {};
|
|
14
63
|
|
|
15
64
|
}
|
|
16
65
|
|
|
66
|
+
/**
|
|
67
|
+
* This method needs to be implemented by all concrete loaders. It holds the
|
|
68
|
+
* logic for loading assets from the backend.
|
|
69
|
+
*
|
|
70
|
+
* @param {string} url - The path/URL of the file to be loaded.
|
|
71
|
+
* @param {Function} onLoad - Executed when the loading process has been finished.
|
|
72
|
+
* @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.
|
|
73
|
+
* @param {onErrorCallback} [onError] - Executed when errors occur.
|
|
74
|
+
*/
|
|
17
75
|
load( /* url, onLoad, onProgress, onError */ ) {}
|
|
18
76
|
|
|
77
|
+
/**
|
|
78
|
+
* A async version of {@link Loader#load}.
|
|
79
|
+
*
|
|
80
|
+
* @param {string} url - The path/URL of the file to be loaded.
|
|
81
|
+
* @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.
|
|
82
|
+
* @return {Promise} A Promise that resolves when the asset has been loaded.
|
|
83
|
+
*/
|
|
19
84
|
loadAsync( url, onProgress ) {
|
|
20
85
|
|
|
21
86
|
const scope = this;
|
|
@@ -28,8 +93,21 @@ class Loader {
|
|
|
28
93
|
|
|
29
94
|
}
|
|
30
95
|
|
|
96
|
+
/**
|
|
97
|
+
* This method needs to be implemented by all concrete loaders. It holds the
|
|
98
|
+
* logic for parsing the asset into three.js entities.
|
|
99
|
+
*
|
|
100
|
+
* @param {any} data - The data to parse.
|
|
101
|
+
*/
|
|
31
102
|
parse( /* data */ ) {}
|
|
32
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Sets the `crossOrigin` String to implement CORS for loading the URL
|
|
106
|
+
* from a different domain that allows CORS.
|
|
107
|
+
*
|
|
108
|
+
* @param {string} crossOrigin - The `crossOrigin` value.
|
|
109
|
+
* @return {Loader} A reference to this instance.
|
|
110
|
+
*/
|
|
33
111
|
setCrossOrigin( crossOrigin ) {
|
|
34
112
|
|
|
35
113
|
this.crossOrigin = crossOrigin;
|
|
@@ -37,6 +115,15 @@ class Loader {
|
|
|
37
115
|
|
|
38
116
|
}
|
|
39
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Whether the XMLHttpRequest uses credentials such as cookies, authorization
|
|
120
|
+
* headers or TLS client certificates, see [XMLHttpRequest.withCredentials]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials}.
|
|
121
|
+
*
|
|
122
|
+
* Note: This setting has no effect if you are loading files locally or from the same domain.
|
|
123
|
+
*
|
|
124
|
+
* @param {boolean} value - The `withCredentials` value.
|
|
125
|
+
* @return {Loader} A reference to this instance.
|
|
126
|
+
*/
|
|
40
127
|
setWithCredentials( value ) {
|
|
41
128
|
|
|
42
129
|
this.withCredentials = value;
|
|
@@ -44,6 +131,12 @@ class Loader {
|
|
|
44
131
|
|
|
45
132
|
}
|
|
46
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Sets the base path for the asset.
|
|
136
|
+
*
|
|
137
|
+
* @param {string} path - The base path.
|
|
138
|
+
* @return {Loader} A reference to this instance.
|
|
139
|
+
*/
|
|
47
140
|
setPath( path ) {
|
|
48
141
|
|
|
49
142
|
this.path = path;
|
|
@@ -51,6 +144,12 @@ class Loader {
|
|
|
51
144
|
|
|
52
145
|
}
|
|
53
146
|
|
|
147
|
+
/**
|
|
148
|
+
* Sets the base path for dependent resources like textures.
|
|
149
|
+
*
|
|
150
|
+
* @param {string} resourcePath - The resource path.
|
|
151
|
+
* @return {Loader} A reference to this instance.
|
|
152
|
+
*/
|
|
54
153
|
setResourcePath( resourcePath ) {
|
|
55
154
|
|
|
56
155
|
this.resourcePath = resourcePath;
|
|
@@ -58,6 +157,13 @@ class Loader {
|
|
|
58
157
|
|
|
59
158
|
}
|
|
60
159
|
|
|
160
|
+
/**
|
|
161
|
+
* Sets the given request header.
|
|
162
|
+
*
|
|
163
|
+
* @param {Object} requestHeader - A [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}
|
|
164
|
+
* for configuring the HTTP request.
|
|
165
|
+
* @return {Loader} A reference to this instance.
|
|
166
|
+
*/
|
|
61
167
|
setRequestHeader( requestHeader ) {
|
|
62
168
|
|
|
63
169
|
this.requestHeader = requestHeader;
|
|
@@ -67,6 +173,30 @@ class Loader {
|
|
|
67
173
|
|
|
68
174
|
}
|
|
69
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Callback for onProgress in loaders.
|
|
178
|
+
*
|
|
179
|
+
* @callback onProgressCallback
|
|
180
|
+
* @param {ProgressEvent} event - An instance of `ProgressEvent` that represents the current loading status.
|
|
181
|
+
*/
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Callback for onError in loaders.
|
|
185
|
+
*
|
|
186
|
+
* @callback onErrorCallback
|
|
187
|
+
* @param {Error} error - The error which occurred during the loading process.
|
|
188
|
+
*/
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* The default material name that is used by loaders
|
|
192
|
+
* when creating materials for loaded 3D objects.
|
|
193
|
+
*
|
|
194
|
+
* Note: Not all loaders might honor this setting.
|
|
195
|
+
*
|
|
196
|
+
* @static
|
|
197
|
+
* @type {string}
|
|
198
|
+
* @default '__DEFAULT'
|
|
199
|
+
*/
|
|
70
200
|
Loader.DEFAULT_MATERIAL_NAME = '__DEFAULT';
|
|
71
201
|
|
|
72
202
|
export { Loader };
|
|
@@ -1,41 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class with loader utility functions.
|
|
3
|
+
*/
|
|
1
4
|
class LoaderUtils {
|
|
2
5
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return new TextDecoder().decode( array );
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// Avoid the String.fromCharCode.apply(null, array) shortcut, which
|
|
14
|
-
// throws a "maximum call stack size exceeded" error for large arrays.
|
|
15
|
-
|
|
16
|
-
let s = '';
|
|
17
|
-
|
|
18
|
-
for ( let i = 0, il = array.length; i < il; i ++ ) {
|
|
19
|
-
|
|
20
|
-
// Implicitly assumes little-endian.
|
|
21
|
-
s += String.fromCharCode( array[ i ] );
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
|
|
27
|
-
// merges multi-byte utf-8 characters.
|
|
28
|
-
|
|
29
|
-
return decodeURIComponent( escape( s ) );
|
|
30
|
-
|
|
31
|
-
} catch ( e ) { // see #16358
|
|
32
|
-
|
|
33
|
-
return s;
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Extracts the base URL from the given URL.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} url -The URL to extract the base URL from.
|
|
10
|
+
* @return {string} The extracted base URL.
|
|
11
|
+
*/
|
|
39
12
|
static extractUrlBase( url ) {
|
|
40
13
|
|
|
41
14
|
const index = url.lastIndexOf( '/' );
|
|
@@ -46,6 +19,15 @@ class LoaderUtils {
|
|
|
46
19
|
|
|
47
20
|
}
|
|
48
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Resolves relative URLs against the given path. Absolute paths, data urls,
|
|
24
|
+
* and blob URLs will be returned as is. Invalid URLs will return an empty
|
|
25
|
+
* string.
|
|
26
|
+
*
|
|
27
|
+
* @param {string} url -The URL to resolve.
|
|
28
|
+
* @param {string} path - The base path for relative URLs to be resolved against.
|
|
29
|
+
* @return {string} The resolved URL.
|
|
30
|
+
*/
|
|
49
31
|
static resolveURL( url, path ) {
|
|
50
32
|
|
|
51
33
|
// Invalid URL
|
|
@@ -1,5 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handles and keeps track of loaded and pending data. A default global
|
|
3
|
+
* instance of this class is created and used by loaders if not supplied
|
|
4
|
+
* manually.
|
|
5
|
+
*
|
|
6
|
+
* In general that should be sufficient, however there are times when it can
|
|
7
|
+
* be useful to have separate loaders - for example if you want to show
|
|
8
|
+
* separate loading bars for objects and textures.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const manager = new THREE.LoadingManager();
|
|
12
|
+
* manager.onLoad = () => console.log( 'Loading complete!' );
|
|
13
|
+
*
|
|
14
|
+
* const loader1 = new OBJLoader( manager );
|
|
15
|
+
* const loader2 = new ColladaLoader( manager );
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
1
18
|
class LoadingManager {
|
|
2
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new loading manager.
|
|
22
|
+
*
|
|
23
|
+
* @param {Function} [onLoad] - Executes when all items have been loaded.
|
|
24
|
+
* @param {Function} [onProgress] - Executes when single items have been loaded.
|
|
25
|
+
* @param {Function} [onError] - Executes when an error occurs.
|
|
26
|
+
*/
|
|
3
27
|
constructor( onLoad, onProgress, onError ) {
|
|
4
28
|
|
|
5
29
|
const scope = this;
|
|
@@ -13,11 +37,44 @@ class LoadingManager {
|
|
|
13
37
|
// Refer to #5689 for the reason why we don't set .onStart
|
|
14
38
|
// in the constructor
|
|
15
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Executes when an item starts loading.
|
|
42
|
+
*
|
|
43
|
+
* @type {Function|undefined}
|
|
44
|
+
* @default undefined
|
|
45
|
+
*/
|
|
16
46
|
this.onStart = undefined;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Executes when all items have been loaded.
|
|
50
|
+
*
|
|
51
|
+
* @type {Function|undefined}
|
|
52
|
+
* @default undefined
|
|
53
|
+
*/
|
|
17
54
|
this.onLoad = onLoad;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Executes when single items have been loaded.
|
|
58
|
+
*
|
|
59
|
+
* @type {Function|undefined}
|
|
60
|
+
* @default undefined
|
|
61
|
+
*/
|
|
18
62
|
this.onProgress = onProgress;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Executes when an error occurs.
|
|
66
|
+
*
|
|
67
|
+
* @type {Function|undefined}
|
|
68
|
+
* @default undefined
|
|
69
|
+
*/
|
|
19
70
|
this.onError = onError;
|
|
20
71
|
|
|
72
|
+
/**
|
|
73
|
+
* This should be called by any loader using the manager when the loader
|
|
74
|
+
* starts loading an item.
|
|
75
|
+
*
|
|
76
|
+
* @param {string} url - The URL to load.
|
|
77
|
+
*/
|
|
21
78
|
this.itemStart = function ( url ) {
|
|
22
79
|
|
|
23
80
|
itemsTotal ++;
|
|
@@ -36,6 +93,12 @@ class LoadingManager {
|
|
|
36
93
|
|
|
37
94
|
};
|
|
38
95
|
|
|
96
|
+
/**
|
|
97
|
+
* This should be called by any loader using the manager when the loader
|
|
98
|
+
* ended loading an item.
|
|
99
|
+
*
|
|
100
|
+
* @param {string} url - The URL of the loaded item.
|
|
101
|
+
*/
|
|
39
102
|
this.itemEnd = function ( url ) {
|
|
40
103
|
|
|
41
104
|
itemsLoaded ++;
|
|
@@ -60,6 +123,12 @@ class LoadingManager {
|
|
|
60
123
|
|
|
61
124
|
};
|
|
62
125
|
|
|
126
|
+
/**
|
|
127
|
+
* This should be called by any loader using the manager when the loader
|
|
128
|
+
* encounters an error when loading an item.
|
|
129
|
+
*
|
|
130
|
+
* @param {string} url - The URL of the item that produces an error.
|
|
131
|
+
*/
|
|
63
132
|
this.itemError = function ( url ) {
|
|
64
133
|
|
|
65
134
|
if ( scope.onError !== undefined ) {
|
|
@@ -70,6 +139,13 @@ class LoadingManager {
|
|
|
70
139
|
|
|
71
140
|
};
|
|
72
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Given a URL, uses the URL modifier callback (if any) and returns a
|
|
144
|
+
* resolved URL. If no URL modifier is set, returns the original URL.
|
|
145
|
+
*
|
|
146
|
+
* @param {string} url - The URL to load.
|
|
147
|
+
* @return {string} The resolved URL.
|
|
148
|
+
*/
|
|
73
149
|
this.resolveURL = function ( url ) {
|
|
74
150
|
|
|
75
151
|
if ( urlModifier ) {
|
|
@@ -82,6 +158,40 @@ class LoadingManager {
|
|
|
82
158
|
|
|
83
159
|
};
|
|
84
160
|
|
|
161
|
+
/**
|
|
162
|
+
* If provided, the callback will be passed each resource URL before a
|
|
163
|
+
* request is sent. The callback may return the original URL, or a new URL to
|
|
164
|
+
* override loading behavior. This behavior can be used to load assets from
|
|
165
|
+
* .ZIP files, drag-and-drop APIs, and Data URIs.
|
|
166
|
+
*
|
|
167
|
+
* ```js
|
|
168
|
+
* const blobs = {'fish.gltf': blob1, 'diffuse.png': blob2, 'normal.png': blob3};
|
|
169
|
+
*
|
|
170
|
+
* const manager = new THREE.LoadingManager();
|
|
171
|
+
*
|
|
172
|
+
* // Initialize loading manager with URL callback.
|
|
173
|
+
* const objectURLs = [];
|
|
174
|
+
* manager.setURLModifier( ( url ) => {
|
|
175
|
+
*
|
|
176
|
+
* url = URL.createObjectURL( blobs[ url ] );
|
|
177
|
+
* objectURLs.push( url );
|
|
178
|
+
* return url;
|
|
179
|
+
*
|
|
180
|
+
* } );
|
|
181
|
+
*
|
|
182
|
+
* // Load as usual, then revoke the blob URLs.
|
|
183
|
+
* const loader = new GLTFLoader( manager );
|
|
184
|
+
* loader.load( 'fish.gltf', (gltf) => {
|
|
185
|
+
*
|
|
186
|
+
* scene.add( gltf.scene );
|
|
187
|
+
* objectURLs.forEach( ( url ) => URL.revokeObjectURL( url ) );
|
|
188
|
+
*
|
|
189
|
+
* } );
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
192
|
+
* @param {function(string):string} transform - URL modifier callback. Called with an URL and must return a resolved URL.
|
|
193
|
+
* @return {LoadingManager} A reference to this loading manager.
|
|
194
|
+
*/
|
|
85
195
|
this.setURLModifier = function ( transform ) {
|
|
86
196
|
|
|
87
197
|
urlModifier = transform;
|
|
@@ -90,6 +200,20 @@ class LoadingManager {
|
|
|
90
200
|
|
|
91
201
|
};
|
|
92
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Registers a loader with the given regular expression. Can be used to
|
|
205
|
+
* define what loader should be used in order to load specific files. A
|
|
206
|
+
* typical use case is to overwrite the default loader for textures.
|
|
207
|
+
*
|
|
208
|
+
* ```js
|
|
209
|
+
* // add handler for TGA textures
|
|
210
|
+
* manager.addHandler( /\.tga$/i, new TGALoader() );
|
|
211
|
+
* ```
|
|
212
|
+
*
|
|
213
|
+
* @param {string} regex - A regular expression.
|
|
214
|
+
* @param {Loader} loader - A loader that should handle matched cases.
|
|
215
|
+
* @return {LoadingManager} A reference to this loading manager.
|
|
216
|
+
*/
|
|
93
217
|
this.addHandler = function ( regex, loader ) {
|
|
94
218
|
|
|
95
219
|
handlers.push( regex, loader );
|
|
@@ -98,6 +222,12 @@ class LoadingManager {
|
|
|
98
222
|
|
|
99
223
|
};
|
|
100
224
|
|
|
225
|
+
/**
|
|
226
|
+
* Removes the loader for the given regular expression.
|
|
227
|
+
*
|
|
228
|
+
* @param {string} regex - A regular expression.
|
|
229
|
+
* @return {LoadingManager} A reference to this loading manager.
|
|
230
|
+
*/
|
|
101
231
|
this.removeHandler = function ( regex ) {
|
|
102
232
|
|
|
103
233
|
const index = handlers.indexOf( regex );
|
|
@@ -112,6 +242,12 @@ class LoadingManager {
|
|
|
112
242
|
|
|
113
243
|
};
|
|
114
244
|
|
|
245
|
+
/**
|
|
246
|
+
* Can be used to retrieve the registered loader for the given file path.
|
|
247
|
+
*
|
|
248
|
+
* @param {string} file - The file path.
|
|
249
|
+
* @return {?Loader} The registered loader. Returns `null` if no loader was found.
|
|
250
|
+
*/
|
|
115
251
|
this.getHandler = function ( file ) {
|
|
116
252
|
|
|
117
253
|
for ( let i = 0, l = handlers.length; i < l; i += 2 ) {
|
|
@@ -137,6 +273,12 @@ class LoadingManager {
|
|
|
137
273
|
|
|
138
274
|
}
|
|
139
275
|
|
|
276
|
+
/**
|
|
277
|
+
* The global default loading manager.
|
|
278
|
+
*
|
|
279
|
+
* @constant
|
|
280
|
+
* @type {LoadingManager}
|
|
281
|
+
*/
|
|
140
282
|
const DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();
|
|
141
283
|
|
|
142
284
|
export { DefaultLoadingManager, LoadingManager };
|
|
@@ -27,15 +27,46 @@ import {
|
|
|
27
27
|
Material,
|
|
28
28
|
} from '../materials/Materials.js';
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Class for loading geometries. The files are internally
|
|
32
|
+
* loaded via {@link FileLoader}.
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const loader = new THREE.MaterialLoader();
|
|
36
|
+
* const material = await loader.loadAsync( 'material.json' );
|
|
37
|
+
* ```
|
|
38
|
+
* This loader does not support node materials. Use {@link NodeMaterialLoader} instead.
|
|
39
|
+
*
|
|
40
|
+
* @augments Loader
|
|
41
|
+
*/
|
|
30
42
|
class MaterialLoader extends Loader {
|
|
31
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Constructs a new material loader.
|
|
46
|
+
*
|
|
47
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
48
|
+
*/
|
|
32
49
|
constructor( manager ) {
|
|
33
50
|
|
|
34
51
|
super( manager );
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* A dictionary holding textures used by the material.
|
|
55
|
+
*
|
|
56
|
+
* @type {Object<string,Texture>}
|
|
57
|
+
*/
|
|
35
58
|
this.textures = {};
|
|
36
59
|
|
|
37
60
|
}
|
|
38
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Starts loading from the given URL and pass the loaded material to the `onLoad()` callback.
|
|
64
|
+
*
|
|
65
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
66
|
+
* @param {function(Material)} onLoad - Executed when the loading process has been finished.
|
|
67
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
68
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
69
|
+
*/
|
|
39
70
|
load( url, onLoad, onProgress, onError ) {
|
|
40
71
|
|
|
41
72
|
const scope = this;
|
|
@@ -70,6 +101,12 @@ class MaterialLoader extends Loader {
|
|
|
70
101
|
|
|
71
102
|
}
|
|
72
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Parses the given JSON object and returns a material.
|
|
106
|
+
*
|
|
107
|
+
* @param {Object} json - The serialized material.
|
|
108
|
+
* @return {Material} The parsed material.
|
|
109
|
+
*/
|
|
73
110
|
parse( json ) {
|
|
74
111
|
|
|
75
112
|
const textures = this.textures;
|
|
@@ -335,6 +372,13 @@ class MaterialLoader extends Loader {
|
|
|
335
372
|
|
|
336
373
|
}
|
|
337
374
|
|
|
375
|
+
/**
|
|
376
|
+
* Textures are not embedded in the material JSON so they have
|
|
377
|
+
* to be injected before the loading process starts.
|
|
378
|
+
*
|
|
379
|
+
* @param {Object} value - A dictionary holding textures for material properties.
|
|
380
|
+
* @return {MaterialLoader} A reference to this material loader.
|
|
381
|
+
*/
|
|
338
382
|
setTextures( value ) {
|
|
339
383
|
|
|
340
384
|
this.textures = value;
|
|
@@ -342,12 +386,25 @@ class MaterialLoader extends Loader {
|
|
|
342
386
|
|
|
343
387
|
}
|
|
344
388
|
|
|
389
|
+
/**
|
|
390
|
+
* Creates a material for the given type.
|
|
391
|
+
*
|
|
392
|
+
* @param {string} type - The material type.
|
|
393
|
+
* @return {Material} The new material.
|
|
394
|
+
*/
|
|
345
395
|
createMaterialFromType( type ) {
|
|
346
396
|
|
|
347
397
|
return MaterialLoader.createMaterialFromType( type );
|
|
348
398
|
|
|
349
399
|
}
|
|
350
400
|
|
|
401
|
+
/**
|
|
402
|
+
* Creates a material for the given type.
|
|
403
|
+
*
|
|
404
|
+
* @static
|
|
405
|
+
* @param {string} type - The material type.
|
|
406
|
+
* @return {Material} The new material.
|
|
407
|
+
*/
|
|
351
408
|
static createMaterialFromType( type ) {
|
|
352
409
|
|
|
353
410
|
const materialLib = {
|
|
@@ -63,14 +63,43 @@ import { getTypedArray } from '../utils.js';
|
|
|
63
63
|
import { Box3 } from '../math/Box3.js';
|
|
64
64
|
import { Sphere } from '../math/Sphere.js';
|
|
65
65
|
|
|
66
|
+
/**
|
|
67
|
+
* A loader for loading a JSON resource in the [JSON Object/Scene format]{@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4}.
|
|
68
|
+
* The files are internally loaded via {@link FileLoader}.
|
|
69
|
+
*
|
|
70
|
+
* ```js
|
|
71
|
+
* const loader = new THREE.ObjectLoader();
|
|
72
|
+
* const obj = await loader.loadAsync( 'models/json/example.json' );
|
|
73
|
+
* scene.add( obj );
|
|
74
|
+
*
|
|
75
|
+
* // Alternatively, to parse a previously loaded JSON structure
|
|
76
|
+
* const object = await loader.parseAsync( a_json_object );
|
|
77
|
+
* scene.add( object );
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @augments Loader
|
|
81
|
+
*/
|
|
66
82
|
class ObjectLoader extends Loader {
|
|
67
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Constructs a new object loader.
|
|
86
|
+
*
|
|
87
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
88
|
+
*/
|
|
68
89
|
constructor( manager ) {
|
|
69
90
|
|
|
70
91
|
super( manager );
|
|
71
92
|
|
|
72
93
|
}
|
|
73
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Starts loading from the given URL and pass the loaded 3D object to the `onLoad()` callback.
|
|
97
|
+
*
|
|
98
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
99
|
+
* @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
|
|
100
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
101
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
102
|
+
*/
|
|
74
103
|
load( url, onLoad, onProgress, onError ) {
|
|
75
104
|
|
|
76
105
|
const scope = this;
|
|
@@ -117,6 +146,14 @@ class ObjectLoader extends Loader {
|
|
|
117
146
|
|
|
118
147
|
}
|
|
119
148
|
|
|
149
|
+
/**
|
|
150
|
+
* Async version of {@link ObjectLoader#load}.
|
|
151
|
+
*
|
|
152
|
+
* @async
|
|
153
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
154
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
155
|
+
* @return {Promise<Object3D>} A Promise that resolves with the loaded 3D object.
|
|
156
|
+
*/
|
|
120
157
|
async loadAsync( url, onProgress ) {
|
|
121
158
|
|
|
122
159
|
const scope = this;
|
|
@@ -145,6 +182,14 @@ class ObjectLoader extends Loader {
|
|
|
145
182
|
|
|
146
183
|
}
|
|
147
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Parses the given JSON. This is used internally by {@link ObjectLoader#load}
|
|
187
|
+
* but can also be used directly to parse a previously loaded JSON structure.
|
|
188
|
+
*
|
|
189
|
+
* @param {Object} json - The serialized 3D object.
|
|
190
|
+
* @param {onLoad} onLoad - Executed when all resources (e.g. textures) have been fully loaded.
|
|
191
|
+
* @return {Object3D} The parsed 3D object.
|
|
192
|
+
*/
|
|
148
193
|
parse( json, onLoad ) {
|
|
149
194
|
|
|
150
195
|
const animations = this.parseAnimations( json.animations );
|
|
@@ -191,6 +236,12 @@ class ObjectLoader extends Loader {
|
|
|
191
236
|
|
|
192
237
|
}
|
|
193
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Async version of {@link ObjectLoader#parse}.
|
|
241
|
+
*
|
|
242
|
+
* @param {Object} json - The serialized 3D object.
|
|
243
|
+
* @return {Promise<Object3D>} A Promise that resolves with the parsed 3D object.
|
|
244
|
+
*/
|
|
194
245
|
async parseAsync( json ) {
|
|
195
246
|
|
|
196
247
|
const animations = this.parseAnimations( json.animations );
|
|
@@ -212,6 +263,8 @@ class ObjectLoader extends Loader {
|
|
|
212
263
|
|
|
213
264
|
}
|
|
214
265
|
|
|
266
|
+
// internals
|
|
267
|
+
|
|
215
268
|
parseShapes( json ) {
|
|
216
269
|
|
|
217
270
|
const shapes = {};
|
|
@@ -2,14 +2,47 @@ import { ImageLoader } from './ImageLoader.js';
|
|
|
2
2
|
import { Texture } from '../textures/Texture.js';
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Class for loading textures. Images are internally
|
|
7
|
+
* loaded via {@link ImageLoader}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const loader = new THREE.TextureLoader();
|
|
11
|
+
* const texture = await loader.loadAsync( 'textures/land_ocean_ice_cloud_2048.jpg' );
|
|
12
|
+
*
|
|
13
|
+
* const material = new THREE.MeshBasicMaterial( { map:texture } );
|
|
14
|
+
* ```
|
|
15
|
+
* Please note that `TextureLoader` has dropped support for progress
|
|
16
|
+
* events in `r84`. For a `TextureLoader` that supports progress events, see
|
|
17
|
+
* [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145}.
|
|
18
|
+
*
|
|
19
|
+
* @augments Loader
|
|
20
|
+
*/
|
|
5
21
|
class TextureLoader extends Loader {
|
|
6
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new texture loader.
|
|
25
|
+
*
|
|
26
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
27
|
+
*/
|
|
7
28
|
constructor( manager ) {
|
|
8
29
|
|
|
9
30
|
super( manager );
|
|
10
31
|
|
|
11
32
|
}
|
|
12
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Starts loading from the given URL and pass the fully loaded texture
|
|
36
|
+
* to the `onLoad()` callback. The method also returns a new texture object which can
|
|
37
|
+
* directly be used for material creation. If you do it this way, the texture
|
|
38
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
39
|
+
*
|
|
40
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
41
|
+
* @param {function(Texture)} onLoad - Executed when the loading process has been finished.
|
|
42
|
+
* @param {onProgressCallback} onProgress - Unsupported in this loader.
|
|
43
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
44
|
+
* @return {Texture} The texture.
|
|
45
|
+
*/
|
|
13
46
|
load( url, onLoad, onProgress, onError ) {
|
|
14
47
|
|
|
15
48
|
const texture = new Texture();
|