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
|
@@ -2,14 +2,45 @@ import { AudioContext } from '../audio/AudioContext.js';
|
|
|
2
2
|
import { FileLoader } from './FileLoader.js';
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Class for loading audio buffers. Audios are internally
|
|
7
|
+
* loaded via {@link FileLoader}.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const audioListener = new THREE.AudioListener();
|
|
11
|
+
* const ambientSound = new THREE.Audio( audioListener );
|
|
12
|
+
*
|
|
13
|
+
* const loader = new THREE.AudioLoader();
|
|
14
|
+
* const audioBuffer = await loader.loadAsync( 'audio/ambient_ocean.ogg' );
|
|
15
|
+
*
|
|
16
|
+
* ambientSound.setBuffer( audioBuffer );
|
|
17
|
+
* ambientSound.play();
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @augments Loader
|
|
21
|
+
*/
|
|
5
22
|
class AudioLoader extends Loader {
|
|
6
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new audio loader.
|
|
26
|
+
*
|
|
27
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
28
|
+
*/
|
|
7
29
|
constructor( manager ) {
|
|
8
30
|
|
|
9
31
|
super( manager );
|
|
10
32
|
|
|
11
33
|
}
|
|
12
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Starts loading from the given URL and passes the loaded audio buffer
|
|
37
|
+
* to the `onLoad()` callback.
|
|
38
|
+
*
|
|
39
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
40
|
+
* @param {function(AudioBuffer)} onLoad - Executed when the loading process has been finished.
|
|
41
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
42
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
43
|
+
*/
|
|
13
44
|
load( url, onLoad, onProgress, onError ) {
|
|
14
45
|
|
|
15
46
|
const scope = this;
|
|
@@ -10,14 +10,42 @@ import { InterleavedBufferAttribute } from '../core/InterleavedBufferAttribute.j
|
|
|
10
10
|
import { InterleavedBuffer } from '../core/InterleavedBuffer.js';
|
|
11
11
|
import { getTypedArray } from '../utils.js';
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Class for loading geometries. The files are internally
|
|
15
|
+
* loaded via {@link FileLoader}.
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const loader = new THREE.BufferGeometryLoader();
|
|
19
|
+
* const geometry = await loader.loadAsync( 'models/json/pressure.json' );
|
|
20
|
+
*
|
|
21
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xF5F5F5 } );
|
|
22
|
+
* const object = new THREE.Mesh( geometry, material );
|
|
23
|
+
* scene.add( object );
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @augments Loader
|
|
27
|
+
*/
|
|
13
28
|
class BufferGeometryLoader extends Loader {
|
|
14
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new geometry loader.
|
|
32
|
+
*
|
|
33
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
34
|
+
*/
|
|
15
35
|
constructor( manager ) {
|
|
16
36
|
|
|
17
37
|
super( manager );
|
|
18
38
|
|
|
19
39
|
}
|
|
20
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Starts loading from the given URL and pass the loaded geometry to the `onLoad()` callback.
|
|
43
|
+
*
|
|
44
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
45
|
+
* @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
|
|
46
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
47
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
48
|
+
*/
|
|
21
49
|
load( url, onLoad, onProgress, onError ) {
|
|
22
50
|
|
|
23
51
|
const scope = this;
|
|
@@ -52,6 +80,12 @@ class BufferGeometryLoader extends Loader {
|
|
|
52
80
|
|
|
53
81
|
}
|
|
54
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Parses the given JSON object and returns a geometry.
|
|
85
|
+
*
|
|
86
|
+
* @param {Object} json - The serialized geometry.
|
|
87
|
+
* @return {BufferGeometry} The parsed geometry.
|
|
88
|
+
*/
|
|
55
89
|
parse( json ) {
|
|
56
90
|
|
|
57
91
|
const interleavedBufferMap = {};
|
package/src/loaders/Cache.js
CHANGED
|
@@ -1,9 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class
|
|
3
|
+
* @classdesc A simple caching system, used internally by {@link FileLoader}.
|
|
4
|
+
* To enable caching across all loaders that use {@link FileLoader}, add `THREE.Cache.enabled = true.` once in your app.
|
|
5
|
+
* @hideconstructor
|
|
6
|
+
*/
|
|
1
7
|
const Cache = {
|
|
2
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Whether caching is enabled or not.
|
|
11
|
+
*
|
|
12
|
+
* @static
|
|
13
|
+
* @type {boolean}
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
3
16
|
enabled: false,
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* A dictionary that holds cached files.
|
|
20
|
+
*
|
|
21
|
+
* @static
|
|
22
|
+
* @type {Object<string,Object>}
|
|
23
|
+
*/
|
|
5
24
|
files: {},
|
|
6
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Adds a cache entry with a key to reference the file. If this key already
|
|
28
|
+
* holds a file, it is overwritten.
|
|
29
|
+
*
|
|
30
|
+
* @static
|
|
31
|
+
* @param {string} key - The key to reference the cached file.
|
|
32
|
+
* @param {Object} file - The file to be cached.
|
|
33
|
+
*/
|
|
7
34
|
add: function ( key, file ) {
|
|
8
35
|
|
|
9
36
|
if ( this.enabled === false ) return;
|
|
@@ -14,6 +41,13 @@ const Cache = {
|
|
|
14
41
|
|
|
15
42
|
},
|
|
16
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Gets the cached value for the given key.
|
|
46
|
+
*
|
|
47
|
+
* @static
|
|
48
|
+
* @param {string} key - The key to reference the cached file.
|
|
49
|
+
* @return {Object|undefined} The cached file. If the key does not exist `undefined` is returned.
|
|
50
|
+
*/
|
|
17
51
|
get: function ( key ) {
|
|
18
52
|
|
|
19
53
|
if ( this.enabled === false ) return;
|
|
@@ -24,12 +58,23 @@ const Cache = {
|
|
|
24
58
|
|
|
25
59
|
},
|
|
26
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Removes the cached file associated with the given key.
|
|
63
|
+
*
|
|
64
|
+
* @static
|
|
65
|
+
* @param {string} key - The key to reference the cached file.
|
|
66
|
+
*/
|
|
27
67
|
remove: function ( key ) {
|
|
28
68
|
|
|
29
69
|
delete this.files[ key ];
|
|
30
70
|
|
|
31
71
|
},
|
|
32
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Remove all values from the cache.
|
|
75
|
+
*
|
|
76
|
+
* @static
|
|
77
|
+
*/
|
|
33
78
|
clear: function () {
|
|
34
79
|
|
|
35
80
|
this.files = {};
|
|
@@ -4,19 +4,40 @@ import { CompressedTexture } from '../textures/CompressedTexture.js';
|
|
|
4
4
|
import { Loader } from './Loader.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Abstract
|
|
7
|
+
* Abstract base class for loading compressed texture formats S3TC, ASTC or ETC.
|
|
8
|
+
* Textures are internally loaded via {@link FileLoader}.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
+
* Derived classes have to implement the `parse()` method which holds the parsing
|
|
11
|
+
* for the respective format.
|
|
12
|
+
*
|
|
13
|
+
* @abstract
|
|
14
|
+
* @augments Loader
|
|
10
15
|
*/
|
|
11
|
-
|
|
12
16
|
class CompressedTextureLoader extends Loader {
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new compressed texture loader.
|
|
20
|
+
*
|
|
21
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
22
|
+
*/
|
|
14
23
|
constructor( manager ) {
|
|
15
24
|
|
|
16
25
|
super( manager );
|
|
17
26
|
|
|
18
27
|
}
|
|
19
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Starts loading from the given URL and passes the loaded compressed texture
|
|
31
|
+
* to the `onLoad()` callback. The method also returns a new texture object which can
|
|
32
|
+
* directly be used for material creation. If you do it this way, the texture
|
|
33
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
34
|
+
*
|
|
35
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
36
|
+
* @param {function(CompressedTexture)} onLoad - Executed when the loading process has been finished.
|
|
37
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
38
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
39
|
+
* @return {CompressedTexture} The compressed texture.
|
|
40
|
+
*/
|
|
20
41
|
load( url, onLoad, onProgress, onError ) {
|
|
21
42
|
|
|
22
43
|
const scope = this;
|
|
@@ -130,5 +151,17 @@ class CompressedTextureLoader extends Loader {
|
|
|
130
151
|
|
|
131
152
|
}
|
|
132
153
|
|
|
154
|
+
/**
|
|
155
|
+
* Represents the result object type of the `parse()` method.
|
|
156
|
+
*
|
|
157
|
+
* @typedef {Object} CompressedTextureLoader~TexData
|
|
158
|
+
* @property {number} width - The width of the base mip.
|
|
159
|
+
* @property {number} height - The width of the base mip.
|
|
160
|
+
* @property {boolean} isCubemap - Whether the data represent a cubemap or not.
|
|
161
|
+
* @property {number} mipmapCount - The mipmap count.
|
|
162
|
+
* @property {Array<{data:TypedArray,width:number,height:number}>} mipmaps - An array holding the mipmaps.
|
|
163
|
+
* Each entry holds the data and the dimensions for each level.
|
|
164
|
+
* @property {number} format - The texture format.
|
|
165
|
+
**/
|
|
133
166
|
|
|
134
167
|
export { CompressedTextureLoader };
|
|
@@ -3,14 +3,59 @@ import { CubeTexture } from '../textures/CubeTexture.js';
|
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
4
|
import { SRGBColorSpace } from '../constants.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Class for loading cube textures. Images are internally loaded via {@link ImageLoader}.
|
|
8
|
+
*
|
|
9
|
+
* The loader returns an instance of {@link CubeTexture} and expects the cube map to
|
|
10
|
+
* be defined as six separate images representing the sides of a cube. Other cube map definitions
|
|
11
|
+
* like vertical and horizontal cross, column and row layouts are not supported.
|
|
12
|
+
*
|
|
13
|
+
* Note that, by convention, cube maps are specified in a coordinate system
|
|
14
|
+
* in which positive-x is to the right when looking up the positive-z axis --
|
|
15
|
+
* in other words, using a left-handed coordinate system. Since three.js uses
|
|
16
|
+
* a right-handed coordinate system, environment maps used in three.js will
|
|
17
|
+
* have pos-x and neg-x swapped.
|
|
18
|
+
*
|
|
19
|
+
* The loaded cube texture is in sRGB color space. Meaning {@link Texture#colorSpace}
|
|
20
|
+
* is set to `SRGBColorSpace` by default.
|
|
21
|
+
*
|
|
22
|
+
* ```js
|
|
23
|
+
* const loader = new THREE.CubeTextureLoader().setPath( 'textures/cubeMaps/' );
|
|
24
|
+
* const cubeTexture = await loader.loadAsync( [
|
|
25
|
+
* 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'
|
|
26
|
+
* ] );
|
|
27
|
+
* scene.background = cubeTexture;
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @augments Loader
|
|
31
|
+
*/
|
|
6
32
|
class CubeTextureLoader extends Loader {
|
|
7
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new cube texture loader.
|
|
36
|
+
*
|
|
37
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
38
|
+
*/
|
|
8
39
|
constructor( manager ) {
|
|
9
40
|
|
|
10
41
|
super( manager );
|
|
11
42
|
|
|
12
43
|
}
|
|
13
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Starts loading from the given URL and pass the fully loaded cube texture
|
|
47
|
+
* to the `onLoad()` callback. The method also returns a new cube texture object which can
|
|
48
|
+
* directly be used for material creation. If you do it this way, the cube texture
|
|
49
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
50
|
+
*
|
|
51
|
+
* @param {Array<string>} urls - Array of 6 URLs to images, one for each side of the
|
|
52
|
+
* cube texture. The urls should be specified in the following order: pos-x,
|
|
53
|
+
* neg-x, pos-y, neg-y, pos-z, neg-z. An array of data URIs are allowed as well.
|
|
54
|
+
* @param {function(CubeTexture)} onLoad - Executed when the loading process has been finished.
|
|
55
|
+
* @param {onProgressCallback} onProgress - Unsupported in this loader.
|
|
56
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
57
|
+
* @return {CubeTexture} The cube texture.
|
|
58
|
+
*/
|
|
14
59
|
load( urls, onLoad, onProgress, onError ) {
|
|
15
60
|
|
|
16
61
|
const texture = new CubeTexture();
|
|
@@ -4,19 +4,40 @@ import { DataTexture } from '../textures/DataTexture.js';
|
|
|
4
4
|
import { Loader } from './Loader.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Abstract
|
|
7
|
+
* Abstract base class for loading binary texture formats RGBE, EXR or TGA.
|
|
8
|
+
* Textures are internally loaded via {@link FileLoader}.
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
+
* Derived classes have to implement the `parse()` method which holds the parsing
|
|
11
|
+
* for the respective format.
|
|
12
|
+
*
|
|
13
|
+
* @abstract
|
|
14
|
+
* @augments Loader
|
|
10
15
|
*/
|
|
11
|
-
|
|
12
16
|
class DataTextureLoader extends Loader {
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new data texture loader.
|
|
20
|
+
*
|
|
21
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
22
|
+
*/
|
|
14
23
|
constructor( manager ) {
|
|
15
24
|
|
|
16
25
|
super( manager );
|
|
17
26
|
|
|
18
27
|
}
|
|
19
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Starts loading from the given URL and passes the loaded data texture
|
|
31
|
+
* to the `onLoad()` callback. The method also returns a new texture object which can
|
|
32
|
+
* directly be used for material creation. If you do it this way, the texture
|
|
33
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
34
|
+
*
|
|
35
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
36
|
+
* @param {function(DataTexture)} onLoad - Executed when the loading process has been finished.
|
|
37
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
38
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
39
|
+
* @return {DataTexture} The data texture.
|
|
40
|
+
*/
|
|
20
41
|
load( url, onLoad, onProgress, onError ) {
|
|
21
42
|
|
|
22
43
|
const scope = this;
|
|
@@ -127,5 +148,25 @@ class DataTextureLoader extends Loader {
|
|
|
127
148
|
|
|
128
149
|
}
|
|
129
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Represents the result object type of the `parse()` method.
|
|
153
|
+
*
|
|
154
|
+
* @typedef {Object} DataTextureLoader~TexData
|
|
155
|
+
* @property {Object} [image] - An object holding width, height and the texture data.
|
|
156
|
+
* @property {number} [width] - The width of the base mip.
|
|
157
|
+
* @property {number} [height] - The width of the base mip.
|
|
158
|
+
* @property {TypedArray} [data] - The texture data.
|
|
159
|
+
* @property {number} [format] - The texture format.
|
|
160
|
+
* @property {number} [type] - The texture type.
|
|
161
|
+
* @property {boolean} [flipY] - If set to `true`, the texture is flipped along the vertical axis when uploaded to the GPU.
|
|
162
|
+
* @property {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
163
|
+
* @property {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
164
|
+
* @property {number} [anisotropy=1] - The anisotropy value.
|
|
165
|
+
* @property {boolean} [generateMipmaps] - Whether to generate mipmaps or not.
|
|
166
|
+
* @property {string} [colorSpace] - The color space.
|
|
167
|
+
* @property {number} [magFilter] - The mag filter.
|
|
168
|
+
* @property {number} [minFilter] - The min filter.
|
|
169
|
+
* @property {Array<Object>} [mipmaps] - The mipmaps.
|
|
170
|
+
**/
|
|
130
171
|
|
|
131
172
|
export { DataTextureLoader };
|
|
@@ -14,14 +14,58 @@ class HttpError extends Error {
|
|
|
14
14
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* A low level class for loading resources with the Fetch API, used internally by
|
|
19
|
+
* most loaders. It can also be used directly to load any file type that does
|
|
20
|
+
* not have a loader.
|
|
21
|
+
*
|
|
22
|
+
* This loader supports caching. If you want to use it, add `THREE.Cache.enabled = true;`
|
|
23
|
+
* once to your application.
|
|
24
|
+
*
|
|
25
|
+
* ```js
|
|
26
|
+
* const loader = new THREE.FileLoader();
|
|
27
|
+
* const data = await loader.loadAsync( 'example.txt' );
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @augments Loader
|
|
31
|
+
*/
|
|
17
32
|
class FileLoader extends Loader {
|
|
18
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new file loader.
|
|
36
|
+
*
|
|
37
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
38
|
+
*/
|
|
19
39
|
constructor( manager ) {
|
|
20
40
|
|
|
21
41
|
super( manager );
|
|
22
42
|
|
|
43
|
+
/**
|
|
44
|
+
* The expected mime type.
|
|
45
|
+
*
|
|
46
|
+
* @type {string}
|
|
47
|
+
*/
|
|
48
|
+
this.mimeType = '';
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The expected response type.
|
|
52
|
+
*
|
|
53
|
+
* @type {('arraybuffer'|'blob'|'document'|'json'|'')}
|
|
54
|
+
* @default ''
|
|
55
|
+
*/
|
|
56
|
+
this.responseType = '';
|
|
57
|
+
|
|
23
58
|
}
|
|
24
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Starts loading from the given URL and pass the loaded response to the `onLoad()` callback.
|
|
62
|
+
*
|
|
63
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
64
|
+
* @param {function(any)} onLoad - Executed when the loading process has been finished.
|
|
65
|
+
* @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.
|
|
66
|
+
* @param {onErrorCallback} [onError] - Executed when errors occur.
|
|
67
|
+
* @return {any|undefined} The cached resource if available.
|
|
68
|
+
*/
|
|
25
69
|
load( url, onLoad, onProgress, onError ) {
|
|
26
70
|
|
|
27
71
|
if ( url === undefined ) url = '';
|
|
@@ -197,7 +241,7 @@ class FileLoader extends Loader {
|
|
|
197
241
|
|
|
198
242
|
default:
|
|
199
243
|
|
|
200
|
-
if ( mimeType ===
|
|
244
|
+
if ( mimeType === '' ) {
|
|
201
245
|
|
|
202
246
|
return response.text();
|
|
203
247
|
|
|
@@ -268,6 +312,12 @@ class FileLoader extends Loader {
|
|
|
268
312
|
|
|
269
313
|
}
|
|
270
314
|
|
|
315
|
+
/**
|
|
316
|
+
* Sets the expected response type.
|
|
317
|
+
*
|
|
318
|
+
* @param {('arraybuffer'|'blob'|'document'|'json'|'')} value - The response type.
|
|
319
|
+
* @return {FileLoader} A reference to this file loader.
|
|
320
|
+
*/
|
|
271
321
|
setResponseType( value ) {
|
|
272
322
|
|
|
273
323
|
this.responseType = value;
|
|
@@ -275,6 +325,12 @@ class FileLoader extends Loader {
|
|
|
275
325
|
|
|
276
326
|
}
|
|
277
327
|
|
|
328
|
+
/**
|
|
329
|
+
* Sets the expected mime type of the loaded file.
|
|
330
|
+
*
|
|
331
|
+
* @param {string} value - The mime type.
|
|
332
|
+
* @return {FileLoader} A reference to this file loader.
|
|
333
|
+
*/
|
|
278
334
|
setMimeType( value ) {
|
|
279
335
|
|
|
280
336
|
this.mimeType = value;
|
|
@@ -1,12 +1,47 @@
|
|
|
1
1
|
import { Cache } from './Cache.js';
|
|
2
2
|
import { Loader } from './Loader.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A loader for loading images as an [ImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap}.
|
|
6
|
+
* An `ImageBitmap` provides an asynchronous and resource efficient pathway to prepare
|
|
7
|
+
* textures for rendering.
|
|
8
|
+
*
|
|
9
|
+
* Note that {@link Texture#flipY} and {@link Texture#premultiplyAlpha} are ignored with image bitmaps.
|
|
10
|
+
* They needs these configuration on bitmap creation unlike regular images need them on uploading to GPU.
|
|
11
|
+
*
|
|
12
|
+
* You need to set the equivalent options via {@link ImageBitmapLoader#setOptions} instead.
|
|
13
|
+
*
|
|
14
|
+
* Also note that unlike {@link FileLoader}, this loader does not avoid multiple concurrent requests to the same URL.
|
|
15
|
+
*
|
|
16
|
+
* ```js
|
|
17
|
+
* const loader = new THREE.ImageBitmapLoader();
|
|
18
|
+
* loader.setOptions( { imageOrientation: 'flipY' } ); // set options if needed
|
|
19
|
+
* const imageBitmap = await loader.loadAsync( 'image.png' );
|
|
20
|
+
*
|
|
21
|
+
* const texture = new THREE.Texture( imageBitmap );
|
|
22
|
+
* texture.needsUpdate = true;
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @augments Loader
|
|
26
|
+
*/
|
|
4
27
|
class ImageBitmapLoader extends Loader {
|
|
5
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new image bitmap loader.
|
|
31
|
+
*
|
|
32
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
33
|
+
*/
|
|
6
34
|
constructor( manager ) {
|
|
7
35
|
|
|
8
36
|
super( manager );
|
|
9
37
|
|
|
38
|
+
/**
|
|
39
|
+
* This flag can be used for type testing.
|
|
40
|
+
*
|
|
41
|
+
* @type {boolean}
|
|
42
|
+
* @readonly
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
10
45
|
this.isImageBitmapLoader = true;
|
|
11
46
|
|
|
12
47
|
if ( typeof createImageBitmap === 'undefined' ) {
|
|
@@ -21,10 +56,23 @@ class ImageBitmapLoader extends Loader {
|
|
|
21
56
|
|
|
22
57
|
}
|
|
23
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Represents the loader options.
|
|
61
|
+
*
|
|
62
|
+
* @type {Object}
|
|
63
|
+
* @default {premultiplyAlpha:'none'}
|
|
64
|
+
*/
|
|
24
65
|
this.options = { premultiplyAlpha: 'none' };
|
|
25
66
|
|
|
26
67
|
}
|
|
27
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Sets the given loader options. The structure of the object must match the `options` parameter of
|
|
71
|
+
* [createImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap}.
|
|
72
|
+
*
|
|
73
|
+
* @param {Object} options - The loader options to set.
|
|
74
|
+
* @return {ImageBitmapLoader} A reference to this image bitmap loader.
|
|
75
|
+
*/
|
|
28
76
|
setOptions( options ) {
|
|
29
77
|
|
|
30
78
|
this.options = options;
|
|
@@ -33,6 +81,15 @@ class ImageBitmapLoader extends Loader {
|
|
|
33
81
|
|
|
34
82
|
}
|
|
35
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Starts loading from the given URL and pass the loaded image bitmap to the `onLoad()` callback.
|
|
86
|
+
*
|
|
87
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
88
|
+
* @param {function(ImageBitmap)} onLoad - Executed when the loading process has been finished.
|
|
89
|
+
* @param {onProgressCallback} onProgress - Unsupported in this loader.
|
|
90
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
91
|
+
* @return {ImageBitmap|undefined} The image bitmap.
|
|
92
|
+
*/
|
|
36
93
|
load( url, onLoad, onProgress, onError ) {
|
|
37
94
|
|
|
38
95
|
if ( url === undefined ) url = '';
|
|
@@ -2,14 +2,44 @@ import { Cache } from './Cache.js';
|
|
|
2
2
|
import { Loader } from './Loader.js';
|
|
3
3
|
import { createElementNS } from '../utils.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A loader for loading images. The class loads images with the HTML `Image` API.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const loader = new THREE.ImageLoader();
|
|
10
|
+
* const image = await loader.loadAsync( 'image.png' );
|
|
11
|
+
* ```
|
|
12
|
+
* Please note that `ImageLoader` has dropped support for progress
|
|
13
|
+
* events in `r84`. For an `ImageLoader` that supports progress events, see
|
|
14
|
+
* [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639}.
|
|
15
|
+
*
|
|
16
|
+
* @augments Loader
|
|
17
|
+
*/
|
|
5
18
|
class ImageLoader extends Loader {
|
|
6
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new image loader.
|
|
22
|
+
*
|
|
23
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
24
|
+
*/
|
|
7
25
|
constructor( manager ) {
|
|
8
26
|
|
|
9
27
|
super( manager );
|
|
10
28
|
|
|
11
29
|
}
|
|
12
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Starts loading from the given URL and passes the loaded image
|
|
33
|
+
* to the `onLoad()` callback. The method also returns a new `Image` object which can
|
|
34
|
+
* directly be used for texture creation. If you do it this way, the texture
|
|
35
|
+
* may pop up in your scene once the respective loading process is finished.
|
|
36
|
+
*
|
|
37
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
38
|
+
* @param {function(Image)} onLoad - Executed when the loading process has been finished.
|
|
39
|
+
* @param {onProgressCallback} onProgress - Unsupported in this loader.
|
|
40
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
41
|
+
* @return {Image} The image.
|
|
42
|
+
*/
|
|
13
43
|
load( url, onLoad, onProgress, onError ) {
|
|
14
44
|
|
|
15
45
|
if ( this.path !== undefined ) url = this.path + url;
|