super-three 0.173.5 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -1,30 +1,58 @@
|
|
|
1
1
|
import { Curve } from './Curve.js';
|
|
2
2
|
import * as Curves from '../curves/Curves.js';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
/**
|
|
5
|
+
* A base class extending {@link Curve}. `CurvePath` is simply an
|
|
6
|
+
* array of connected curves, but retains the API of a curve.
|
|
7
|
+
*
|
|
8
|
+
* @augments Curve
|
|
9
|
+
*/
|
|
9
10
|
class CurvePath extends Curve {
|
|
10
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new curve path.
|
|
14
|
+
*/
|
|
11
15
|
constructor() {
|
|
12
16
|
|
|
13
17
|
super();
|
|
14
18
|
|
|
15
19
|
this.type = 'CurvePath';
|
|
16
20
|
|
|
21
|
+
/**
|
|
22
|
+
* An array of curves defining the
|
|
23
|
+
* path.
|
|
24
|
+
*
|
|
25
|
+
* @type {Array<Curve>}
|
|
26
|
+
*/
|
|
17
27
|
this.curves = [];
|
|
18
|
-
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Whether the path should automatically be closed
|
|
31
|
+
* by a line curve.
|
|
32
|
+
*
|
|
33
|
+
* @type {boolean}
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
this.autoClose = false;
|
|
19
37
|
|
|
20
38
|
}
|
|
21
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Adds a curve to this curve path.
|
|
42
|
+
*
|
|
43
|
+
* @param {Curve} curve - The curve to add.
|
|
44
|
+
*/
|
|
22
45
|
add( curve ) {
|
|
23
46
|
|
|
24
47
|
this.curves.push( curve );
|
|
25
48
|
|
|
26
49
|
}
|
|
27
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Adds a line curve to close the path.
|
|
53
|
+
*
|
|
54
|
+
* @return {CurvePath} A reference to this curve path.
|
|
55
|
+
*/
|
|
28
56
|
closePath() {
|
|
29
57
|
|
|
30
58
|
// Add a line curve if start and end of lines are not connected
|
|
@@ -42,16 +70,24 @@ class CurvePath extends Curve {
|
|
|
42
70
|
|
|
43
71
|
}
|
|
44
72
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
73
|
+
/**
|
|
74
|
+
* This method returns a vector in 2D or 3D space (depending on the curve definitions)
|
|
75
|
+
* for the given interpolation factor.
|
|
76
|
+
*
|
|
77
|
+
* @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
|
|
78
|
+
* @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.
|
|
79
|
+
* @return {?(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.
|
|
80
|
+
*/
|
|
81
|
+
getPoint( t, optionalTarget ) {
|
|
48
82
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// 4. Return curve.getPointAt(t')
|
|
83
|
+
// To get accurate point with reference to
|
|
84
|
+
// entire path distance at time t,
|
|
85
|
+
// following has to be done:
|
|
53
86
|
|
|
54
|
-
|
|
87
|
+
// 1. Length of each sub path have to be known
|
|
88
|
+
// 2. Locate and identify type of curve
|
|
89
|
+
// 3. Get t for the curve
|
|
90
|
+
// 4. Return curve.getPointAt(t')
|
|
55
91
|
|
|
56
92
|
const d = t * this.getLength();
|
|
57
93
|
const curveLengths = this.getCurveLengths();
|
|
@@ -83,31 +119,36 @@ class CurvePath extends Curve {
|
|
|
83
119
|
|
|
84
120
|
}
|
|
85
121
|
|
|
86
|
-
// We cannot use the default THREE.Curve getPoint() with getLength() because in
|
|
87
|
-
// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath
|
|
88
|
-
// getPoint() depends on getLength
|
|
89
|
-
|
|
90
122
|
getLength() {
|
|
91
123
|
|
|
124
|
+
// We cannot use the default THREE.Curve getPoint() with getLength() because in
|
|
125
|
+
// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath
|
|
126
|
+
// getPoint() depends on getLength
|
|
127
|
+
|
|
92
128
|
const lens = this.getCurveLengths();
|
|
93
129
|
return lens[ lens.length - 1 ];
|
|
94
130
|
|
|
95
131
|
}
|
|
96
132
|
|
|
97
|
-
// cacheLengths must be recalculated.
|
|
98
133
|
updateArcLengths() {
|
|
99
134
|
|
|
135
|
+
// cacheLengths must be recalculated.
|
|
136
|
+
|
|
100
137
|
this.needsUpdate = true;
|
|
101
138
|
this.cacheLengths = null;
|
|
102
139
|
this.getCurveLengths();
|
|
103
140
|
|
|
104
141
|
}
|
|
105
142
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Returns list of cumulative curve lengths of the defined curves.
|
|
145
|
+
*
|
|
146
|
+
* @return {Array<number>} The curve lengths.
|
|
147
|
+
*/
|
|
109
148
|
getCurveLengths() {
|
|
110
149
|
|
|
150
|
+
// Compute lengths and cache them
|
|
151
|
+
// We cannot overwrite getLengths() because UtoT mapping uses it.
|
|
111
152
|
// We use cache values if curves and cache array are same length
|
|
112
153
|
|
|
113
154
|
if ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
// Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
+
* Computes a point on a Catmull-Rom spline.
|
|
5
|
+
*
|
|
6
|
+
* @param {number} t - The interpolation factor.
|
|
7
|
+
* @param {number} p0 - The first control point.
|
|
8
|
+
* @param {number} p1 - The second control point.
|
|
9
|
+
* @param {number} p2 - The third control point.
|
|
10
|
+
* @param {number} p3 - The fourth control point.
|
|
11
|
+
* @return {number} The calculated point on a Catmull-Rom spline.
|
|
4
12
|
*/
|
|
5
|
-
|
|
6
13
|
function CatmullRom( t, p0, p1, p2, p3 ) {
|
|
7
14
|
|
|
8
15
|
const v0 = ( p2 - p0 ) * 0.5;
|
|
@@ -34,6 +41,15 @@ function QuadraticBezierP2( t, p ) {
|
|
|
34
41
|
|
|
35
42
|
}
|
|
36
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Computes a point on a Quadratic Bezier curve.
|
|
46
|
+
*
|
|
47
|
+
* @param {number} t - The interpolation factor.
|
|
48
|
+
* @param {number} p0 - The first control point.
|
|
49
|
+
* @param {number} p1 - The second control point.
|
|
50
|
+
* @param {number} p2 - The third control point.
|
|
51
|
+
* @return {number} The calculated point on a Quadratic Bezier curve.
|
|
52
|
+
*/
|
|
37
53
|
function QuadraticBezier( t, p0, p1, p2 ) {
|
|
38
54
|
|
|
39
55
|
return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +
|
|
@@ -69,6 +85,16 @@ function CubicBezierP3( t, p ) {
|
|
|
69
85
|
|
|
70
86
|
}
|
|
71
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Computes a point on a Cubic Bezier curve.
|
|
90
|
+
*
|
|
91
|
+
* @param {number} t - The interpolation factor.
|
|
92
|
+
* @param {number} p0 - The first control point.
|
|
93
|
+
* @param {number} p1 - The second control point.
|
|
94
|
+
* @param {number} p2 - The third control point.
|
|
95
|
+
* @param {number} p3 - The fourth control point.
|
|
96
|
+
* @return {number} The calculated point on a Cubic Bezier curve.
|
|
97
|
+
*/
|
|
72
98
|
function CubicBezier( t, p0, p1, p2, p3 ) {
|
|
73
99
|
|
|
74
100
|
return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +
|
package/src/extras/core/Path.js
CHANGED
|
@@ -6,14 +6,46 @@ import { CubicBezierCurve } from '../curves/CubicBezierCurve.js';
|
|
|
6
6
|
import { QuadraticBezierCurve } from '../curves/QuadraticBezierCurve.js';
|
|
7
7
|
import { LineCurve } from '../curves/LineCurve.js';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* A 2D path representation. The class provides methods for creating paths
|
|
11
|
+
* and contours of 2D shapes similar to the 2D Canvas API.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const path = new THREE.Path();
|
|
15
|
+
*
|
|
16
|
+
* path.lineTo( 0, 0.8 );
|
|
17
|
+
* path.quadraticCurveTo( 0, 1, 0.2, 1 );
|
|
18
|
+
* path.lineTo( 1, 1 );
|
|
19
|
+
*
|
|
20
|
+
* const points = path.getPoints();
|
|
21
|
+
*
|
|
22
|
+
* const geometry = new THREE.BufferGeometry().setFromPoints( points );
|
|
23
|
+
* const material = new THREE.LineBasicMaterial( { color: 0xffffff } );
|
|
24
|
+
*
|
|
25
|
+
* const line = new THREE.Line( geometry, material );
|
|
26
|
+
* scene.add( line );
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @augments CurvePath
|
|
30
|
+
*/
|
|
9
31
|
class Path extends CurvePath {
|
|
10
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Constructs a new path.
|
|
35
|
+
*
|
|
36
|
+
* @param {Array<Vector2>} [points] - An array of 2D points defining the path.
|
|
37
|
+
*/
|
|
11
38
|
constructor( points ) {
|
|
12
39
|
|
|
13
40
|
super();
|
|
14
41
|
|
|
15
42
|
this.type = 'Path';
|
|
16
43
|
|
|
44
|
+
/**
|
|
45
|
+
* The current offset of the path. Any new curve added will start here.
|
|
46
|
+
*
|
|
47
|
+
* @type {Vector2}
|
|
48
|
+
*/
|
|
17
49
|
this.currentPoint = new Vector2();
|
|
18
50
|
|
|
19
51
|
if ( points ) {
|
|
@@ -24,6 +56,13 @@ class Path extends CurvePath {
|
|
|
24
56
|
|
|
25
57
|
}
|
|
26
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Creates a path from the given list of points. The points are added
|
|
61
|
+
* to the path as instances of {@link LineCurve}.
|
|
62
|
+
*
|
|
63
|
+
* @param {Array<Vector2>} points - An array of 2D points.
|
|
64
|
+
* @return {Path} A reference to this path.
|
|
65
|
+
*/
|
|
27
66
|
setFromPoints( points ) {
|
|
28
67
|
|
|
29
68
|
this.moveTo( points[ 0 ].x, points[ 0 ].y );
|
|
@@ -38,6 +77,13 @@ class Path extends CurvePath {
|
|
|
38
77
|
|
|
39
78
|
}
|
|
40
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Moves {@link Path#currentPoint} to the given point.
|
|
82
|
+
*
|
|
83
|
+
* @param {number} x - The x coordinate.
|
|
84
|
+
* @param {number} y - The y coordinate.
|
|
85
|
+
* @return {Path} A reference to this path.
|
|
86
|
+
*/
|
|
41
87
|
moveTo( x, y ) {
|
|
42
88
|
|
|
43
89
|
this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?
|
|
@@ -46,6 +92,14 @@ class Path extends CurvePath {
|
|
|
46
92
|
|
|
47
93
|
}
|
|
48
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Adds an instance of {@link LineCurve} to the path by connecting
|
|
97
|
+
* the current point with the given one.
|
|
98
|
+
*
|
|
99
|
+
* @param {number} x - The x coordinate of the end point.
|
|
100
|
+
* @param {number} y - The y coordinate of the end point.
|
|
101
|
+
* @return {Path} A reference to this path.
|
|
102
|
+
*/
|
|
49
103
|
lineTo( x, y ) {
|
|
50
104
|
|
|
51
105
|
const curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );
|
|
@@ -57,6 +111,16 @@ class Path extends CurvePath {
|
|
|
57
111
|
|
|
58
112
|
}
|
|
59
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Adds an instance of {@link QuadraticBezierCurve} to the path by connecting
|
|
116
|
+
* the current point with the given one.
|
|
117
|
+
*
|
|
118
|
+
* @param {number} aCPx - The x coordinate of the control point.
|
|
119
|
+
* @param {number} aCPy - The y coordinate of the control point.
|
|
120
|
+
* @param {number} aX - The x coordinate of the end point.
|
|
121
|
+
* @param {number} aY - The y coordinate of the end point.
|
|
122
|
+
* @return {Path} A reference to this path.
|
|
123
|
+
*/
|
|
60
124
|
quadraticCurveTo( aCPx, aCPy, aX, aY ) {
|
|
61
125
|
|
|
62
126
|
const curve = new QuadraticBezierCurve(
|
|
@@ -73,6 +137,18 @@ class Path extends CurvePath {
|
|
|
73
137
|
|
|
74
138
|
}
|
|
75
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Adds an instance of {@link CubicBezierCurve} to the path by connecting
|
|
142
|
+
* the current point with the given one.
|
|
143
|
+
*
|
|
144
|
+
* @param {number} aCP1x - The x coordinate of the first control point.
|
|
145
|
+
* @param {number} aCP1y - The y coordinate of the first control point.
|
|
146
|
+
* @param {number} aCP2x - The x coordinate of the second control point.
|
|
147
|
+
* @param {number} aCP2y - The y coordinate of the second control point.
|
|
148
|
+
* @param {number} aX - The x coordinate of the end point.
|
|
149
|
+
* @param {number} aY - The y coordinate of the end point.
|
|
150
|
+
* @return {Path} A reference to this path.
|
|
151
|
+
*/
|
|
76
152
|
bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {
|
|
77
153
|
|
|
78
154
|
const curve = new CubicBezierCurve(
|
|
@@ -90,7 +166,14 @@ class Path extends CurvePath {
|
|
|
90
166
|
|
|
91
167
|
}
|
|
92
168
|
|
|
93
|
-
|
|
169
|
+
/**
|
|
170
|
+
* Adds an instance of {@link SplineCurve} to the path by connecting
|
|
171
|
+
* the current point with the given list of points.
|
|
172
|
+
*
|
|
173
|
+
* @param {Array<Vector2>} pts - An array of points in 2D space.
|
|
174
|
+
* @return {Path} A reference to this path.
|
|
175
|
+
*/
|
|
176
|
+
splineThru( pts ) {
|
|
94
177
|
|
|
95
178
|
const npts = [ this.currentPoint.clone() ].concat( pts );
|
|
96
179
|
|
|
@@ -103,6 +186,18 @@ class Path extends CurvePath {
|
|
|
103
186
|
|
|
104
187
|
}
|
|
105
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Adds an arc as an instance of {@link EllipseCurve} to the path, positioned relative
|
|
191
|
+
* to the current point.
|
|
192
|
+
*
|
|
193
|
+
* @param {number} aX - The x coordinate of the center of the arc offsetted from the previous curve.
|
|
194
|
+
* @param {number} aY - The y coordinate of the center of the arc offsetted from the previous curve.
|
|
195
|
+
* @param {number} aRadius - The radius of the arc.
|
|
196
|
+
* @param {number} aStartAngle - The start angle in radians.
|
|
197
|
+
* @param {number} aEndAngle - The end angle in radians.
|
|
198
|
+
* @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.
|
|
199
|
+
* @return {Path} A reference to this path.
|
|
200
|
+
*/
|
|
106
201
|
arc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {
|
|
107
202
|
|
|
108
203
|
const x0 = this.currentPoint.x;
|
|
@@ -115,6 +210,17 @@ class Path extends CurvePath {
|
|
|
115
210
|
|
|
116
211
|
}
|
|
117
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Adds an absolutely positioned arc as an instance of {@link EllipseCurve} to the path.
|
|
215
|
+
*
|
|
216
|
+
* @param {number} aX - The x coordinate of the center of the arc.
|
|
217
|
+
* @param {number} aY - The y coordinate of the center of the arc.
|
|
218
|
+
* @param {number} aRadius - The radius of the arc.
|
|
219
|
+
* @param {number} aStartAngle - The start angle in radians.
|
|
220
|
+
* @param {number} aEndAngle - The end angle in radians.
|
|
221
|
+
* @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.
|
|
222
|
+
* @return {Path} A reference to this path.
|
|
223
|
+
*/
|
|
118
224
|
absarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {
|
|
119
225
|
|
|
120
226
|
this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );
|
|
@@ -123,6 +229,20 @@ class Path extends CurvePath {
|
|
|
123
229
|
|
|
124
230
|
}
|
|
125
231
|
|
|
232
|
+
/**
|
|
233
|
+
* Adds an ellipse as an instance of {@link EllipseCurve} to the path, positioned relative
|
|
234
|
+
* to the current point
|
|
235
|
+
*
|
|
236
|
+
* @param {number} aX - The x coordinate of the center of the ellipse offsetted from the previous curve.
|
|
237
|
+
* @param {number} aY - The y coordinate of the center of the ellipse offsetted from the previous curve.
|
|
238
|
+
* @param {number} xRadius - The radius of the ellipse in the x axis.
|
|
239
|
+
* @param {number} yRadius - The radius of the ellipse in the y axis.
|
|
240
|
+
* @param {number} aStartAngle - The start angle in radians.
|
|
241
|
+
* @param {number} aEndAngle - The end angle in radians.
|
|
242
|
+
* @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.
|
|
243
|
+
* @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
244
|
+
* @return {Path} A reference to this path.
|
|
245
|
+
*/
|
|
126
246
|
ellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {
|
|
127
247
|
|
|
128
248
|
const x0 = this.currentPoint.x;
|
|
@@ -134,6 +254,19 @@ class Path extends CurvePath {
|
|
|
134
254
|
|
|
135
255
|
}
|
|
136
256
|
|
|
257
|
+
/**
|
|
258
|
+
* Adds an absolutely positioned ellipse as an instance of {@link EllipseCurve} to the path.
|
|
259
|
+
*
|
|
260
|
+
* @param {number} aX - The x coordinate of the absolute center of the ellipse.
|
|
261
|
+
* @param {number} aY - The y coordinate of the absolute center of the ellipse.
|
|
262
|
+
* @param {number} xRadius - The radius of the ellipse in the x axis.
|
|
263
|
+
* @param {number} yRadius - The radius of the ellipse in the y axis.
|
|
264
|
+
* @param {number} aStartAngle - The start angle in radians.
|
|
265
|
+
* @param {number} aEndAngle - The end angle in radians.
|
|
266
|
+
* @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.
|
|
267
|
+
* @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.
|
|
268
|
+
* @return {Path} A reference to this path.
|
|
269
|
+
*/
|
|
137
270
|
absellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {
|
|
138
271
|
|
|
139
272
|
const curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );
|
package/src/extras/core/Shape.js
CHANGED
|
@@ -1,20 +1,76 @@
|
|
|
1
1
|
import { Path } from './Path.js';
|
|
2
2
|
import { generateUUID } from '../../math/MathUtils.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Defines an arbitrary 2d shape plane using paths with optional holes. It
|
|
6
|
+
* can be used with {@link ExtrudeGeometry}, {@link ShapeGeometry}, to get
|
|
7
|
+
* points, or to get triangulated faces.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const heartShape = new THREE.Shape();
|
|
11
|
+
*
|
|
12
|
+
* heartShape.moveTo( 25, 25 );
|
|
13
|
+
* heartShape.bezierCurveTo( 25, 25, 20, 0, 0, 0 );
|
|
14
|
+
* heartShape.bezierCurveTo( - 30, 0, - 30, 35, - 30, 35 );
|
|
15
|
+
* heartShape.bezierCurveTo( - 30, 55, - 10, 77, 25, 95 );
|
|
16
|
+
* heartShape.bezierCurveTo( 60, 77, 80, 55, 80, 35 );
|
|
17
|
+
* heartShape.bezierCurveTo( 80, 35, 80, 0, 50, 0 );
|
|
18
|
+
* heartShape.bezierCurveTo( 35, 0, 25, 25, 25, 25 );
|
|
19
|
+
*
|
|
20
|
+
* const extrudeSettings = {
|
|
21
|
+
* depth: 8,
|
|
22
|
+
* bevelEnabled: true,
|
|
23
|
+
* bevelSegments: 2,
|
|
24
|
+
* steps: 2,
|
|
25
|
+
* bevelSize: 1,
|
|
26
|
+
* bevelThickness: 1
|
|
27
|
+
* };
|
|
28
|
+
*
|
|
29
|
+
* const geometry = new THREE.ExtrudeGeometry( heartShape, extrudeSettings );
|
|
30
|
+
* const mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial() );
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @augments Path
|
|
34
|
+
*/
|
|
4
35
|
class Shape extends Path {
|
|
5
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Constructs a new shape.
|
|
39
|
+
*
|
|
40
|
+
* @param {Array<Vector2>} [points] - An array of 2D points defining the shape.
|
|
41
|
+
*/
|
|
6
42
|
constructor( points ) {
|
|
7
43
|
|
|
8
44
|
super( points );
|
|
9
45
|
|
|
46
|
+
/**
|
|
47
|
+
* The UUID of the shape.
|
|
48
|
+
*
|
|
49
|
+
* @type {string}
|
|
50
|
+
* @readonly
|
|
51
|
+
*/
|
|
10
52
|
this.uuid = generateUUID();
|
|
11
53
|
|
|
12
54
|
this.type = 'Shape';
|
|
13
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Defines the holes in the shape. Hole definitions must use the
|
|
58
|
+
* opposite winding order (CW/CCW) than the outer shape.
|
|
59
|
+
*
|
|
60
|
+
* @type {Array<Path>}
|
|
61
|
+
* @readonly
|
|
62
|
+
*/
|
|
14
63
|
this.holes = [];
|
|
15
64
|
|
|
16
65
|
}
|
|
17
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Returns an array representing each contour of the holes
|
|
69
|
+
* as a list of 2D points.
|
|
70
|
+
*
|
|
71
|
+
* @param {number} divisions - The fineness of the result.
|
|
72
|
+
* @return {Array<Array<Vector2>>} The holes as a series of 2D points.
|
|
73
|
+
*/
|
|
18
74
|
getPointsHoles( divisions ) {
|
|
19
75
|
|
|
20
76
|
const holesPts = [];
|
|
@@ -31,6 +87,13 @@ class Shape extends Path {
|
|
|
31
87
|
|
|
32
88
|
// get points of shape and holes (keypoints based on segments parameter)
|
|
33
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Returns an object that holds contour data for the shape and its holes as
|
|
92
|
+
* arrays of 2D points.
|
|
93
|
+
*
|
|
94
|
+
* @param {number} divisions - The fineness of the result.
|
|
95
|
+
* @return {{shape:Array<Vector2>,holes:Array<Array<Vector2>>}} An object with contour data.
|
|
96
|
+
*/
|
|
34
97
|
extractPoints( divisions ) {
|
|
35
98
|
|
|
36
99
|
return {
|
|
@@ -3,19 +3,51 @@ import { Path } from './Path.js';
|
|
|
3
3
|
import { Shape } from './Shape.js';
|
|
4
4
|
import { ShapeUtils } from '../ShapeUtils.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* This class is used to convert a series of paths to an array of
|
|
8
|
+
* shapes. It is specifically used in context of fonts and SVG.
|
|
9
|
+
*/
|
|
6
10
|
class ShapePath {
|
|
7
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Constructs a new shape path.
|
|
14
|
+
*/
|
|
8
15
|
constructor() {
|
|
9
16
|
|
|
10
17
|
this.type = 'ShapePath';
|
|
11
18
|
|
|
19
|
+
/**
|
|
20
|
+
* The color of the shape.
|
|
21
|
+
*
|
|
22
|
+
* @type {Color}
|
|
23
|
+
*/
|
|
12
24
|
this.color = new Color();
|
|
13
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The paths that have been generated for this shape.
|
|
28
|
+
*
|
|
29
|
+
* @type {Array<Path>}
|
|
30
|
+
* @default null
|
|
31
|
+
*/
|
|
14
32
|
this.subPaths = [];
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The current path that is being generated.
|
|
36
|
+
*
|
|
37
|
+
* @type {?Path}
|
|
38
|
+
* @default null
|
|
39
|
+
*/
|
|
15
40
|
this.currentPath = null;
|
|
16
41
|
|
|
17
42
|
}
|
|
18
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Creates a new path and moves it current point to the given one.
|
|
46
|
+
*
|
|
47
|
+
* @param {number} x - The x coordinate.
|
|
48
|
+
* @param {number} y - The y coordinate.
|
|
49
|
+
* @return {ShapePath} A reference to this shape path.
|
|
50
|
+
*/
|
|
19
51
|
moveTo( x, y ) {
|
|
20
52
|
|
|
21
53
|
this.currentPath = new Path();
|
|
@@ -26,6 +58,14 @@ class ShapePath {
|
|
|
26
58
|
|
|
27
59
|
}
|
|
28
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Adds an instance of {@link LineCurve} to the path by connecting
|
|
63
|
+
* the current point with the given one.
|
|
64
|
+
*
|
|
65
|
+
* @param {number} x - The x coordinate of the end point.
|
|
66
|
+
* @param {number} y - The y coordinate of the end point.
|
|
67
|
+
* @return {ShapePath} A reference to this shape path.
|
|
68
|
+
*/
|
|
29
69
|
lineTo( x, y ) {
|
|
30
70
|
|
|
31
71
|
this.currentPath.lineTo( x, y );
|
|
@@ -34,6 +74,16 @@ class ShapePath {
|
|
|
34
74
|
|
|
35
75
|
}
|
|
36
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Adds an instance of {@link QuadraticBezierCurve} to the path by connecting
|
|
79
|
+
* the current point with the given one.
|
|
80
|
+
*
|
|
81
|
+
* @param {number} aCPx - The x coordinate of the control point.
|
|
82
|
+
* @param {number} aCPy - The y coordinate of the control point.
|
|
83
|
+
* @param {number} aX - The x coordinate of the end point.
|
|
84
|
+
* @param {number} aY - The y coordinate of the end point.
|
|
85
|
+
* @return {ShapePath} A reference to this shape path.
|
|
86
|
+
*/
|
|
37
87
|
quadraticCurveTo( aCPx, aCPy, aX, aY ) {
|
|
38
88
|
|
|
39
89
|
this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );
|
|
@@ -42,6 +92,18 @@ class ShapePath {
|
|
|
42
92
|
|
|
43
93
|
}
|
|
44
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Adds an instance of {@link CubicBezierCurve} to the path by connecting
|
|
97
|
+
* the current point with the given one.
|
|
98
|
+
*
|
|
99
|
+
* @param {number} aCP1x - The x coordinate of the first control point.
|
|
100
|
+
* @param {number} aCP1y - The y coordinate of the first control point.
|
|
101
|
+
* @param {number} aCP2x - The x coordinate of the second control point.
|
|
102
|
+
* @param {number} aCP2y - The y coordinate of the second control point.
|
|
103
|
+
* @param {number} aX - The x coordinate of the end point.
|
|
104
|
+
* @param {number} aY - The y coordinate of the end point.
|
|
105
|
+
* @return {ShapePath} A reference to this shape path.
|
|
106
|
+
*/
|
|
45
107
|
bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {
|
|
46
108
|
|
|
47
109
|
this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );
|
|
@@ -50,6 +112,13 @@ class ShapePath {
|
|
|
50
112
|
|
|
51
113
|
}
|
|
52
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Adds an instance of {@link SplineCurve} to the path by connecting
|
|
117
|
+
* the current point with the given list of points.
|
|
118
|
+
*
|
|
119
|
+
* @param {Array<Vector2>} pts - An array of points in 2D space.
|
|
120
|
+
* @return {ShapePath} A reference to this shape path.
|
|
121
|
+
*/
|
|
53
122
|
splineThru( pts ) {
|
|
54
123
|
|
|
55
124
|
this.currentPath.splineThru( pts );
|
|
@@ -58,6 +127,13 @@ class ShapePath {
|
|
|
58
127
|
|
|
59
128
|
}
|
|
60
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Converts the paths into an array of shapes.
|
|
132
|
+
*
|
|
133
|
+
* @param {boolean} isCCW - By default solid shapes are defined clockwise (CW) and holes are defined counterclockwise (CCW).
|
|
134
|
+
* If this flag is set to `true`, then those are flipped.
|
|
135
|
+
* @return {Array<Shape>} An array of shapes.
|
|
136
|
+
*/
|
|
61
137
|
toShapes( isCCW ) {
|
|
62
138
|
|
|
63
139
|
function toShapesNoHoles( inSubpaths ) {
|
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
import { EllipseCurve } from './EllipseCurve.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A curve representing an arc.
|
|
5
|
+
*
|
|
6
|
+
* @augments EllipseCurve
|
|
7
|
+
*/
|
|
3
8
|
class ArcCurve extends EllipseCurve {
|
|
4
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new arc curve.
|
|
12
|
+
*
|
|
13
|
+
* @param {number} [aX=0] - The X center of the ellipse.
|
|
14
|
+
* @param {number} [aY=0] - The Y center of the ellipse.
|
|
15
|
+
* @param {number} [aRadius=1] - The radius of the ellipse in the x direction.
|
|
16
|
+
* @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.
|
|
17
|
+
* @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.
|
|
18
|
+
* @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.
|
|
19
|
+
*/
|
|
5
20
|
constructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {
|
|
6
21
|
|
|
7
22
|
super( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );
|
|
8
23
|
|
|
24
|
+
/**
|
|
25
|
+
* This flag can be used for type testing.
|
|
26
|
+
*
|
|
27
|
+
* @type {boolean}
|
|
28
|
+
* @readonly
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
9
31
|
this.isArcCurve = true;
|
|
10
32
|
|
|
11
33
|
this.type = 'ArcCurve';
|