super-three 0.173.5 → 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 +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
|
@@ -30,12 +30,38 @@ import { EXRLoader } from '../loaders/EXRLoader.js';
|
|
|
30
30
|
|
|
31
31
|
const _taskCache = new WeakMap();
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* A loader for Rhinoceros 3D files and objects.
|
|
35
|
+
*
|
|
36
|
+
* Rhinoceros is a 3D modeler used to create, edit, analyze, document, render,
|
|
37
|
+
* animate, and translate NURBS curves, surfaces, breps, extrusions, point clouds,
|
|
38
|
+
* as well as polygon meshes and SubD objects. `rhino3dm.js` is compiled to WebAssembly
|
|
39
|
+
* from the open source geometry library `openNURBS`. The loader currently uses
|
|
40
|
+
* `rhino3dm.js 8.4.0`.
|
|
41
|
+
*
|
|
42
|
+
* ```js
|
|
43
|
+
* const loader = new Rhino3dmLoader();
|
|
44
|
+
* loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/rhino3dm@8.0.1' );
|
|
45
|
+
*
|
|
46
|
+
* const object = await loader.loadAsync( 'models/3dm/Rhino_Logo.3dm' );
|
|
47
|
+
* scene.add( object );
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @augments Loader
|
|
51
|
+
*/
|
|
33
52
|
class Rhino3dmLoader extends Loader {
|
|
34
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Constructs a new Rhino 3DM loader.
|
|
56
|
+
*
|
|
57
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
58
|
+
*/
|
|
35
59
|
constructor( manager ) {
|
|
36
60
|
|
|
37
61
|
super( manager );
|
|
38
62
|
|
|
63
|
+
// internals
|
|
64
|
+
|
|
39
65
|
this.libraryPath = '';
|
|
40
66
|
this.libraryPending = null;
|
|
41
67
|
this.libraryBinary = null;
|
|
@@ -54,6 +80,12 @@ class Rhino3dmLoader extends Loader {
|
|
|
54
80
|
|
|
55
81
|
}
|
|
56
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Path to a folder containing the JS and WASM libraries.
|
|
85
|
+
*
|
|
86
|
+
* @param {string} path - The library path to set.
|
|
87
|
+
* @return {Rhino3dmLoader} A reference to this loader.
|
|
88
|
+
*/
|
|
57
89
|
setLibraryPath( path ) {
|
|
58
90
|
|
|
59
91
|
this.libraryPath = path;
|
|
@@ -62,6 +94,14 @@ class Rhino3dmLoader extends Loader {
|
|
|
62
94
|
|
|
63
95
|
}
|
|
64
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Sets the maximum number of Web Workers to be used during decoding.
|
|
99
|
+
* A lower limit may be preferable if workers are also for other
|
|
100
|
+
* tasks in the application.
|
|
101
|
+
*
|
|
102
|
+
* @param {number} workerLimit - The worker limit.
|
|
103
|
+
* @return {Rhino3dmLoader} A reference to this loader.
|
|
104
|
+
*/
|
|
65
105
|
setWorkerLimit( workerLimit ) {
|
|
66
106
|
|
|
67
107
|
this.workerLimit = workerLimit;
|
|
@@ -70,6 +110,15 @@ class Rhino3dmLoader extends Loader {
|
|
|
70
110
|
|
|
71
111
|
}
|
|
72
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Starts loading from the given URL and passes the loaded 3DM asset
|
|
115
|
+
* to the `onLoad()` callback.
|
|
116
|
+
*
|
|
117
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
118
|
+
* @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
|
|
119
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
120
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
121
|
+
*/
|
|
73
122
|
load( url, onLoad, onProgress, onError ) {
|
|
74
123
|
|
|
75
124
|
const loader = new FileLoader( this.manager );
|
|
@@ -105,12 +154,22 @@ class Rhino3dmLoader extends Loader {
|
|
|
105
154
|
|
|
106
155
|
}
|
|
107
156
|
|
|
157
|
+
/**
|
|
158
|
+
* Prints debug messages to the browser console.
|
|
159
|
+
*/
|
|
108
160
|
debug() {
|
|
109
161
|
|
|
110
162
|
console.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );
|
|
111
163
|
|
|
112
164
|
}
|
|
113
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Decodes the 3DM asset data with a Web Worker.
|
|
168
|
+
*
|
|
169
|
+
* @param {ArrayBuffer} buffer - The raw 3DM asset data as an array buffer.
|
|
170
|
+
* @param {string} url - The asset URL.
|
|
171
|
+
* @return {Promise<Object3D>} A Promise that resolved with the decoded 3D object.
|
|
172
|
+
*/
|
|
114
173
|
decodeObjects( buffer, url ) {
|
|
115
174
|
|
|
116
175
|
let worker;
|
|
@@ -170,6 +229,14 @@ class Rhino3dmLoader extends Loader {
|
|
|
170
229
|
|
|
171
230
|
}
|
|
172
231
|
|
|
232
|
+
/**
|
|
233
|
+
* Parses the given 3DM data and passes the loaded 3DM asset
|
|
234
|
+
* to the `onLoad()` callback.
|
|
235
|
+
*
|
|
236
|
+
* @param {ArrayBuffer} data - The raw 3DM asset data as an array buffer.
|
|
237
|
+
* @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
|
|
238
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
239
|
+
*/
|
|
173
240
|
parse( data, onLoad, onError ) {
|
|
174
241
|
|
|
175
242
|
this.decodeObjects( data, '' )
|
|
@@ -962,6 +1029,10 @@ class Rhino3dmLoader extends Loader {
|
|
|
962
1029
|
|
|
963
1030
|
}
|
|
964
1031
|
|
|
1032
|
+
/**
|
|
1033
|
+
* Frees internal resources. This method should be called
|
|
1034
|
+
* when the loader is no longer required.
|
|
1035
|
+
*/
|
|
965
1036
|
dispose() {
|
|
966
1037
|
|
|
967
1038
|
for ( let i = 0; i < this.workerPool.length; ++ i ) {
|
|
@@ -972,8 +1043,6 @@ class Rhino3dmLoader extends Loader {
|
|
|
972
1043
|
|
|
973
1044
|
this.workerPool.length = 0;
|
|
974
1045
|
|
|
975
|
-
return this;
|
|
976
|
-
|
|
977
1046
|
}
|
|
978
1047
|
|
|
979
1048
|
}
|
|
@@ -24,8 +24,7 @@ import * as fflate from '../libs/fflate.module.js';
|
|
|
24
24
|
const COLOR_SPACE_3MF = SRGBColorSpace;
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
28
|
-
* 3D Manufacturing Format (3MF) specification: https://3mf.io/specification/
|
|
27
|
+
* A loader for the [3D Manufacturing Format (3MF)]{@link https://3mf.io/specification/} format.
|
|
29
28
|
*
|
|
30
29
|
* The following features from the core specification are supported:
|
|
31
30
|
*
|
|
@@ -39,18 +38,46 @@ const COLOR_SPACE_3MF = SRGBColorSpace;
|
|
|
39
38
|
* - Texture 2D Groups
|
|
40
39
|
* - Color Groups (Vertex Colors)
|
|
41
40
|
* - Metallic Display Properties (PBR)
|
|
41
|
+
*
|
|
42
|
+
* ```js
|
|
43
|
+
* const loader = new ThreeMFLoader();
|
|
44
|
+
*
|
|
45
|
+
* const object = await loader.loadAsync( './models/3mf/truck.3mf' );
|
|
46
|
+
* object.rotation.set( - Math.PI / 2, 0, 0 ); // z-up conversion
|
|
47
|
+
* scene.add( object );
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @augments Loader
|
|
42
51
|
*/
|
|
43
|
-
|
|
44
52
|
class ThreeMFLoader extends Loader {
|
|
45
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Constructs a new 3MF loader.
|
|
56
|
+
*
|
|
57
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
58
|
+
*/
|
|
46
59
|
constructor( manager ) {
|
|
47
60
|
|
|
48
61
|
super( manager );
|
|
49
62
|
|
|
63
|
+
/**
|
|
64
|
+
* An array of available extensions.
|
|
65
|
+
*
|
|
66
|
+
* @type {Array<Object>}
|
|
67
|
+
*/
|
|
50
68
|
this.availableExtensions = [];
|
|
51
69
|
|
|
52
70
|
}
|
|
53
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Starts loading from the given URL and passes the loaded 3MF asset
|
|
74
|
+
* to the `onLoad()` callback.
|
|
75
|
+
*
|
|
76
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
77
|
+
* @param {function(Group)} onLoad - Executed when the loading process has been finished.
|
|
78
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
79
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
80
|
+
*/
|
|
54
81
|
load( url, onLoad, onProgress, onError ) {
|
|
55
82
|
|
|
56
83
|
const scope = this;
|
|
@@ -85,6 +112,12 @@ class ThreeMFLoader extends Loader {
|
|
|
85
112
|
|
|
86
113
|
}
|
|
87
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Parses the given 3MF data and returns the resulting group.
|
|
117
|
+
*
|
|
118
|
+
* @param {ArrayBuffer} data - The raw 3MF asset data as an array buffer.
|
|
119
|
+
* @return {Group} A group representing the parsed asset.
|
|
120
|
+
*/
|
|
88
121
|
parse( data ) {
|
|
89
122
|
|
|
90
123
|
const scope = this;
|
|
@@ -122,6 +155,8 @@ class ThreeMFLoader extends Loader {
|
|
|
122
155
|
|
|
123
156
|
}
|
|
124
157
|
|
|
158
|
+
let rootModelFile = null;
|
|
159
|
+
|
|
125
160
|
for ( file in zip ) {
|
|
126
161
|
|
|
127
162
|
if ( file.match( /\_rels\/.rels$/ ) ) {
|
|
@@ -132,9 +167,13 @@ class ThreeMFLoader extends Loader {
|
|
|
132
167
|
|
|
133
168
|
modelRelsName = file;
|
|
134
169
|
|
|
135
|
-
} else if ( file.match( /^3D
|
|
170
|
+
} else if ( file.match( /^3D\/[^\/]*\.model$/ ) ) {
|
|
171
|
+
|
|
172
|
+
rootModelFile = file;
|
|
136
173
|
|
|
137
|
-
|
|
174
|
+
} else if ( file.match( /^3D\/.*\/.*\.model$/ ) ) {
|
|
175
|
+
|
|
176
|
+
modelPartNames.push( file ); // sub models
|
|
138
177
|
|
|
139
178
|
} else if ( file.match( /^3D\/Textures?\/.*/ ) ) {
|
|
140
179
|
|
|
@@ -144,6 +183,8 @@ class ThreeMFLoader extends Loader {
|
|
|
144
183
|
|
|
145
184
|
}
|
|
146
185
|
|
|
186
|
+
modelPartNames.push( rootModelFile ); // push root model at the end so it is processed after the sub models
|
|
187
|
+
|
|
147
188
|
if ( relsName === undefined ) throw new Error( 'THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive.' );
|
|
148
189
|
|
|
149
190
|
//
|
|
@@ -1563,6 +1604,11 @@ class ThreeMFLoader extends Loader {
|
|
|
1563
1604
|
|
|
1564
1605
|
}
|
|
1565
1606
|
|
|
1607
|
+
/**
|
|
1608
|
+
* Adds a 3MF extension.
|
|
1609
|
+
*
|
|
1610
|
+
* @param {Object} extension - The extension to add.
|
|
1611
|
+
*/
|
|
1566
1612
|
addExtension( extension ) {
|
|
1567
1613
|
|
|
1568
1614
|
this.availableExtensions.push( extension );
|
|
@@ -11,29 +11,42 @@ import {
|
|
|
11
11
|
import * as fflate from '../libs/fflate.module.js';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
* example loaders in the three.js project.
|
|
14
|
+
* A loader for the AMF format.
|
|
16
15
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* loader.load('/path/to/project.amf', function(objecttree) {
|
|
20
|
-
* scene.add(objecttree);
|
|
21
|
-
* });
|
|
16
|
+
* The loader supports materials, color and ZIP compressed files.
|
|
17
|
+
* No constellation support (yet).
|
|
22
18
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* No constellation support (yet)!
|
|
19
|
+
* ```js
|
|
20
|
+
* const loader = new AMFLoader();
|
|
26
21
|
*
|
|
22
|
+
* const object = await loader.loadAsync( './models/amf/rook.amf' );
|
|
23
|
+
* scene.add( object );
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @augments Loader
|
|
27
27
|
*/
|
|
28
|
-
|
|
29
28
|
class AMFLoader extends Loader {
|
|
30
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new AMF loader.
|
|
32
|
+
*
|
|
33
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
34
|
+
*/
|
|
31
35
|
constructor( manager ) {
|
|
32
36
|
|
|
33
37
|
super( manager );
|
|
34
38
|
|
|
35
39
|
}
|
|
36
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Starts loading from the given URL and passes the loaded AMF asset
|
|
43
|
+
* to the `onLoad()` callback.
|
|
44
|
+
*
|
|
45
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
46
|
+
* @param {function(Group)} onLoad - Executed when the loading process has been finished.
|
|
47
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
48
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
49
|
+
*/
|
|
37
50
|
load( url, onLoad, onProgress, onError ) {
|
|
38
51
|
|
|
39
52
|
const scope = this;
|
|
@@ -69,6 +82,12 @@ class AMFLoader extends Loader {
|
|
|
69
82
|
|
|
70
83
|
}
|
|
71
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Parses the given AMF data and returns the resulting group.
|
|
87
|
+
*
|
|
88
|
+
* @param {ArrayBuffer} data - The raw AMF asset data as an array buffer.
|
|
89
|
+
* @return {Group} A group representing the parsed asset.
|
|
90
|
+
*/
|
|
72
91
|
parse( data ) {
|
|
73
92
|
|
|
74
93
|
function loadDocument( data ) {
|
|
@@ -236,7 +255,7 @@ class AMFLoader extends Loader {
|
|
|
236
255
|
|
|
237
256
|
function loadMeshVolume( node ) {
|
|
238
257
|
|
|
239
|
-
const volume = { name: '', triangles: [],
|
|
258
|
+
const volume = { name: '', triangles: [], materialId: null };
|
|
240
259
|
|
|
241
260
|
let currVolumeNode = node.firstElementChild;
|
|
242
261
|
|
|
@@ -11,23 +11,65 @@ import {
|
|
|
11
11
|
} from 'three';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* A loader for the BVH format.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
16
|
+
* Imports BVH files and outputs a single {@link Skeleton} and {@link AnimationClip}.
|
|
17
|
+
* The loader only supports BVH files containing a single root right now.
|
|
17
18
|
*
|
|
19
|
+
* ```js
|
|
20
|
+
* const loader = new BVHLoader();
|
|
21
|
+
* const result = await loader.loadAsync( 'models/bvh/pirouette.bvh' );
|
|
22
|
+
*
|
|
23
|
+
* // visualize skeleton
|
|
24
|
+
* const skeletonHelper = new THREE.SkeletonHelper( result.skeleton.bones[ 0 ] );
|
|
25
|
+
* scene.add( result.skeleton.bones[ 0 ] );
|
|
26
|
+
* scene.add( skeletonHelper );
|
|
27
|
+
*
|
|
28
|
+
* // play animation clip
|
|
29
|
+
* mixer = new THREE.AnimationMixer( result.skeleton.bones[ 0 ] );
|
|
30
|
+
* mixer.clipAction( result.clip ).play();
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @augments Loader
|
|
18
34
|
*/
|
|
19
|
-
|
|
20
35
|
class BVHLoader extends Loader {
|
|
21
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Constructs a new BVH loader.
|
|
39
|
+
*
|
|
40
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
41
|
+
*/
|
|
22
42
|
constructor( manager ) {
|
|
23
43
|
|
|
24
44
|
super( manager );
|
|
25
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Whether to animate bone positions or not.
|
|
48
|
+
*
|
|
49
|
+
* @type {boolean}
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
26
52
|
this.animateBonePositions = true;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Whether to animate bone rotations or not.
|
|
56
|
+
*
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
* @default true
|
|
59
|
+
*/
|
|
27
60
|
this.animateBoneRotations = true;
|
|
28
61
|
|
|
29
62
|
}
|
|
30
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Starts loading from the given URL and passes the loaded BVH asset
|
|
66
|
+
* to the `onLoad()` callback.
|
|
67
|
+
*
|
|
68
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
69
|
+
* @param {function({skeleton:Skeleton,clip:AnimationClip})} onLoad - Executed when the loading process has been finished.
|
|
70
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
71
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
72
|
+
*/
|
|
31
73
|
load( url, onLoad, onProgress, onError ) {
|
|
32
74
|
|
|
33
75
|
const scope = this;
|
|
@@ -62,15 +104,19 @@ class BVHLoader extends Loader {
|
|
|
62
104
|
|
|
63
105
|
}
|
|
64
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Parses the given BVH data and returns the resulting data.
|
|
109
|
+
*
|
|
110
|
+
* @param {string} text - The raw BVH data as a string.
|
|
111
|
+
* @return {{skeleton:Skeleton,clip:AnimationClip}} An object representing the parsed asset.
|
|
112
|
+
*/
|
|
65
113
|
parse( text ) {
|
|
66
114
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
and outputs a skeleton structure including motion data
|
|
115
|
+
// reads a string array (lines) from a BVH file
|
|
116
|
+
// and outputs a skeleton structure including motion data
|
|
70
117
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
*/
|
|
118
|
+
// returns thee root node:
|
|
119
|
+
// { name: '', channels: [], children: [] }
|
|
74
120
|
function readBvh( lines ) {
|
|
75
121
|
|
|
76
122
|
// read model structure
|
|
@@ -338,11 +384,11 @@ class BVHLoader extends Loader {
|
|
|
338
384
|
}
|
|
339
385
|
|
|
340
386
|
/*
|
|
341
|
-
builds
|
|
387
|
+
builds an AnimationClip from the keyframe data saved in each bone.
|
|
342
388
|
|
|
343
389
|
bone: bvh root node
|
|
344
390
|
|
|
345
|
-
returns:
|
|
391
|
+
returns: an AnimationClip containing position and quaternion tracks
|
|
346
392
|
*/
|
|
347
393
|
function toTHREEAnimation( bones ) {
|
|
348
394
|
|
|
@@ -41,8 +41,35 @@ import {
|
|
|
41
41
|
} from 'three';
|
|
42
42
|
import { TGALoader } from '../loaders/TGALoader.js';
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* A loader for the Collada format.
|
|
46
|
+
*
|
|
47
|
+
* The Collada format is very complex so this loader only supports a subset of what
|
|
48
|
+
* is defined in the [official specification]{@link https://www.khronos.org/files/collada_spec_1_5.pdf}.
|
|
49
|
+
*
|
|
50
|
+
* Assets with a Z-UP coordinate system are transformed it into Y-UP by a simple rotation.
|
|
51
|
+
* The vertex data are not converted.
|
|
52
|
+
*
|
|
53
|
+
* ```js
|
|
54
|
+
* const loader = new ColladaLoader();
|
|
55
|
+
*
|
|
56
|
+
* const result = await loader.loadAsync( './models/collada/elf/elf.dae' );
|
|
57
|
+
* scene.add( result.scene );
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @augments Loader
|
|
61
|
+
*/
|
|
44
62
|
class ColladaLoader extends Loader {
|
|
45
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Starts loading from the given URL and passes the loaded Collada asset
|
|
66
|
+
* to the `onLoad()` callback.
|
|
67
|
+
*
|
|
68
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
69
|
+
* @param {function({scene:Group,animations:Array<AnimationClip>,kinematics:Object})} onLoad - Executed when the loading process has been finished.
|
|
70
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
71
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
72
|
+
*/
|
|
46
73
|
load( url, onLoad, onProgress, onError ) {
|
|
47
74
|
|
|
48
75
|
const scope = this;
|
|
@@ -79,6 +106,14 @@ class ColladaLoader extends Loader {
|
|
|
79
106
|
|
|
80
107
|
}
|
|
81
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Parses the given Collada data and returns a result oject holding the parsed scene,
|
|
111
|
+
* an array of animation clips and kinematics.
|
|
112
|
+
*
|
|
113
|
+
* @param {string} text - The raw Collada data as a string.
|
|
114
|
+
* @param {string} path - The asset path.
|
|
115
|
+
* @return {{scene:Group,animations:Array<AnimationClip>,kinematics:Object}} An object representing the parsed asset.
|
|
116
|
+
*/
|
|
82
117
|
parse( text, path ) {
|
|
83
118
|
|
|
84
119
|
function getElementsByTagName( xml, name ) {
|
|
@@ -3971,7 +4006,7 @@ class ColladaLoader extends Loader {
|
|
|
3971
4006
|
} else {
|
|
3972
4007
|
|
|
3973
4008
|
result += '\n';
|
|
3974
|
-
stack.push
|
|
4009
|
+
stack.push( ...node.childNodes );
|
|
3975
4010
|
|
|
3976
4011
|
}
|
|
3977
4012
|
|
|
@@ -9,14 +9,38 @@ import {
|
|
|
9
9
|
RGB_BPTC_UNSIGNED_Format
|
|
10
10
|
} from 'three';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* A loader for the S3TC texture compression format.
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* const loader = new DDSLoader();
|
|
17
|
+
*
|
|
18
|
+
* const map = loader.load( 'textures/compressed/disturb_dxt1_nomip.dds' );
|
|
19
|
+
* map.colorSpace = THREE.SRGBColorSpace; // only for color textures
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @augments CompressedTextureLoader
|
|
23
|
+
*/
|
|
12
24
|
class DDSLoader extends CompressedTextureLoader {
|
|
13
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new DDS loader.
|
|
28
|
+
*
|
|
29
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
30
|
+
*/
|
|
14
31
|
constructor( manager ) {
|
|
15
32
|
|
|
16
33
|
super( manager );
|
|
17
34
|
|
|
18
35
|
}
|
|
19
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Parses the given S3TC texture data.
|
|
39
|
+
*
|
|
40
|
+
* @param {ArrayBuffer} buffer - The raw texture data.
|
|
41
|
+
* @param {boolean} loadMipmaps - Whether to load mipmaps or not.
|
|
42
|
+
* @return {CompressedTextureLoader~TexData} An object representing the parsed texture data.
|
|
43
|
+
*/
|
|
20
44
|
parse( buffer, loadMipmaps ) {
|
|
21
45
|
|
|
22
46
|
const dds = { mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1 };
|
|
@@ -126,7 +150,7 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
126
150
|
byteArray[ dst ] = r; dst ++; //r
|
|
127
151
|
byteArray[ dst ] = g; dst ++; //g
|
|
128
152
|
byteArray[ dst ] = b; dst ++; //b
|
|
129
|
-
|
|
153
|
+
byteArray[ dst ] = 255; dst ++; //a
|
|
130
154
|
|
|
131
155
|
}
|
|
132
156
|
|
|
@@ -11,8 +11,44 @@ import {
|
|
|
11
11
|
|
|
12
12
|
const _taskCache = new WeakMap();
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* A loader for the Draco format.
|
|
16
|
+
*
|
|
17
|
+
* [Draco]{@link https://google.github.io/draco/} is an open source library for compressing
|
|
18
|
+
* and decompressing 3D meshes and point clouds. Compressed geometry can be significantly smaller,
|
|
19
|
+
* at the cost of additional decoding time on the client device.
|
|
20
|
+
*
|
|
21
|
+
* Standalone Draco files have a `.drc` extension, and contain vertex positions, normals, colors,
|
|
22
|
+
* and other attributes. Draco files do not contain materials, textures, animation, or node hierarchies –
|
|
23
|
+
* to use these features, embed Draco geometry inside of a glTF file. A normal glTF file can be converted
|
|
24
|
+
* to a Draco-compressed glTF file using [glTF-Pipeline]{@link https://github.com/CesiumGS/gltf-pipeline}.
|
|
25
|
+
* When using Draco with glTF, an instance of `DRACOLoader` will be used internally by {@link GLTFLoader}.
|
|
26
|
+
*
|
|
27
|
+
* It is recommended to create one DRACOLoader instance and reuse it to avoid loading and creating
|
|
28
|
+
* multiple decoder instances.
|
|
29
|
+
*
|
|
30
|
+
* `DRACOLoader` will automatically use either the JS or the WASM decoding library, based on
|
|
31
|
+
* browser capabilities.
|
|
32
|
+
*
|
|
33
|
+
* ```js
|
|
34
|
+
* const loader = new DRACOLoader();
|
|
35
|
+
* loader.setDecoderPath( '/examples/jsm/libs/draco/' );
|
|
36
|
+
*
|
|
37
|
+
* const geometry = await dracoLoader.loadAsync( 'models/draco/bunny.drc' );
|
|
38
|
+
* geometry.computeVertexNormals(); // optional
|
|
39
|
+
*
|
|
40
|
+
* dracoLoader.dispose();
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @augments Loader
|
|
44
|
+
*/
|
|
14
45
|
class DRACOLoader extends Loader {
|
|
15
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Constructs a new Draco loader.
|
|
49
|
+
*
|
|
50
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
51
|
+
*/
|
|
16
52
|
constructor( manager ) {
|
|
17
53
|
|
|
18
54
|
super( manager );
|
|
@@ -42,6 +78,12 @@ class DRACOLoader extends Loader {
|
|
|
42
78
|
|
|
43
79
|
}
|
|
44
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Provides configuration for the decoder libraries. Configuration cannot be changed after decoding begins.
|
|
83
|
+
*
|
|
84
|
+
* @param {string} path - The decoder path.
|
|
85
|
+
* @return {DRACOLoader} A reference to this loader.
|
|
86
|
+
*/
|
|
45
87
|
setDecoderPath( path ) {
|
|
46
88
|
|
|
47
89
|
this.decoderPath = path;
|
|
@@ -50,6 +92,12 @@ class DRACOLoader extends Loader {
|
|
|
50
92
|
|
|
51
93
|
}
|
|
52
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Provides configuration for the decoder libraries. Configuration cannot be changed after decoding begins.
|
|
97
|
+
*
|
|
98
|
+
* @param {{type:('js'|'wasm')}} config - The decoder config.
|
|
99
|
+
* @return {DRACOLoader} A reference to this loader.
|
|
100
|
+
*/
|
|
53
101
|
setDecoderConfig( config ) {
|
|
54
102
|
|
|
55
103
|
this.decoderConfig = config;
|
|
@@ -58,6 +106,13 @@ class DRACOLoader extends Loader {
|
|
|
58
106
|
|
|
59
107
|
}
|
|
60
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Sets the maximum number of Web Workers to be used during decoding.
|
|
111
|
+
* A lower limit may be preferable if workers are also for other tasks in the application.
|
|
112
|
+
*
|
|
113
|
+
* @param {number} workerLimit - The worker limit.
|
|
114
|
+
* @return {DRACOLoader} A reference to this loader.
|
|
115
|
+
*/
|
|
61
116
|
setWorkerLimit( workerLimit ) {
|
|
62
117
|
|
|
63
118
|
this.workerLimit = workerLimit;
|
|
@@ -66,6 +121,15 @@ class DRACOLoader extends Loader {
|
|
|
66
121
|
|
|
67
122
|
}
|
|
68
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Starts loading from the given URL and passes the loaded Draco asset
|
|
126
|
+
* to the `onLoad()` callback.
|
|
127
|
+
*
|
|
128
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
129
|
+
* @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
|
|
130
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
131
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
132
|
+
*/
|
|
69
133
|
load( url, onLoad, onProgress, onError ) {
|
|
70
134
|
|
|
71
135
|
const loader = new FileLoader( this.manager );
|
|
@@ -83,13 +147,21 @@ class DRACOLoader extends Loader {
|
|
|
83
147
|
|
|
84
148
|
}
|
|
85
149
|
|
|
86
|
-
|
|
150
|
+
/**
|
|
151
|
+
* Parses the given Draco data.
|
|
152
|
+
*
|
|
153
|
+
* @param {ArrayBuffer} buffer - The raw Draco data as an array buffer.
|
|
154
|
+
* @param {function(BufferGeometry)} onLoad - Executed when the loading/parsing process has been finished.
|
|
155
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
156
|
+
*/
|
|
87
157
|
parse( buffer, onLoad, onError = ()=>{} ) {
|
|
88
158
|
|
|
89
159
|
this.decodeDracoFile( buffer, onLoad, null, null, SRGBColorSpace, onError ).catch( onError );
|
|
90
160
|
|
|
91
161
|
}
|
|
92
162
|
|
|
163
|
+
//
|
|
164
|
+
|
|
93
165
|
decodeDracoFile( buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => {} ) {
|
|
94
166
|
|
|
95
167
|
const taskConfig = {
|