super-three 0.173.5 → 0.176.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
package/src/math/Vector4.js
CHANGED
|
@@ -1,18 +1,85 @@
|
|
|
1
1
|
import { clamp } from './MathUtils.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Class representing a 4D vector. A 4D vector is an ordered quadruplet of numbers
|
|
5
|
+
* (labeled x, y, z and w), which can be used to represent a number of things, such as:
|
|
6
|
+
*
|
|
7
|
+
* - A point in 4D space.
|
|
8
|
+
* - A direction and length in 4D space. In three.js the length will
|
|
9
|
+
* always be the Euclidean distance(straight-line distance) from `(0, 0, 0, 0)` to `(x, y, z, w)`
|
|
10
|
+
* and the direction is also measured from `(0, 0, 0, 0)` towards `(x, y, z, w)`.
|
|
11
|
+
* - Any arbitrary ordered quadruplet of numbers.
|
|
12
|
+
*
|
|
13
|
+
* There are other things a 4D vector can be used to represent, however these
|
|
14
|
+
* are the most common uses in *three.js*.
|
|
15
|
+
*
|
|
16
|
+
* Iterating through a vector instance will yield its components `(x, y, z, w)` in
|
|
17
|
+
* the corresponding order.
|
|
18
|
+
* ```js
|
|
19
|
+
* const a = new THREE.Vector4( 0, 1, 0, 0 );
|
|
20
|
+
*
|
|
21
|
+
* //no arguments; will be initialised to (0, 0, 0, 1)
|
|
22
|
+
* const b = new THREE.Vector4( );
|
|
23
|
+
*
|
|
24
|
+
* const d = a.dot( b );
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
3
27
|
class Vector4 {
|
|
4
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new 4D vector.
|
|
31
|
+
*
|
|
32
|
+
* @param {number} [x=0] - The x value of this vector.
|
|
33
|
+
* @param {number} [y=0] - The y value of this vector.
|
|
34
|
+
* @param {number} [z=0] - The z value of this vector.
|
|
35
|
+
* @param {number} [w=1] - The w value of this vector.
|
|
36
|
+
*/
|
|
5
37
|
constructor( x = 0, y = 0, z = 0, w = 1 ) {
|
|
6
38
|
|
|
39
|
+
/**
|
|
40
|
+
* This flag can be used for type testing.
|
|
41
|
+
*
|
|
42
|
+
* @type {boolean}
|
|
43
|
+
* @readonly
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
7
46
|
Vector4.prototype.isVector4 = true;
|
|
8
47
|
|
|
48
|
+
/**
|
|
49
|
+
* The x value of this vector.
|
|
50
|
+
*
|
|
51
|
+
* @type {number}
|
|
52
|
+
*/
|
|
9
53
|
this.x = x;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The y value of this vector.
|
|
57
|
+
*
|
|
58
|
+
* @type {number}
|
|
59
|
+
*/
|
|
10
60
|
this.y = y;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The z value of this vector.
|
|
64
|
+
*
|
|
65
|
+
* @type {number}
|
|
66
|
+
*/
|
|
11
67
|
this.z = z;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The w value of this vector.
|
|
71
|
+
*
|
|
72
|
+
* @type {number}
|
|
73
|
+
*/
|
|
12
74
|
this.w = w;
|
|
13
75
|
|
|
14
76
|
}
|
|
15
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Alias for {@link Vector4#z}.
|
|
80
|
+
*
|
|
81
|
+
* @type {number}
|
|
82
|
+
*/
|
|
16
83
|
get width() {
|
|
17
84
|
|
|
18
85
|
return this.z;
|
|
@@ -25,6 +92,11 @@ class Vector4 {
|
|
|
25
92
|
|
|
26
93
|
}
|
|
27
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Alias for {@link Vector4#w}.
|
|
97
|
+
*
|
|
98
|
+
* @type {number}
|
|
99
|
+
*/
|
|
28
100
|
get height() {
|
|
29
101
|
|
|
30
102
|
return this.w;
|
|
@@ -37,6 +109,15 @@ class Vector4 {
|
|
|
37
109
|
|
|
38
110
|
}
|
|
39
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Sets the vector components.
|
|
114
|
+
*
|
|
115
|
+
* @param {number} x - The value of the x component.
|
|
116
|
+
* @param {number} y - The value of the y component.
|
|
117
|
+
* @param {number} z - The value of the z component.
|
|
118
|
+
* @param {number} w - The value of the w component.
|
|
119
|
+
* @return {Vector4} A reference to this vector.
|
|
120
|
+
*/
|
|
40
121
|
set( x, y, z, w ) {
|
|
41
122
|
|
|
42
123
|
this.x = x;
|
|
@@ -48,6 +129,12 @@ class Vector4 {
|
|
|
48
129
|
|
|
49
130
|
}
|
|
50
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Sets the vector components to the same value.
|
|
134
|
+
*
|
|
135
|
+
* @param {number} scalar - The value to set for all vector components.
|
|
136
|
+
* @return {Vector4} A reference to this vector.
|
|
137
|
+
*/
|
|
51
138
|
setScalar( scalar ) {
|
|
52
139
|
|
|
53
140
|
this.x = scalar;
|
|
@@ -59,6 +146,12 @@ class Vector4 {
|
|
|
59
146
|
|
|
60
147
|
}
|
|
61
148
|
|
|
149
|
+
/**
|
|
150
|
+
* Sets the vector's x component to the given value
|
|
151
|
+
*
|
|
152
|
+
* @param {number} x - The value to set.
|
|
153
|
+
* @return {Vector4} A reference to this vector.
|
|
154
|
+
*/
|
|
62
155
|
setX( x ) {
|
|
63
156
|
|
|
64
157
|
this.x = x;
|
|
@@ -67,6 +160,12 @@ class Vector4 {
|
|
|
67
160
|
|
|
68
161
|
}
|
|
69
162
|
|
|
163
|
+
/**
|
|
164
|
+
* Sets the vector's y component to the given value
|
|
165
|
+
*
|
|
166
|
+
* @param {number} y - The value to set.
|
|
167
|
+
* @return {Vector4} A reference to this vector.
|
|
168
|
+
*/
|
|
70
169
|
setY( y ) {
|
|
71
170
|
|
|
72
171
|
this.y = y;
|
|
@@ -75,6 +174,12 @@ class Vector4 {
|
|
|
75
174
|
|
|
76
175
|
}
|
|
77
176
|
|
|
177
|
+
/**
|
|
178
|
+
* Sets the vector's z component to the given value
|
|
179
|
+
*
|
|
180
|
+
* @param {number} z - The value to set.
|
|
181
|
+
* @return {Vector4} A reference to this vector.
|
|
182
|
+
*/
|
|
78
183
|
setZ( z ) {
|
|
79
184
|
|
|
80
185
|
this.z = z;
|
|
@@ -83,6 +188,12 @@ class Vector4 {
|
|
|
83
188
|
|
|
84
189
|
}
|
|
85
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Sets the vector's w component to the given value
|
|
193
|
+
*
|
|
194
|
+
* @param {number} w - The value to set.
|
|
195
|
+
* @return {Vector4} A reference to this vector.
|
|
196
|
+
*/
|
|
86
197
|
setW( w ) {
|
|
87
198
|
|
|
88
199
|
this.w = w;
|
|
@@ -91,6 +202,14 @@ class Vector4 {
|
|
|
91
202
|
|
|
92
203
|
}
|
|
93
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Allows to set a vector component with an index.
|
|
207
|
+
*
|
|
208
|
+
* @param {number} index - The component index. `0` equals to x, `1` equals to y,
|
|
209
|
+
* `2` equals to z, `3` equals to w.
|
|
210
|
+
* @param {number} value - The value to set.
|
|
211
|
+
* @return {Vector4} A reference to this vector.
|
|
212
|
+
*/
|
|
94
213
|
setComponent( index, value ) {
|
|
95
214
|
|
|
96
215
|
switch ( index ) {
|
|
@@ -107,6 +226,13 @@ class Vector4 {
|
|
|
107
226
|
|
|
108
227
|
}
|
|
109
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Returns the value of the vector component which matches the given index.
|
|
231
|
+
*
|
|
232
|
+
* @param {number} index - The component index. `0` equals to x, `1` equals to y,
|
|
233
|
+
* `2` equals to z, `3` equals to w.
|
|
234
|
+
* @return {number} A vector component value.
|
|
235
|
+
*/
|
|
110
236
|
getComponent( index ) {
|
|
111
237
|
|
|
112
238
|
switch ( index ) {
|
|
@@ -121,12 +247,23 @@ class Vector4 {
|
|
|
121
247
|
|
|
122
248
|
}
|
|
123
249
|
|
|
250
|
+
/**
|
|
251
|
+
* Returns a new vector with copied values from this instance.
|
|
252
|
+
*
|
|
253
|
+
* @return {Vector4} A clone of this instance.
|
|
254
|
+
*/
|
|
124
255
|
clone() {
|
|
125
256
|
|
|
126
257
|
return new this.constructor( this.x, this.y, this.z, this.w );
|
|
127
258
|
|
|
128
259
|
}
|
|
129
260
|
|
|
261
|
+
/**
|
|
262
|
+
* Copies the values of the given vector to this instance.
|
|
263
|
+
*
|
|
264
|
+
* @param {Vector3|Vector4} v - The vector to copy.
|
|
265
|
+
* @return {Vector4} A reference to this vector.
|
|
266
|
+
*/
|
|
130
267
|
copy( v ) {
|
|
131
268
|
|
|
132
269
|
this.x = v.x;
|
|
@@ -138,6 +275,12 @@ class Vector4 {
|
|
|
138
275
|
|
|
139
276
|
}
|
|
140
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Adds the given vector to this instance.
|
|
280
|
+
*
|
|
281
|
+
* @param {Vector4} v - The vector to add.
|
|
282
|
+
* @return {Vector4} A reference to this vector.
|
|
283
|
+
*/
|
|
141
284
|
add( v ) {
|
|
142
285
|
|
|
143
286
|
this.x += v.x;
|
|
@@ -149,6 +292,12 @@ class Vector4 {
|
|
|
149
292
|
|
|
150
293
|
}
|
|
151
294
|
|
|
295
|
+
/**
|
|
296
|
+
* Adds the given scalar value to all components of this instance.
|
|
297
|
+
*
|
|
298
|
+
* @param {number} s - The scalar to add.
|
|
299
|
+
* @return {Vector4} A reference to this vector.
|
|
300
|
+
*/
|
|
152
301
|
addScalar( s ) {
|
|
153
302
|
|
|
154
303
|
this.x += s;
|
|
@@ -160,6 +309,13 @@ class Vector4 {
|
|
|
160
309
|
|
|
161
310
|
}
|
|
162
311
|
|
|
312
|
+
/**
|
|
313
|
+
* Adds the given vectors and stores the result in this instance.
|
|
314
|
+
*
|
|
315
|
+
* @param {Vector4} a - The first vector.
|
|
316
|
+
* @param {Vector4} b - The second vector.
|
|
317
|
+
* @return {Vector4} A reference to this vector.
|
|
318
|
+
*/
|
|
163
319
|
addVectors( a, b ) {
|
|
164
320
|
|
|
165
321
|
this.x = a.x + b.x;
|
|
@@ -171,6 +327,13 @@ class Vector4 {
|
|
|
171
327
|
|
|
172
328
|
}
|
|
173
329
|
|
|
330
|
+
/**
|
|
331
|
+
* Adds the given vector scaled by the given factor to this instance.
|
|
332
|
+
*
|
|
333
|
+
* @param {Vector4} v - The vector.
|
|
334
|
+
* @param {number} s - The factor that scales `v`.
|
|
335
|
+
* @return {Vector4} A reference to this vector.
|
|
336
|
+
*/
|
|
174
337
|
addScaledVector( v, s ) {
|
|
175
338
|
|
|
176
339
|
this.x += v.x * s;
|
|
@@ -182,6 +345,12 @@ class Vector4 {
|
|
|
182
345
|
|
|
183
346
|
}
|
|
184
347
|
|
|
348
|
+
/**
|
|
349
|
+
* Subtracts the given vector from this instance.
|
|
350
|
+
*
|
|
351
|
+
* @param {Vector4} v - The vector to subtract.
|
|
352
|
+
* @return {Vector4} A reference to this vector.
|
|
353
|
+
*/
|
|
185
354
|
sub( v ) {
|
|
186
355
|
|
|
187
356
|
this.x -= v.x;
|
|
@@ -193,6 +362,12 @@ class Vector4 {
|
|
|
193
362
|
|
|
194
363
|
}
|
|
195
364
|
|
|
365
|
+
/**
|
|
366
|
+
* Subtracts the given scalar value from all components of this instance.
|
|
367
|
+
*
|
|
368
|
+
* @param {number} s - The scalar to subtract.
|
|
369
|
+
* @return {Vector4} A reference to this vector.
|
|
370
|
+
*/
|
|
196
371
|
subScalar( s ) {
|
|
197
372
|
|
|
198
373
|
this.x -= s;
|
|
@@ -204,6 +379,13 @@ class Vector4 {
|
|
|
204
379
|
|
|
205
380
|
}
|
|
206
381
|
|
|
382
|
+
/**
|
|
383
|
+
* Subtracts the given vectors and stores the result in this instance.
|
|
384
|
+
*
|
|
385
|
+
* @param {Vector4} a - The first vector.
|
|
386
|
+
* @param {Vector4} b - The second vector.
|
|
387
|
+
* @return {Vector4} A reference to this vector.
|
|
388
|
+
*/
|
|
207
389
|
subVectors( a, b ) {
|
|
208
390
|
|
|
209
391
|
this.x = a.x - b.x;
|
|
@@ -215,6 +397,12 @@ class Vector4 {
|
|
|
215
397
|
|
|
216
398
|
}
|
|
217
399
|
|
|
400
|
+
/**
|
|
401
|
+
* Multiplies the given vector with this instance.
|
|
402
|
+
*
|
|
403
|
+
* @param {Vector4} v - The vector to multiply.
|
|
404
|
+
* @return {Vector4} A reference to this vector.
|
|
405
|
+
*/
|
|
218
406
|
multiply( v ) {
|
|
219
407
|
|
|
220
408
|
this.x *= v.x;
|
|
@@ -226,6 +414,12 @@ class Vector4 {
|
|
|
226
414
|
|
|
227
415
|
}
|
|
228
416
|
|
|
417
|
+
/**
|
|
418
|
+
* Multiplies the given scalar value with all components of this instance.
|
|
419
|
+
*
|
|
420
|
+
* @param {number} scalar - The scalar to multiply.
|
|
421
|
+
* @return {Vector4} A reference to this vector.
|
|
422
|
+
*/
|
|
229
423
|
multiplyScalar( scalar ) {
|
|
230
424
|
|
|
231
425
|
this.x *= scalar;
|
|
@@ -237,6 +431,12 @@ class Vector4 {
|
|
|
237
431
|
|
|
238
432
|
}
|
|
239
433
|
|
|
434
|
+
/**
|
|
435
|
+
* Multiplies this vector with the given 4x4 matrix.
|
|
436
|
+
*
|
|
437
|
+
* @param {Matrix4} m - The 4x4 matrix.
|
|
438
|
+
* @return {Vector4} A reference to this vector.
|
|
439
|
+
*/
|
|
240
440
|
applyMatrix4( m ) {
|
|
241
441
|
|
|
242
442
|
const x = this.x, y = this.y, z = this.z, w = this.w;
|
|
@@ -251,6 +451,12 @@ class Vector4 {
|
|
|
251
451
|
|
|
252
452
|
}
|
|
253
453
|
|
|
454
|
+
/**
|
|
455
|
+
* Divides this instance by the given vector.
|
|
456
|
+
*
|
|
457
|
+
* @param {Vector4} v - The vector to divide.
|
|
458
|
+
* @return {Vector4} A reference to this vector.
|
|
459
|
+
*/
|
|
254
460
|
divide( v ) {
|
|
255
461
|
|
|
256
462
|
this.x /= v.x;
|
|
@@ -262,12 +468,25 @@ class Vector4 {
|
|
|
262
468
|
|
|
263
469
|
}
|
|
264
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Divides this vector by the given scalar.
|
|
473
|
+
*
|
|
474
|
+
* @param {number} scalar - The scalar to divide.
|
|
475
|
+
* @return {Vector4} A reference to this vector.
|
|
476
|
+
*/
|
|
265
477
|
divideScalar( scalar ) {
|
|
266
478
|
|
|
267
479
|
return this.multiplyScalar( 1 / scalar );
|
|
268
480
|
|
|
269
481
|
}
|
|
270
482
|
|
|
483
|
+
/**
|
|
484
|
+
* Sets the x, y and z components of this
|
|
485
|
+
* vector to the quaternion's axis and w to the angle.
|
|
486
|
+
*
|
|
487
|
+
* @param {Quaternion} q - The Quaternion to set.
|
|
488
|
+
* @return {Vector4} A reference to this vector.
|
|
489
|
+
*/
|
|
271
490
|
setAxisAngleFromQuaternion( q ) {
|
|
272
491
|
|
|
273
492
|
// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm
|
|
@@ -296,6 +515,13 @@ class Vector4 {
|
|
|
296
515
|
|
|
297
516
|
}
|
|
298
517
|
|
|
518
|
+
/**
|
|
519
|
+
* Sets the x, y and z components of this
|
|
520
|
+
* vector to the axis of rotation and w to the angle.
|
|
521
|
+
*
|
|
522
|
+
* @param {Matrix4} m - A 4x4 matrix of which the upper left 3x3 matrix is a pure rotation matrix.
|
|
523
|
+
* @return {Vector4} A reference to this vector.
|
|
524
|
+
*/
|
|
299
525
|
setAxisAngleFromRotationMatrix( m ) {
|
|
300
526
|
|
|
301
527
|
// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm
|
|
@@ -426,6 +652,13 @@ class Vector4 {
|
|
|
426
652
|
|
|
427
653
|
}
|
|
428
654
|
|
|
655
|
+
/**
|
|
656
|
+
* Sets the vector components to the position elements of the
|
|
657
|
+
* given transformation matrix.
|
|
658
|
+
*
|
|
659
|
+
* @param {Matrix4} m - The 4x4 matrix.
|
|
660
|
+
* @return {Vector4} A reference to this vector.
|
|
661
|
+
*/
|
|
429
662
|
setFromMatrixPosition( m ) {
|
|
430
663
|
|
|
431
664
|
const e = m.elements;
|
|
@@ -439,6 +672,13 @@ class Vector4 {
|
|
|
439
672
|
|
|
440
673
|
}
|
|
441
674
|
|
|
675
|
+
/**
|
|
676
|
+
* If this vector's x, y, z or w value is greater than the given vector's x, y, z or w
|
|
677
|
+
* value, replace that value with the corresponding min value.
|
|
678
|
+
*
|
|
679
|
+
* @param {Vector4} v - The vector.
|
|
680
|
+
* @return {Vector4} A reference to this vector.
|
|
681
|
+
*/
|
|
442
682
|
min( v ) {
|
|
443
683
|
|
|
444
684
|
this.x = Math.min( this.x, v.x );
|
|
@@ -450,6 +690,13 @@ class Vector4 {
|
|
|
450
690
|
|
|
451
691
|
}
|
|
452
692
|
|
|
693
|
+
/**
|
|
694
|
+
* If this vector's x, y, z or w value is less than the given vector's x, y, z or w
|
|
695
|
+
* value, replace that value with the corresponding max value.
|
|
696
|
+
*
|
|
697
|
+
* @param {Vector4} v - The vector.
|
|
698
|
+
* @return {Vector4} A reference to this vector.
|
|
699
|
+
*/
|
|
453
700
|
max( v ) {
|
|
454
701
|
|
|
455
702
|
this.x = Math.max( this.x, v.x );
|
|
@@ -461,6 +708,16 @@ class Vector4 {
|
|
|
461
708
|
|
|
462
709
|
}
|
|
463
710
|
|
|
711
|
+
/**
|
|
712
|
+
* If this vector's x, y, z or w value is greater than the max vector's x, y, z or w
|
|
713
|
+
* value, it is replaced by the corresponding value.
|
|
714
|
+
* If this vector's x, y, z or w value is less than the min vector's x, y, z or w value,
|
|
715
|
+
* it is replaced by the corresponding value.
|
|
716
|
+
*
|
|
717
|
+
* @param {Vector4} min - The minimum x, y and z values.
|
|
718
|
+
* @param {Vector4} max - The maximum x, y and z values in the desired range.
|
|
719
|
+
* @return {Vector4} A reference to this vector.
|
|
720
|
+
*/
|
|
464
721
|
clamp( min, max ) {
|
|
465
722
|
|
|
466
723
|
// assumes min < max, componentwise
|
|
@@ -474,6 +731,16 @@ class Vector4 {
|
|
|
474
731
|
|
|
475
732
|
}
|
|
476
733
|
|
|
734
|
+
/**
|
|
735
|
+
* If this vector's x, y, z or w values are greater than the max value, they are
|
|
736
|
+
* replaced by the max value.
|
|
737
|
+
* If this vector's x, y, z or w values are less than the min value, they are
|
|
738
|
+
* replaced by the min value.
|
|
739
|
+
*
|
|
740
|
+
* @param {number} minVal - The minimum value the components will be clamped to.
|
|
741
|
+
* @param {number} maxVal - The maximum value the components will be clamped to.
|
|
742
|
+
* @return {Vector4} A reference to this vector.
|
|
743
|
+
*/
|
|
477
744
|
clampScalar( minVal, maxVal ) {
|
|
478
745
|
|
|
479
746
|
this.x = clamp( this.x, minVal, maxVal );
|
|
@@ -485,6 +752,16 @@ class Vector4 {
|
|
|
485
752
|
|
|
486
753
|
}
|
|
487
754
|
|
|
755
|
+
/**
|
|
756
|
+
* If this vector's length is greater than the max value, it is replaced by
|
|
757
|
+
* the max value.
|
|
758
|
+
* If this vector's length is less than the min value, it is replaced by the
|
|
759
|
+
* min value.
|
|
760
|
+
*
|
|
761
|
+
* @param {number} min - The minimum value the vector length will be clamped to.
|
|
762
|
+
* @param {number} max - The maximum value the vector length will be clamped to.
|
|
763
|
+
* @return {Vector4} A reference to this vector.
|
|
764
|
+
*/
|
|
488
765
|
clampLength( min, max ) {
|
|
489
766
|
|
|
490
767
|
const length = this.length();
|
|
@@ -493,6 +770,11 @@ class Vector4 {
|
|
|
493
770
|
|
|
494
771
|
}
|
|
495
772
|
|
|
773
|
+
/**
|
|
774
|
+
* The components of this vector are rounded down to the nearest integer value.
|
|
775
|
+
*
|
|
776
|
+
* @return {Vector4} A reference to this vector.
|
|
777
|
+
*/
|
|
496
778
|
floor() {
|
|
497
779
|
|
|
498
780
|
this.x = Math.floor( this.x );
|
|
@@ -504,6 +786,11 @@ class Vector4 {
|
|
|
504
786
|
|
|
505
787
|
}
|
|
506
788
|
|
|
789
|
+
/**
|
|
790
|
+
* The components of this vector are rounded up to the nearest integer value.
|
|
791
|
+
*
|
|
792
|
+
* @return {Vector4} A reference to this vector.
|
|
793
|
+
*/
|
|
507
794
|
ceil() {
|
|
508
795
|
|
|
509
796
|
this.x = Math.ceil( this.x );
|
|
@@ -515,6 +802,11 @@ class Vector4 {
|
|
|
515
802
|
|
|
516
803
|
}
|
|
517
804
|
|
|
805
|
+
/**
|
|
806
|
+
* The components of this vector are rounded to the nearest integer value
|
|
807
|
+
*
|
|
808
|
+
* @return {Vector4} A reference to this vector.
|
|
809
|
+
*/
|
|
518
810
|
round() {
|
|
519
811
|
|
|
520
812
|
this.x = Math.round( this.x );
|
|
@@ -526,6 +818,12 @@ class Vector4 {
|
|
|
526
818
|
|
|
527
819
|
}
|
|
528
820
|
|
|
821
|
+
/**
|
|
822
|
+
* The components of this vector are rounded towards zero (up if negative,
|
|
823
|
+
* down if positive) to an integer value.
|
|
824
|
+
*
|
|
825
|
+
* @return {Vector4} A reference to this vector.
|
|
826
|
+
*/
|
|
529
827
|
roundToZero() {
|
|
530
828
|
|
|
531
829
|
this.x = Math.trunc( this.x );
|
|
@@ -537,6 +835,11 @@ class Vector4 {
|
|
|
537
835
|
|
|
538
836
|
}
|
|
539
837
|
|
|
838
|
+
/**
|
|
839
|
+
* Inverts this vector - i.e. sets x = -x, y = -y, z = -z, w = -w.
|
|
840
|
+
*
|
|
841
|
+
* @return {Vector4} A reference to this vector.
|
|
842
|
+
*/
|
|
540
843
|
negate() {
|
|
541
844
|
|
|
542
845
|
this.x = - this.x;
|
|
@@ -548,42 +851,87 @@ class Vector4 {
|
|
|
548
851
|
|
|
549
852
|
}
|
|
550
853
|
|
|
854
|
+
/**
|
|
855
|
+
* Calculates the dot product of the given vector with this instance.
|
|
856
|
+
*
|
|
857
|
+
* @param {Vector4} v - The vector to compute the dot product with.
|
|
858
|
+
* @return {number} The result of the dot product.
|
|
859
|
+
*/
|
|
551
860
|
dot( v ) {
|
|
552
861
|
|
|
553
862
|
return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;
|
|
554
863
|
|
|
555
864
|
}
|
|
556
865
|
|
|
866
|
+
/**
|
|
867
|
+
* Computes the square of the Euclidean length (straight-line length) from
|
|
868
|
+
* (0, 0, 0, 0) to (x, y, z, w). If you are comparing the lengths of vectors, you should
|
|
869
|
+
* compare the length squared instead as it is slightly more efficient to calculate.
|
|
870
|
+
*
|
|
871
|
+
* @return {number} The square length of this vector.
|
|
872
|
+
*/
|
|
557
873
|
lengthSq() {
|
|
558
874
|
|
|
559
875
|
return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;
|
|
560
876
|
|
|
561
877
|
}
|
|
562
878
|
|
|
879
|
+
/**
|
|
880
|
+
* Computes the Euclidean length (straight-line length) from (0, 0, 0, 0) to (x, y, z, w).
|
|
881
|
+
*
|
|
882
|
+
* @return {number} The length of this vector.
|
|
883
|
+
*/
|
|
563
884
|
length() {
|
|
564
885
|
|
|
565
886
|
return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );
|
|
566
887
|
|
|
567
888
|
}
|
|
568
889
|
|
|
890
|
+
/**
|
|
891
|
+
* Computes the Manhattan length of this vector.
|
|
892
|
+
*
|
|
893
|
+
* @return {number} The length of this vector.
|
|
894
|
+
*/
|
|
569
895
|
manhattanLength() {
|
|
570
896
|
|
|
571
897
|
return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );
|
|
572
898
|
|
|
573
899
|
}
|
|
574
900
|
|
|
901
|
+
/**
|
|
902
|
+
* Converts this vector to a unit vector - that is, sets it equal to a vector
|
|
903
|
+
* with the same direction as this one, but with a vector length of `1`.
|
|
904
|
+
*
|
|
905
|
+
* @return {Vector4} A reference to this vector.
|
|
906
|
+
*/
|
|
575
907
|
normalize() {
|
|
576
908
|
|
|
577
909
|
return this.divideScalar( this.length() || 1 );
|
|
578
910
|
|
|
579
911
|
}
|
|
580
912
|
|
|
913
|
+
/**
|
|
914
|
+
* Sets this vector to a vector with the same direction as this one, but
|
|
915
|
+
* with the specified length.
|
|
916
|
+
*
|
|
917
|
+
* @param {number} length - The new length of this vector.
|
|
918
|
+
* @return {Vector4} A reference to this vector.
|
|
919
|
+
*/
|
|
581
920
|
setLength( length ) {
|
|
582
921
|
|
|
583
922
|
return this.normalize().multiplyScalar( length );
|
|
584
923
|
|
|
585
924
|
}
|
|
586
925
|
|
|
926
|
+
/**
|
|
927
|
+
* Linearly interpolates between the given vector and this instance, where
|
|
928
|
+
* alpha is the percent distance along the line - alpha = 0 will be this
|
|
929
|
+
* vector, and alpha = 1 will be the given one.
|
|
930
|
+
*
|
|
931
|
+
* @param {Vector4} v - The vector to interpolate towards.
|
|
932
|
+
* @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.
|
|
933
|
+
* @return {Vector4} A reference to this vector.
|
|
934
|
+
*/
|
|
587
935
|
lerp( v, alpha ) {
|
|
588
936
|
|
|
589
937
|
this.x += ( v.x - this.x ) * alpha;
|
|
@@ -595,6 +943,16 @@ class Vector4 {
|
|
|
595
943
|
|
|
596
944
|
}
|
|
597
945
|
|
|
946
|
+
/**
|
|
947
|
+
* Linearly interpolates between the given vectors, where alpha is the percent
|
|
948
|
+
* distance along the line - alpha = 0 will be first vector, and alpha = 1 will
|
|
949
|
+
* be the second one. The result is stored in this instance.
|
|
950
|
+
*
|
|
951
|
+
* @param {Vector4} v1 - The first vector.
|
|
952
|
+
* @param {Vector4} v2 - The second vector.
|
|
953
|
+
* @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.
|
|
954
|
+
* @return {Vector4} A reference to this vector.
|
|
955
|
+
*/
|
|
598
956
|
lerpVectors( v1, v2, alpha ) {
|
|
599
957
|
|
|
600
958
|
this.x = v1.x + ( v2.x - v1.x ) * alpha;
|
|
@@ -606,12 +964,26 @@ class Vector4 {
|
|
|
606
964
|
|
|
607
965
|
}
|
|
608
966
|
|
|
967
|
+
/**
|
|
968
|
+
* Returns `true` if this vector is equal with the given one.
|
|
969
|
+
*
|
|
970
|
+
* @param {Vector4} v - The vector to test for equality.
|
|
971
|
+
* @return {boolean} Whether this vector is equal with the given one.
|
|
972
|
+
*/
|
|
609
973
|
equals( v ) {
|
|
610
974
|
|
|
611
975
|
return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );
|
|
612
976
|
|
|
613
977
|
}
|
|
614
978
|
|
|
979
|
+
/**
|
|
980
|
+
* Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`,
|
|
981
|
+
* z value to be `array[ offset + 2 ]`, w value to be `array[ offset + 3 ]`.
|
|
982
|
+
*
|
|
983
|
+
* @param {Array<number>} array - An array holding the vector component values.
|
|
984
|
+
* @param {number} [offset=0] - The offset into the array.
|
|
985
|
+
* @return {Vector4} A reference to this vector.
|
|
986
|
+
*/
|
|
615
987
|
fromArray( array, offset = 0 ) {
|
|
616
988
|
|
|
617
989
|
this.x = array[ offset ];
|
|
@@ -623,6 +995,14 @@ class Vector4 {
|
|
|
623
995
|
|
|
624
996
|
}
|
|
625
997
|
|
|
998
|
+
/**
|
|
999
|
+
* Writes the components of this vector to the given array. If no array is provided,
|
|
1000
|
+
* the method returns a new instance.
|
|
1001
|
+
*
|
|
1002
|
+
* @param {Array<number>} [array=[]] - The target array holding the vector components.
|
|
1003
|
+
* @param {number} [offset=0] - Index of the first element in the array.
|
|
1004
|
+
* @return {Array<number>} The vector components.
|
|
1005
|
+
*/
|
|
626
1006
|
toArray( array = [], offset = 0 ) {
|
|
627
1007
|
|
|
628
1008
|
array[ offset ] = this.x;
|
|
@@ -634,6 +1014,13 @@ class Vector4 {
|
|
|
634
1014
|
|
|
635
1015
|
}
|
|
636
1016
|
|
|
1017
|
+
/**
|
|
1018
|
+
* Sets the components of this vector from the given buffer attribute.
|
|
1019
|
+
*
|
|
1020
|
+
* @param {BufferAttribute} attribute - The buffer attribute holding vector data.
|
|
1021
|
+
* @param {number} index - The index into the attribute.
|
|
1022
|
+
* @return {Vector4} A reference to this vector.
|
|
1023
|
+
*/
|
|
637
1024
|
fromBufferAttribute( attribute, index ) {
|
|
638
1025
|
|
|
639
1026
|
this.x = attribute.getX( index );
|
|
@@ -645,6 +1032,12 @@ class Vector4 {
|
|
|
645
1032
|
|
|
646
1033
|
}
|
|
647
1034
|
|
|
1035
|
+
/**
|
|
1036
|
+
* Sets each component of this vector to a pseudo-random value between `0` and
|
|
1037
|
+
* `1`, excluding `1`.
|
|
1038
|
+
*
|
|
1039
|
+
* @return {Vector4} A reference to this vector.
|
|
1040
|
+
*/
|
|
648
1041
|
random() {
|
|
649
1042
|
|
|
650
1043
|
this.x = Math.random();
|