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
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
import { Vector3 } from '../../math/Vector3.js';
|
|
2
2
|
import { Curve } from '../core/Curve.js';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
* Centripetal CatmullRom Curve - which is useful for avoiding
|
|
6
|
-
* cusps and self-intersections in non-uniform catmull rom curves.
|
|
7
|
-
* http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf
|
|
8
|
-
*
|
|
9
|
-
* curve.type accepts centripetal(default), chordal and catmullrom
|
|
10
|
-
* curve.tension is used for catmullrom which defaults to 0.5
|
|
11
|
-
*/
|
|
12
|
-
|
|
4
|
+
function CubicPoly() {
|
|
13
5
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Centripetal CatmullRom Curve - which is useful for avoiding
|
|
8
|
+
* cusps and self-intersections in non-uniform catmull rom curves.
|
|
9
|
+
* http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf
|
|
10
|
+
*
|
|
11
|
+
* curve.type accepts centripetal(default), chordal and catmullrom
|
|
12
|
+
* curve.tension is used for catmullrom which defaults to 0.5
|
|
13
|
+
*/
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
/*
|
|
16
|
+
Based on an optimized c++ solution in
|
|
17
|
+
- http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/
|
|
18
|
+
- http://ideone.com/NoEbVM
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
This CubicPoly class could be used for reusing some variables and calculations,
|
|
21
|
+
but for three.js curve use, it could be possible inlined and flatten into a single function call
|
|
22
|
+
which can be placed in CurveUtils.
|
|
23
|
+
*/
|
|
25
24
|
|
|
26
25
|
let c0 = 0, c1 = 0, c2 = 0, c3 = 0;
|
|
27
26
|
|
|
@@ -83,23 +82,95 @@ const px = /*@__PURE__*/ new CubicPoly();
|
|
|
83
82
|
const py = /*@__PURE__*/ new CubicPoly();
|
|
84
83
|
const pz = /*@__PURE__*/ new CubicPoly();
|
|
85
84
|
|
|
85
|
+
/**
|
|
86
|
+
* A curve representing a Catmull-Rom spline.
|
|
87
|
+
*
|
|
88
|
+
* ```js
|
|
89
|
+
* //Create a closed wavey loop
|
|
90
|
+
* const curve = new THREE.CatmullRomCurve3( [
|
|
91
|
+
* new THREE.Vector3( -10, 0, 10 ),
|
|
92
|
+
* new THREE.Vector3( -5, 5, 5 ),
|
|
93
|
+
* new THREE.Vector3( 0, 0, 0 ),
|
|
94
|
+
* new THREE.Vector3( 5, -5, 5 ),
|
|
95
|
+
* new THREE.Vector3( 10, 0, 10 )
|
|
96
|
+
* ] );
|
|
97
|
+
*
|
|
98
|
+
* const points = curve.getPoints( 50 );
|
|
99
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
100
|
+
*
|
|
101
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
|
|
102
|
+
*
|
|
103
|
+
* // Create the final object to add to the scene
|
|
104
|
+
* const curveObject = new THREE.Line( geometry, material );
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @augments Curve
|
|
108
|
+
*/
|
|
86
109
|
class CatmullRomCurve3 extends Curve {
|
|
87
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Constructs a new Catmull-Rom curve.
|
|
113
|
+
*
|
|
114
|
+
* @param {Array<Vector3>} [points] - An array of 3D points defining the curve.
|
|
115
|
+
* @param {boolean} [closed=false] - Whether the curve is closed or not.
|
|
116
|
+
* @param {('centripetal'|'chordal'|'catmullrom')} [curveType='centripetal'] - The curve type.
|
|
117
|
+
* @param {number} [tension=0.5] - Tension of the curve.
|
|
118
|
+
*/
|
|
88
119
|
constructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {
|
|
89
120
|
|
|
90
121
|
super();
|
|
91
122
|
|
|
123
|
+
/**
|
|
124
|
+
* This flag can be used for type testing.
|
|
125
|
+
*
|
|
126
|
+
* @type {boolean}
|
|
127
|
+
* @readonly
|
|
128
|
+
* @default true
|
|
129
|
+
*/
|
|
92
130
|
this.isCatmullRomCurve3 = true;
|
|
93
131
|
|
|
94
132
|
this.type = 'CatmullRomCurve3';
|
|
95
133
|
|
|
134
|
+
/**
|
|
135
|
+
* An array of 3D points defining the curve.
|
|
136
|
+
*
|
|
137
|
+
* @type {Array<Vector3>}
|
|
138
|
+
*/
|
|
96
139
|
this.points = points;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Whether the curve is closed or not.
|
|
143
|
+
*
|
|
144
|
+
* @type {boolean}
|
|
145
|
+
* @default false
|
|
146
|
+
*/
|
|
97
147
|
this.closed = closed;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* The curve type.
|
|
151
|
+
*
|
|
152
|
+
* @type {('centripetal'|'chordal'|'catmullrom')}
|
|
153
|
+
* @default 'centripetal'
|
|
154
|
+
*/
|
|
98
155
|
this.curveType = curveType;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Tension of the curve.
|
|
159
|
+
*
|
|
160
|
+
* @type {number}
|
|
161
|
+
* @default 0.5
|
|
162
|
+
*/
|
|
99
163
|
this.tension = tension;
|
|
100
164
|
|
|
101
165
|
}
|
|
102
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Returns a point on the curve.
|
|
169
|
+
*
|
|
170
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
171
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
172
|
+
* @return {Vector3} The position on the curve.
|
|
173
|
+
*/
|
|
103
174
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
104
175
|
|
|
105
176
|
const point = optionalTarget;
|
|
@@ -2,23 +2,90 @@ import { Curve } from '../core/Curve.js';
|
|
|
2
2
|
import { CubicBezier } from '../core/Interpolations.js';
|
|
3
3
|
import { Vector2 } from '../../math/Vector2.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A curve representing a 2D Cubic Bezier curve.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const curve = new THREE.CubicBezierCurve(
|
|
10
|
+
* new THREE.Vector2( - 0, 0 ),
|
|
11
|
+
* new THREE.Vector2( - 5, 15 ),
|
|
12
|
+
* new THREE.Vector2( 20, 15 ),
|
|
13
|
+
* new THREE.Vector2( 10, 0 )
|
|
14
|
+
* );
|
|
15
|
+
*
|
|
16
|
+
* const points = curve.getPoints( 50 );
|
|
17
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
18
|
+
*
|
|
19
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
|
|
20
|
+
*
|
|
21
|
+
* // Create the final object to add to the scene
|
|
22
|
+
* const curveObject = new THREE.Line( geometry, material );
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @augments Curve
|
|
26
|
+
*/
|
|
5
27
|
class CubicBezierCurve extends Curve {
|
|
6
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new Cubic Bezier curve.
|
|
31
|
+
*
|
|
32
|
+
* @param {Vector2} [v0] - The start point.
|
|
33
|
+
* @param {Vector2} [v1] - The first control point.
|
|
34
|
+
* @param {Vector2} [v2] - The second control point.
|
|
35
|
+
* @param {Vector2} [v3] - The end point.
|
|
36
|
+
*/
|
|
7
37
|
constructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {
|
|
8
38
|
|
|
9
39
|
super();
|
|
10
40
|
|
|
41
|
+
/**
|
|
42
|
+
* This flag can be used for type testing.
|
|
43
|
+
*
|
|
44
|
+
* @type {boolean}
|
|
45
|
+
* @readonly
|
|
46
|
+
* @default true
|
|
47
|
+
*/
|
|
11
48
|
this.isCubicBezierCurve = true;
|
|
12
49
|
|
|
13
50
|
this.type = 'CubicBezierCurve';
|
|
14
51
|
|
|
52
|
+
/**
|
|
53
|
+
* The start point.
|
|
54
|
+
*
|
|
55
|
+
* @type {Vector2}
|
|
56
|
+
*/
|
|
15
57
|
this.v0 = v0;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The first control point.
|
|
61
|
+
*
|
|
62
|
+
* @type {Vector2}
|
|
63
|
+
*/
|
|
16
64
|
this.v1 = v1;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The second control point.
|
|
68
|
+
*
|
|
69
|
+
* @type {Vector2}
|
|
70
|
+
*/
|
|
17
71
|
this.v2 = v2;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* The end point.
|
|
75
|
+
*
|
|
76
|
+
* @type {Vector2}
|
|
77
|
+
*/
|
|
18
78
|
this.v3 = v3;
|
|
19
79
|
|
|
20
80
|
}
|
|
21
81
|
|
|
82
|
+
/**
|
|
83
|
+
* Returns a point on the curve.
|
|
84
|
+
*
|
|
85
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
86
|
+
* @param {Vector2} [optionalTarget] - The optional target vector the result is written to.
|
|
87
|
+
* @return {Vector2} The position on the curve.
|
|
88
|
+
*/
|
|
22
89
|
getPoint( t, optionalTarget = new Vector2() ) {
|
|
23
90
|
|
|
24
91
|
const point = optionalTarget;
|
|
@@ -2,23 +2,73 @@ import { Curve } from '../core/Curve.js';
|
|
|
2
2
|
import { CubicBezier } from '../core/Interpolations.js';
|
|
3
3
|
import { Vector3 } from '../../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A curve representing a 3D Cubic Bezier curve.
|
|
7
|
+
*
|
|
8
|
+
* @augments Curve
|
|
9
|
+
*/
|
|
5
10
|
class CubicBezierCurve3 extends Curve {
|
|
6
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new Cubic Bezier curve.
|
|
14
|
+
*
|
|
15
|
+
* @param {Vector3} [v0] - The start point.
|
|
16
|
+
* @param {Vector3} [v1] - The first control point.
|
|
17
|
+
* @param {Vector3} [v2] - The second control point.
|
|
18
|
+
* @param {Vector3} [v3] - The end point.
|
|
19
|
+
*/
|
|
7
20
|
constructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {
|
|
8
21
|
|
|
9
22
|
super();
|
|
10
23
|
|
|
24
|
+
/**
|
|
25
|
+
* This flag can be used for type testing.
|
|
26
|
+
*
|
|
27
|
+
* @type {boolean}
|
|
28
|
+
* @readonly
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
11
31
|
this.isCubicBezierCurve3 = true;
|
|
12
32
|
|
|
13
33
|
this.type = 'CubicBezierCurve3';
|
|
14
34
|
|
|
35
|
+
/**
|
|
36
|
+
* The start point.
|
|
37
|
+
*
|
|
38
|
+
* @type {Vector3}
|
|
39
|
+
*/
|
|
15
40
|
this.v0 = v0;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The first control point.
|
|
44
|
+
*
|
|
45
|
+
* @type {Vector3}
|
|
46
|
+
*/
|
|
16
47
|
this.v1 = v1;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The second control point.
|
|
51
|
+
*
|
|
52
|
+
* @type {Vector3}
|
|
53
|
+
*/
|
|
17
54
|
this.v2 = v2;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The end point.
|
|
58
|
+
*
|
|
59
|
+
* @type {Vector3}
|
|
60
|
+
*/
|
|
18
61
|
this.v3 = v3;
|
|
19
62
|
|
|
20
63
|
}
|
|
21
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Returns a point on the curve.
|
|
67
|
+
*
|
|
68
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
69
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
70
|
+
* @return {Vector3} The position on the curve.
|
|
71
|
+
*/
|
|
22
72
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
23
73
|
|
|
24
74
|
const point = optionalTarget;
|
|
@@ -1,31 +1,133 @@
|
|
|
1
1
|
import { Curve } from '../core/Curve.js';
|
|
2
2
|
import { Vector2 } from '../../math/Vector2.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A curve representing an ellipse.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const curve = new THREE.EllipseCurve(
|
|
9
|
+
* 0, 0,
|
|
10
|
+
* 10, 10,
|
|
11
|
+
* 0, 2 * Math.PI,
|
|
12
|
+
* false,
|
|
13
|
+
* 0
|
|
14
|
+
* );
|
|
15
|
+
*
|
|
16
|
+
* const points = curve.getPoints( 50 );
|
|
17
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
18
|
+
*
|
|
19
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
|
|
20
|
+
*
|
|
21
|
+
* // Create the final object to add to the scene
|
|
22
|
+
* const ellipse = new THREE.Line( geometry, material );
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @augments Curve
|
|
26
|
+
*/
|
|
4
27
|
class EllipseCurve extends Curve {
|
|
5
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new ellipse curve.
|
|
31
|
+
*
|
|
32
|
+
* @param {number} [aX=0] - The X center of the ellipse.
|
|
33
|
+
* @param {number} [aY=0] - The Y center of the ellipse.
|
|
34
|
+
* @param {number} [xRadius=1] - The radius of the ellipse in the x direction.
|
|
35
|
+
* @param {number} [yRadius=1] - The radius of the ellipse in the y direction.
|
|
36
|
+
* @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.
|
|
37
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.
|
|
38
|
+
* @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.
|
|
39
|
+
* @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
40
|
+
*/
|
|
6
41
|
constructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {
|
|
7
42
|
|
|
8
43
|
super();
|
|
9
44
|
|
|
45
|
+
/**
|
|
46
|
+
* This flag can be used for type testing.
|
|
47
|
+
*
|
|
48
|
+
* @type {boolean}
|
|
49
|
+
* @readonly
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
10
52
|
this.isEllipseCurve = true;
|
|
11
53
|
|
|
12
54
|
this.type = 'EllipseCurve';
|
|
13
55
|
|
|
56
|
+
/**
|
|
57
|
+
* The X center of the ellipse.
|
|
58
|
+
*
|
|
59
|
+
* @type {number}
|
|
60
|
+
* @default 0
|
|
61
|
+
*/
|
|
14
62
|
this.aX = aX;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The Y center of the ellipse.
|
|
66
|
+
*
|
|
67
|
+
* @type {number}
|
|
68
|
+
* @default 0
|
|
69
|
+
*/
|
|
15
70
|
this.aY = aY;
|
|
16
71
|
|
|
72
|
+
/**
|
|
73
|
+
* The radius of the ellipse in the x direction.
|
|
74
|
+
* Setting the this value equal to the {@link EllipseCurve#yRadius} will result in a circle.
|
|
75
|
+
*
|
|
76
|
+
* @type {number}
|
|
77
|
+
* @default 1
|
|
78
|
+
*/
|
|
17
79
|
this.xRadius = xRadius;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The radius of the ellipse in the y direction.
|
|
83
|
+
* Setting the this value equal to the {@link EllipseCurve#xRadius} will result in a circle.
|
|
84
|
+
*
|
|
85
|
+
* @type {number}
|
|
86
|
+
* @default 1
|
|
87
|
+
*/
|
|
18
88
|
this.yRadius = yRadius;
|
|
19
89
|
|
|
90
|
+
/**
|
|
91
|
+
* The start angle of the curve in radians starting from the positive X axis.
|
|
92
|
+
*
|
|
93
|
+
* @type {number}
|
|
94
|
+
* @default 0
|
|
95
|
+
*/
|
|
20
96
|
this.aStartAngle = aStartAngle;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The end angle of the curve in radians starting from the positive X axis.
|
|
100
|
+
*
|
|
101
|
+
* @type {number}
|
|
102
|
+
* @default Math.PI*2
|
|
103
|
+
*/
|
|
21
104
|
this.aEndAngle = aEndAngle;
|
|
22
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Whether the ellipse is drawn clockwise or not.
|
|
108
|
+
*
|
|
109
|
+
* @type {boolean}
|
|
110
|
+
* @default false
|
|
111
|
+
*/
|
|
23
112
|
this.aClockwise = aClockwise;
|
|
24
113
|
|
|
114
|
+
/**
|
|
115
|
+
* The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
116
|
+
*
|
|
117
|
+
* @type {number}
|
|
118
|
+
* @default 0
|
|
119
|
+
*/
|
|
25
120
|
this.aRotation = aRotation;
|
|
26
121
|
|
|
27
122
|
}
|
|
28
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Returns a point on the curve.
|
|
126
|
+
*
|
|
127
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
128
|
+
* @param {Vector2} [optionalTarget] - The optional target vector the result is written to.
|
|
129
|
+
* @return {Vector2} The position on the curve.
|
|
130
|
+
*/
|
|
29
131
|
getPoint( t, optionalTarget = new Vector2() ) {
|
|
30
132
|
|
|
31
133
|
const point = optionalTarget;
|
|
@@ -1,21 +1,57 @@
|
|
|
1
1
|
import { Vector2 } from '../../math/Vector2.js';
|
|
2
2
|
import { Curve } from '../core/Curve.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A curve representing a 2D line segment.
|
|
6
|
+
*
|
|
7
|
+
* @augments Curve
|
|
8
|
+
*/
|
|
4
9
|
class LineCurve extends Curve {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new line curve.
|
|
13
|
+
*
|
|
14
|
+
* @param {Vector2} [v1] - The start point.
|
|
15
|
+
* @param {Vector2} [v2] - The end point.
|
|
16
|
+
*/
|
|
6
17
|
constructor( v1 = new Vector2(), v2 = new Vector2() ) {
|
|
7
18
|
|
|
8
19
|
super();
|
|
9
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
10
28
|
this.isLineCurve = true;
|
|
11
29
|
|
|
12
30
|
this.type = 'LineCurve';
|
|
13
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The start point.
|
|
34
|
+
*
|
|
35
|
+
* @type {Vector2}
|
|
36
|
+
*/
|
|
14
37
|
this.v1 = v1;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The end point.
|
|
41
|
+
*
|
|
42
|
+
* @type {Vector2}
|
|
43
|
+
*/
|
|
15
44
|
this.v2 = v2;
|
|
16
45
|
|
|
17
46
|
}
|
|
18
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Returns a point on the line.
|
|
50
|
+
*
|
|
51
|
+
* @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.
|
|
52
|
+
* @param {Vector2} [optionalTarget] - The optional target vector the result is written to.
|
|
53
|
+
* @return {Vector2} The position on the line.
|
|
54
|
+
*/
|
|
19
55
|
getPoint( t, optionalTarget = new Vector2() ) {
|
|
20
56
|
|
|
21
57
|
const point = optionalTarget;
|
|
@@ -1,21 +1,57 @@
|
|
|
1
1
|
import { Vector3 } from '../../math/Vector3.js';
|
|
2
2
|
import { Curve } from '../core/Curve.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A curve representing a 3D line segment.
|
|
6
|
+
*
|
|
7
|
+
* @augments Curve
|
|
8
|
+
*/
|
|
4
9
|
class LineCurve3 extends Curve {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new line curve.
|
|
13
|
+
*
|
|
14
|
+
* @param {Vector3} [v1] - The start point.
|
|
15
|
+
* @param {Vector3} [v2] - The end point.
|
|
16
|
+
*/
|
|
6
17
|
constructor( v1 = new Vector3(), v2 = new Vector3() ) {
|
|
7
18
|
|
|
8
19
|
super();
|
|
9
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
10
28
|
this.isLineCurve3 = true;
|
|
11
29
|
|
|
12
30
|
this.type = 'LineCurve3';
|
|
13
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The start point.
|
|
34
|
+
*
|
|
35
|
+
* @type {Vector3}
|
|
36
|
+
*/
|
|
14
37
|
this.v1 = v1;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The end point.
|
|
41
|
+
*
|
|
42
|
+
* @type {Vector2}
|
|
43
|
+
*/
|
|
15
44
|
this.v2 = v2;
|
|
16
45
|
|
|
17
46
|
}
|
|
18
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Returns a point on the line.
|
|
50
|
+
*
|
|
51
|
+
* @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.
|
|
52
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
53
|
+
* @return {Vector3} The position on the line.
|
|
54
|
+
*/
|
|
19
55
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
20
56
|
|
|
21
57
|
const point = optionalTarget;
|
|
@@ -2,22 +2,81 @@ import { Curve } from '../core/Curve.js';
|
|
|
2
2
|
import { QuadraticBezier } from '../core/Interpolations.js';
|
|
3
3
|
import { Vector2 } from '../../math/Vector2.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A curve representing a 2D Quadratic Bezier curve.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const curve = new THREE.QuadraticBezierCurve(
|
|
10
|
+
* new THREE.Vector2( - 10, 0 ),
|
|
11
|
+
* new THREE.Vector2( 20, 15 ),
|
|
12
|
+
* new THREE.Vector2( 10, 0 )
|
|
13
|
+
* )
|
|
14
|
+
*
|
|
15
|
+
* const points = curve.getPoints( 50 );
|
|
16
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
17
|
+
*
|
|
18
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
|
|
19
|
+
*
|
|
20
|
+
* // Create the final object to add to the scene
|
|
21
|
+
* const curveObject = new THREE.Line( geometry, material );
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @augments Curve
|
|
25
|
+
*/
|
|
5
26
|
class QuadraticBezierCurve extends Curve {
|
|
6
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new Quadratic Bezier curve.
|
|
30
|
+
*
|
|
31
|
+
* @param {Vector2} [v0] - The start point.
|
|
32
|
+
* @param {Vector2} [v1] - The control point.
|
|
33
|
+
* @param {Vector2} [v2] - The end point.
|
|
34
|
+
*/
|
|
7
35
|
constructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {
|
|
8
36
|
|
|
9
37
|
super();
|
|
10
38
|
|
|
39
|
+
/**
|
|
40
|
+
* This flag can be used for type testing.
|
|
41
|
+
*
|
|
42
|
+
* @type {boolean}
|
|
43
|
+
* @readonly
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
11
46
|
this.isQuadraticBezierCurve = true;
|
|
12
47
|
|
|
13
48
|
this.type = 'QuadraticBezierCurve';
|
|
14
49
|
|
|
50
|
+
/**
|
|
51
|
+
* The start point.
|
|
52
|
+
*
|
|
53
|
+
* @type {Vector2}
|
|
54
|
+
*/
|
|
15
55
|
this.v0 = v0;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The control point.
|
|
59
|
+
*
|
|
60
|
+
* @type {Vector2}
|
|
61
|
+
*/
|
|
16
62
|
this.v1 = v1;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The end point.
|
|
66
|
+
*
|
|
67
|
+
* @type {Vector2}
|
|
68
|
+
*/
|
|
17
69
|
this.v2 = v2;
|
|
18
70
|
|
|
19
71
|
}
|
|
20
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Returns a point on the curve.
|
|
75
|
+
*
|
|
76
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
77
|
+
* @param {Vector2} [optionalTarget] - The optional target vector the result is written to.
|
|
78
|
+
* @return {Vector2} The position on the curve.
|
|
79
|
+
*/
|
|
21
80
|
getPoint( t, optionalTarget = new Vector2() ) {
|
|
22
81
|
|
|
23
82
|
const point = optionalTarget;
|
|
@@ -2,22 +2,65 @@ import { Curve } from '../core/Curve.js';
|
|
|
2
2
|
import { QuadraticBezier } from '../core/Interpolations.js';
|
|
3
3
|
import { Vector3 } from '../../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A curve representing a 3D Quadratic Bezier curve.
|
|
7
|
+
*
|
|
8
|
+
* @augments Curve
|
|
9
|
+
*/
|
|
5
10
|
class QuadraticBezierCurve3 extends Curve {
|
|
6
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new Quadratic Bezier curve.
|
|
14
|
+
*
|
|
15
|
+
* @param {Vector3} [v0] - The start point.
|
|
16
|
+
* @param {Vector3} [v1] - The control point.
|
|
17
|
+
* @param {Vector3} [v2] - The end point.
|
|
18
|
+
*/
|
|
7
19
|
constructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {
|
|
8
20
|
|
|
9
21
|
super();
|
|
10
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
11
30
|
this.isQuadraticBezierCurve3 = true;
|
|
12
31
|
|
|
13
32
|
this.type = 'QuadraticBezierCurve3';
|
|
14
33
|
|
|
34
|
+
/**
|
|
35
|
+
* The start point.
|
|
36
|
+
*
|
|
37
|
+
* @type {Vector3}
|
|
38
|
+
*/
|
|
15
39
|
this.v0 = v0;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The control point.
|
|
43
|
+
*
|
|
44
|
+
* @type {Vector3}
|
|
45
|
+
*/
|
|
16
46
|
this.v1 = v1;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The end point.
|
|
50
|
+
*
|
|
51
|
+
* @type {Vector3}
|
|
52
|
+
*/
|
|
17
53
|
this.v2 = v2;
|
|
18
54
|
|
|
19
55
|
}
|
|
20
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Returns a point on the curve.
|
|
59
|
+
*
|
|
60
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
61
|
+
* @param {Vector3} [optionalTarget] - The optional target vector the result is written to.
|
|
62
|
+
* @return {Vector3} The position on the curve.
|
|
63
|
+
*/
|
|
21
64
|
getPoint( t, optionalTarget = new Vector3() ) {
|
|
22
65
|
|
|
23
66
|
const point = optionalTarget;
|