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
|
@@ -4,14 +4,47 @@ import { Vector3 } from '../math/Vector3.js';
|
|
|
4
4
|
import { Vector2 } from '../math/Vector2.js';
|
|
5
5
|
import { clamp } from '../math/MathUtils.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Creates meshes with axial symmetry like vases. The lathe rotates around the Y axis.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const points = [];
|
|
12
|
+
* for ( let i = 0; i < 10; i ++ ) {
|
|
13
|
+
* points.push( new THREE.Vector2( Math.sin( i * 0.2 ) * 10 + 5, ( i - 5 ) * 2 ) );
|
|
14
|
+
* }
|
|
15
|
+
* const geometry = new THREE.LatheGeometry( points );
|
|
16
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
17
|
+
* const lathe = new THREE.Mesh( geometry, material );
|
|
18
|
+
* scene.add( lathe );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments BufferGeometry
|
|
22
|
+
*/
|
|
7
23
|
class LatheGeometry extends BufferGeometry {
|
|
8
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new lathe geometry.
|
|
27
|
+
*
|
|
28
|
+
* @param {Array<Vector2|Vector3>} [points] - An array of points in 2D space. The x-coordinate of each point
|
|
29
|
+
* must be greater than zero.
|
|
30
|
+
* @param {number} [segments=12] - The number of circumference segments to generate.
|
|
31
|
+
* @param {number} [phiStart=0] - The starting angle in radians.
|
|
32
|
+
* @param {number} [phiLength=Math.PI*2] - The radian (0 to 2PI) range of the lathed section 2PI is a
|
|
33
|
+
* closed lathe, less than 2PI is a portion.
|
|
34
|
+
*/
|
|
9
35
|
constructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {
|
|
10
36
|
|
|
11
37
|
super();
|
|
12
38
|
|
|
13
39
|
this.type = 'LatheGeometry';
|
|
14
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Holds the constructor parameters that have been
|
|
43
|
+
* used to generate the geometry. Any modification
|
|
44
|
+
* after instantiation does not change the geometry.
|
|
45
|
+
*
|
|
46
|
+
* @type {Object}
|
|
47
|
+
*/
|
|
15
48
|
this.parameters = {
|
|
16
49
|
points: points,
|
|
17
50
|
segments: segments,
|
|
@@ -177,6 +210,13 @@ class LatheGeometry extends BufferGeometry {
|
|
|
177
210
|
|
|
178
211
|
}
|
|
179
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Factory method for creating an instance of this class from the given
|
|
215
|
+
* JSON object.
|
|
216
|
+
*
|
|
217
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
218
|
+
* @return {LatheGeometry} A new instance.
|
|
219
|
+
*/
|
|
180
220
|
static fromJSON( data ) {
|
|
181
221
|
|
|
182
222
|
return new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { PolyhedronGeometry } from './PolyhedronGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing an octahedron.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.OctahedronGeometry();
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const octahedron = new THREE.Mesh( geometry, material );
|
|
10
|
+
* scene.add( octahedron );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments PolyhedronGeometry
|
|
14
|
+
*/
|
|
3
15
|
class OctahedronGeometry extends PolyhedronGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new octahedron geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the octahedron.
|
|
21
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a octahedron.
|
|
22
|
+
*/
|
|
5
23
|
constructor( radius = 1, detail = 0 ) {
|
|
6
24
|
|
|
7
25
|
const vertices = [
|
|
@@ -19,6 +37,13 @@ class OctahedronGeometry extends PolyhedronGeometry {
|
|
|
19
37
|
|
|
20
38
|
this.type = 'OctahedronGeometry';
|
|
21
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Holds the constructor parameters that have been
|
|
42
|
+
* used to generate the geometry. Any modification
|
|
43
|
+
* after instantiation does not change the geometry.
|
|
44
|
+
*
|
|
45
|
+
* @type {Object}
|
|
46
|
+
*/
|
|
22
47
|
this.parameters = {
|
|
23
48
|
radius: radius,
|
|
24
49
|
detail: detail
|
|
@@ -26,6 +51,13 @@ class OctahedronGeometry extends PolyhedronGeometry {
|
|
|
26
51
|
|
|
27
52
|
}
|
|
28
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Factory method for creating an instance of this class from the given
|
|
56
|
+
* JSON object.
|
|
57
|
+
*
|
|
58
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
59
|
+
* @return {OctahedronGeometry} A new instance.
|
|
60
|
+
*/
|
|
29
61
|
static fromJSON( data ) {
|
|
30
62
|
|
|
31
63
|
return new OctahedronGeometry( data.radius, data.detail );
|
|
@@ -1,14 +1,41 @@
|
|
|
1
1
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A geometry class for representing a plane.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const geometry = new THREE.PlaneGeometry( 1, 1 );
|
|
9
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );
|
|
10
|
+
* const plane = new THREE.Mesh( geometry, material );
|
|
11
|
+
* scene.add( plane );
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @augments BufferGeometry
|
|
15
|
+
*/
|
|
4
16
|
class PlaneGeometry extends BufferGeometry {
|
|
5
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new plane geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} [width=1] - The width along the X axis.
|
|
22
|
+
* @param {number} [height=1] - The height along the Y axis
|
|
23
|
+
* @param {number} [widthSegments=1] - The number of segments along the X axis.
|
|
24
|
+
* @param {number} [heightSegments=1] - The number of segments along the Y axis.
|
|
25
|
+
*/
|
|
6
26
|
constructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {
|
|
7
27
|
|
|
8
28
|
super();
|
|
9
29
|
|
|
10
30
|
this.type = 'PlaneGeometry';
|
|
11
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Holds the constructor parameters that have been
|
|
34
|
+
* used to generate the geometry. Any modification
|
|
35
|
+
* after instantiation does not change the geometry.
|
|
36
|
+
*
|
|
37
|
+
* @type {Object}
|
|
38
|
+
*/
|
|
12
39
|
this.parameters = {
|
|
13
40
|
width: width,
|
|
14
41
|
height: height,
|
|
@@ -87,6 +114,13 @@ class PlaneGeometry extends BufferGeometry {
|
|
|
87
114
|
|
|
88
115
|
}
|
|
89
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Factory method for creating an instance of this class from the given
|
|
119
|
+
* JSON object.
|
|
120
|
+
*
|
|
121
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
122
|
+
* @return {PlaneGeometry} A new instance.
|
|
123
|
+
*/
|
|
90
124
|
static fromJSON( data ) {
|
|
91
125
|
|
|
92
126
|
return new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );
|
|
@@ -3,14 +3,36 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
import { Vector2 } from '../math/Vector2.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A polyhedron is a solid in three dimensions with flat faces. This class
|
|
8
|
+
* will take an array of vertices, project them onto a sphere, and then
|
|
9
|
+
* divide them up to the desired level of detail.
|
|
10
|
+
*
|
|
11
|
+
* @augments BufferGeometry
|
|
12
|
+
*/
|
|
6
13
|
class PolyhedronGeometry extends BufferGeometry {
|
|
7
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new polyhedron geometry.
|
|
17
|
+
*
|
|
18
|
+
* @param {Array<number>} [vertices] - A flat array of vertices describing the base shape.
|
|
19
|
+
* @param {Array<number>} [indices] - A flat array of indices describing the base shape.
|
|
20
|
+
* @param {number} [radius=1] - The radius of the shape.
|
|
21
|
+
* @param {number} [detail=0] - How many levels to subdivide the geometry. The more detail, the smoother the shape.
|
|
22
|
+
*/
|
|
8
23
|
constructor( vertices = [], indices = [], radius = 1, detail = 0 ) {
|
|
9
24
|
|
|
10
25
|
super();
|
|
11
26
|
|
|
12
27
|
this.type = 'PolyhedronGeometry';
|
|
13
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Holds the constructor parameters that have been
|
|
31
|
+
* used to generate the geometry. Any modification
|
|
32
|
+
* after instantiation does not change the geometry.
|
|
33
|
+
*
|
|
34
|
+
* @type {Object}
|
|
35
|
+
*/
|
|
14
36
|
this.parameters = {
|
|
15
37
|
vertices: vertices,
|
|
16
38
|
indices: indices,
|
|
@@ -308,6 +330,13 @@ class PolyhedronGeometry extends BufferGeometry {
|
|
|
308
330
|
|
|
309
331
|
}
|
|
310
332
|
|
|
333
|
+
/**
|
|
334
|
+
* Factory method for creating an instance of this class from the given
|
|
335
|
+
* JSON object.
|
|
336
|
+
*
|
|
337
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
338
|
+
* @return {PolyhedronGeometry} A new instance.
|
|
339
|
+
*/
|
|
311
340
|
static fromJSON( data ) {
|
|
312
341
|
|
|
313
342
|
return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );
|
|
@@ -3,14 +3,43 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
|
3
3
|
import { Vector2 } from '../math/Vector2.js';
|
|
4
4
|
import { Vector3 } from '../math/Vector3.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A class for generating a two-dimensional ring geometry.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const geometry = new THREE.RingGeometry( 1, 5, 32 );
|
|
11
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );
|
|
12
|
+
* const mesh = new THREE.Mesh( geometry, material );
|
|
13
|
+
* scene.add( mesh );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments BufferGeometry
|
|
17
|
+
*/
|
|
6
18
|
class RingGeometry extends BufferGeometry {
|
|
7
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new ring geometry.
|
|
22
|
+
*
|
|
23
|
+
* @param {number} [innerRadius=0.5] - The inner radius of the ring.
|
|
24
|
+
* @param {number} [outerRadius=1] - The outer radius of the ring.
|
|
25
|
+
* @param {number} [thetaSegments=32] - Number of segments. A higher number means the ring will be more round. Minimum is `3`.
|
|
26
|
+
* @param {number} [phiSegments=1] - Number of segments per ring segment. Minimum is `1`.
|
|
27
|
+
* @param {number} [thetaStart=0] - Starting angle in radians.
|
|
28
|
+
* @param {number} [thetaLength=Math.PI*2] - Central angle in radians.
|
|
29
|
+
*/
|
|
8
30
|
constructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
9
31
|
|
|
10
32
|
super();
|
|
11
33
|
|
|
12
34
|
this.type = 'RingGeometry';
|
|
13
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Holds the constructor parameters that have been
|
|
38
|
+
* used to generate the geometry. Any modification
|
|
39
|
+
* after instantiation does not change the geometry.
|
|
40
|
+
*
|
|
41
|
+
* @type {Object}
|
|
42
|
+
*/
|
|
14
43
|
this.parameters = {
|
|
15
44
|
innerRadius: innerRadius,
|
|
16
45
|
outerRadius: outerRadius,
|
|
@@ -116,6 +145,13 @@ class RingGeometry extends BufferGeometry {
|
|
|
116
145
|
|
|
117
146
|
}
|
|
118
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Factory method for creating an instance of this class from the given
|
|
150
|
+
* JSON object.
|
|
151
|
+
*
|
|
152
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
153
|
+
* @return {RingGeometry} A new instance.
|
|
154
|
+
*/
|
|
119
155
|
static fromJSON( data ) {
|
|
120
156
|
|
|
121
157
|
return new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );
|
|
@@ -4,14 +4,43 @@ import { Shape } from '../extras/core/Shape.js';
|
|
|
4
4
|
import { ShapeUtils } from '../extras/ShapeUtils.js';
|
|
5
5
|
import { Vector2 } from '../math/Vector2.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Creates an one-sided polygonal geometry from one or more path shapes.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const arcShape = new THREE.Shape()
|
|
12
|
+
* .moveTo( 5, 1 )
|
|
13
|
+
* .absarc( 1, 1, 4, 0, Math.PI * 2, false );
|
|
14
|
+
*
|
|
15
|
+
* const geometry = new THREE.ShapeGeometry( arcShape );
|
|
16
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00, side: THREE.DoubleSide } );
|
|
17
|
+
* const mesh = new THREE.Mesh( geometry, material ) ;
|
|
18
|
+
* scene.add( mesh );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments BufferGeometry
|
|
22
|
+
*/
|
|
7
23
|
class ShapeGeometry extends BufferGeometry {
|
|
8
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new shape geometry.
|
|
27
|
+
*
|
|
28
|
+
* @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.
|
|
29
|
+
* @param {number} [curveSegments=12] - Number of segments per shape.
|
|
30
|
+
*/
|
|
9
31
|
constructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {
|
|
10
32
|
|
|
11
33
|
super();
|
|
12
34
|
|
|
13
35
|
this.type = 'ShapeGeometry';
|
|
14
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Holds the constructor parameters that have been
|
|
39
|
+
* used to generate the geometry. Any modification
|
|
40
|
+
* after instantiation does not change the geometry.
|
|
41
|
+
*
|
|
42
|
+
* @type {Object}
|
|
43
|
+
*/
|
|
15
44
|
this.parameters = {
|
|
16
45
|
shapes: shapes,
|
|
17
46
|
curveSegments: curveSegments
|
|
@@ -150,6 +179,14 @@ class ShapeGeometry extends BufferGeometry {
|
|
|
150
179
|
|
|
151
180
|
}
|
|
152
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Factory method for creating an instance of this class from the given
|
|
184
|
+
* JSON object.
|
|
185
|
+
*
|
|
186
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
187
|
+
* @param {Array<Shape>} shapes - An array of shapes.
|
|
188
|
+
* @return {ShapeGeometry} A new instance.
|
|
189
|
+
*/
|
|
153
190
|
static fromJSON( data, shapes ) {
|
|
154
191
|
|
|
155
192
|
const geometryShapes = [];
|
|
@@ -2,14 +2,44 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A class for generating a sphere geometry.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const geometry = new THREE.SphereGeometry( 15, 32, 16 );
|
|
10
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
11
|
+
* const sphere = new THREE.Mesh( geometry, material );
|
|
12
|
+
* scene.add( sphere );
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @augments BufferGeometry
|
|
16
|
+
*/
|
|
5
17
|
class SphereGeometry extends BufferGeometry {
|
|
6
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new sphere geometry.
|
|
21
|
+
*
|
|
22
|
+
* @param {number} [radius=1] - The sphere radius.
|
|
23
|
+
* @param {number} [widthSegments=32] - The number of horizontal segments. Minimum value is `3`.
|
|
24
|
+
* @param {number} [heightSegments=16] - The number of vertical segments. Minimum value is `2`.
|
|
25
|
+
* @param {number} [phiStart=0] - The horizontal starting angle in radians.
|
|
26
|
+
* @param {number} [phiLength=Math.PI*2] - The horizontal sweep angle size.
|
|
27
|
+
* @param {number} [thetaStart=0] - The vertical starting angle in radians.
|
|
28
|
+
* @param {number} [thetaLength=Math.PI] - The vertical sweep angle size.
|
|
29
|
+
*/
|
|
7
30
|
constructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {
|
|
8
31
|
|
|
9
32
|
super();
|
|
10
33
|
|
|
11
34
|
this.type = 'SphereGeometry';
|
|
12
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Holds the constructor parameters that have been
|
|
38
|
+
* used to generate the geometry. Any modification
|
|
39
|
+
* after instantiation does not change the geometry.
|
|
40
|
+
*
|
|
41
|
+
* @type {Object}
|
|
42
|
+
*/
|
|
13
43
|
this.parameters = {
|
|
14
44
|
radius: radius,
|
|
15
45
|
widthSegments: widthSegments,
|
|
@@ -126,6 +156,13 @@ class SphereGeometry extends BufferGeometry {
|
|
|
126
156
|
|
|
127
157
|
}
|
|
128
158
|
|
|
159
|
+
/**
|
|
160
|
+
* Factory method for creating an instance of this class from the given
|
|
161
|
+
* JSON object.
|
|
162
|
+
*
|
|
163
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
164
|
+
* @return {SphereGeometry} A new instance.
|
|
165
|
+
*/
|
|
129
166
|
static fromJSON( data ) {
|
|
130
167
|
|
|
131
168
|
return new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { PolyhedronGeometry } from './PolyhedronGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing an tetrahedron.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.TetrahedronGeometry();
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const tetrahedron = new THREE.Mesh( geometry, material );
|
|
10
|
+
* scene.add( tetrahedron );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments PolyhedronGeometry
|
|
14
|
+
*/
|
|
3
15
|
class TetrahedronGeometry extends PolyhedronGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new tetrahedron geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the tetrahedron.
|
|
21
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a tetrahedron.
|
|
22
|
+
*/
|
|
5
23
|
constructor( radius = 1, detail = 0 ) {
|
|
6
24
|
|
|
7
25
|
const vertices = [
|
|
@@ -16,6 +34,13 @@ class TetrahedronGeometry extends PolyhedronGeometry {
|
|
|
16
34
|
|
|
17
35
|
this.type = 'TetrahedronGeometry';
|
|
18
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Holds the constructor parameters that have been
|
|
39
|
+
* used to generate the geometry. Any modification
|
|
40
|
+
* after instantiation does not change the geometry.
|
|
41
|
+
*
|
|
42
|
+
* @type {Object}
|
|
43
|
+
*/
|
|
19
44
|
this.parameters = {
|
|
20
45
|
radius: radius,
|
|
21
46
|
detail: detail
|
|
@@ -23,6 +48,13 @@ class TetrahedronGeometry extends PolyhedronGeometry {
|
|
|
23
48
|
|
|
24
49
|
}
|
|
25
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Factory method for creating an instance of this class from the given
|
|
53
|
+
* JSON object.
|
|
54
|
+
*
|
|
55
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
56
|
+
* @return {TetrahedronGeometry} A new instance.
|
|
57
|
+
*/
|
|
26
58
|
static fromJSON( data ) {
|
|
27
59
|
|
|
28
60
|
return new TetrahedronGeometry( data.radius, data.detail );
|
|
@@ -2,14 +2,42 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A geometry class for representing an torus.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 );
|
|
10
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
11
|
+
* const torus = new THREE.Mesh( geometry, material );
|
|
12
|
+
* scene.add( torus );
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @augments BufferGeometry
|
|
16
|
+
*/
|
|
5
17
|
class TorusGeometry extends BufferGeometry {
|
|
6
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new torus geometry.
|
|
21
|
+
*
|
|
22
|
+
* @param {number} [radius=1] - Radius of the torus, from the center of the torus to the center of the tube.
|
|
23
|
+
* @param {number} [tube=0.4] - Radius of the tube. Must be smaller than `radius`.
|
|
24
|
+
* @param {number} [radialSegments=12] - The number of radial segments.
|
|
25
|
+
* @param {number} [tubularSegments=48] - The number of tubular segments.
|
|
26
|
+
* @param {number} [arc=Math.PI*2] - Central angle in radians.
|
|
27
|
+
*/
|
|
7
28
|
constructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {
|
|
8
29
|
|
|
9
30
|
super();
|
|
10
31
|
|
|
11
32
|
this.type = 'TorusGeometry';
|
|
12
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Holds the constructor parameters that have been
|
|
36
|
+
* used to generate the geometry. Any modification
|
|
37
|
+
* after instantiation does not change the geometry.
|
|
38
|
+
*
|
|
39
|
+
* @type {Object}
|
|
40
|
+
*/
|
|
13
41
|
this.parameters = {
|
|
14
42
|
radius: radius,
|
|
15
43
|
tube: tube,
|
|
@@ -109,6 +137,13 @@ class TorusGeometry extends BufferGeometry {
|
|
|
109
137
|
|
|
110
138
|
}
|
|
111
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Factory method for creating an instance of this class from the given
|
|
142
|
+
* JSON object.
|
|
143
|
+
*
|
|
144
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
145
|
+
* @return {TorusGeometry} A new instance.
|
|
146
|
+
*/
|
|
112
147
|
static fromJSON( data ) {
|
|
113
148
|
|
|
114
149
|
return new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );
|
|
@@ -2,14 +2,45 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Creates a torus knot, the particular shape of which is defined by a pair
|
|
7
|
+
* of coprime integers, p and q. If p and q are not coprime, the result will
|
|
8
|
+
* be a torus link.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const geometry = new THREE.TorusKnotGeometry( 10, 3, 100, 16 );
|
|
12
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
13
|
+
* const torusKnot = new THREE.Mesh( geometry, material );
|
|
14
|
+
* scene.add( torusKnot );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments BufferGeometry
|
|
18
|
+
*/
|
|
5
19
|
class TorusKnotGeometry extends BufferGeometry {
|
|
6
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new torus knot geometry.
|
|
23
|
+
*
|
|
24
|
+
* @param {number} [radius=1] - Radius of the torus knot.
|
|
25
|
+
* @param {number} [tube=0.4] - Radius of the tube.
|
|
26
|
+
* @param {number} [tubularSegments=64] - The number of tubular segments.
|
|
27
|
+
* @param {number} [radialSegments=8] - The number of radial segments.
|
|
28
|
+
* @param {number} [p=2] - This value determines, how many times the geometry winds around its axis of rotational symmetry.
|
|
29
|
+
* @param {number} [q=3] - This value determines, how many times the geometry winds around a circle in the interior of the torus.
|
|
30
|
+
*/
|
|
7
31
|
constructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {
|
|
8
32
|
|
|
9
33
|
super();
|
|
10
34
|
|
|
11
35
|
this.type = 'TorusKnotGeometry';
|
|
12
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Holds the constructor parameters that have been
|
|
39
|
+
* used to generate the geometry. Any modification
|
|
40
|
+
* after instantiation does not change the geometry.
|
|
41
|
+
*
|
|
42
|
+
* @type {Object}
|
|
43
|
+
*/
|
|
13
44
|
this.parameters = {
|
|
14
45
|
radius: radius,
|
|
15
46
|
tube: tube,
|
|
@@ -156,6 +187,13 @@ class TorusKnotGeometry extends BufferGeometry {
|
|
|
156
187
|
|
|
157
188
|
}
|
|
158
189
|
|
|
190
|
+
/**
|
|
191
|
+
* Factory method for creating an instance of this class from the given
|
|
192
|
+
* JSON object.
|
|
193
|
+
*
|
|
194
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
195
|
+
* @return {TorusKnotGeometry} A new instance.
|
|
196
|
+
*/
|
|
159
197
|
static fromJSON( data ) {
|
|
160
198
|
|
|
161
199
|
return new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );
|
|
@@ -4,14 +4,56 @@ import * as Curves from '../extras/curves/Curves.js';
|
|
|
4
4
|
import { Vector2 } from '../math/Vector2.js';
|
|
5
5
|
import { Vector3 } from '../math/Vector3.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Creates a tube that extrudes along a 3D curve.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* class CustomSinCurve extends THREE.Curve {
|
|
12
|
+
*
|
|
13
|
+
* getPoint( t, optionalTarget = new THREE.Vector3() ) {
|
|
14
|
+
*
|
|
15
|
+
* const tx = t * 3 - 1.5;
|
|
16
|
+
* const ty = Math.sin( 2 * Math.PI * t );
|
|
17
|
+
* const tz = 0;
|
|
18
|
+
*
|
|
19
|
+
* return optionalTarget.set( tx, ty, tz );
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* const path = new CustomSinCurve( 10 );
|
|
25
|
+
* const geometry = new THREE.TubeGeometry( path, 20, 2, 8, false );
|
|
26
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
27
|
+
* const mesh = new THREE.Mesh( geometry, material );
|
|
28
|
+
* scene.add( mesh );
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @augments BufferGeometry
|
|
32
|
+
*/
|
|
7
33
|
class TubeGeometry extends BufferGeometry {
|
|
8
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Constructs a new tube geometry.
|
|
37
|
+
*
|
|
38
|
+
* @param {Curve} [path=QuadraticBezierCurve3] - A 3D curve defining the path of the tube.
|
|
39
|
+
* @param {number} [tubularSegments=64] - The number of segments that make up the tube.
|
|
40
|
+
* @param {number} [radius=1] -The radius of the tube.
|
|
41
|
+
* @param {number} [radialSegments=8] - The number of segments that make up the cross-section.
|
|
42
|
+
* @param {boolean} [closed=false] - Whether the tube is closed or not.
|
|
43
|
+
*/
|
|
9
44
|
constructor( path = new Curves[ 'QuadraticBezierCurve3' ]( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {
|
|
10
45
|
|
|
11
46
|
super();
|
|
12
47
|
|
|
13
48
|
this.type = 'TubeGeometry';
|
|
14
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Holds the constructor parameters that have been
|
|
52
|
+
* used to generate the geometry. Any modification
|
|
53
|
+
* after instantiation does not change the geometry.
|
|
54
|
+
*
|
|
55
|
+
* @type {Object}
|
|
56
|
+
*/
|
|
15
57
|
this.parameters = {
|
|
16
58
|
path: path,
|
|
17
59
|
tubularSegments: tubularSegments,
|
|
@@ -183,6 +225,13 @@ class TubeGeometry extends BufferGeometry {
|
|
|
183
225
|
|
|
184
226
|
}
|
|
185
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Factory method for creating an instance of this class from the given
|
|
230
|
+
* JSON object.
|
|
231
|
+
*
|
|
232
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
233
|
+
* @return {TubeGeometry} A new instance.
|
|
234
|
+
*/
|
|
186
235
|
static fromJSON( data ) {
|
|
187
236
|
|
|
188
237
|
// This only works for built-in curves (e.g. CatmullRomCurve3).
|
|
@@ -2,14 +2,46 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
3
3
|
import { Vector3 } from '../math/Vector3.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Can be used as a helper object to visualize a geometry as a wireframe.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const geometry = new THREE.SphereGeometry();
|
|
10
|
+
*
|
|
11
|
+
* const wireframe = new THREE.WireframeGeometry( geometry );
|
|
12
|
+
*
|
|
13
|
+
* const line = new THREE.LineSegments( wireframe );
|
|
14
|
+
* line.material.depthWrite = false;
|
|
15
|
+
* line.material.opacity = 0.25;
|
|
16
|
+
* line.material.transparent = true;
|
|
17
|
+
*
|
|
18
|
+
* scene.add( line );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* Note: It is not yet possible to serialize/deserialize instances of this class.
|
|
22
|
+
*
|
|
23
|
+
* @augments BufferGeometry
|
|
24
|
+
*/
|
|
5
25
|
class WireframeGeometry extends BufferGeometry {
|
|
6
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a new wireframe geometry.
|
|
29
|
+
*
|
|
30
|
+
* @param {?BufferGeometry} [geometry=null] - The geometry.
|
|
31
|
+
*/
|
|
7
32
|
constructor( geometry = null ) {
|
|
8
33
|
|
|
9
34
|
super();
|
|
10
35
|
|
|
11
36
|
this.type = 'WireframeGeometry';
|
|
12
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Holds the constructor parameters that have been
|
|
40
|
+
* used to generate the geometry. Any modification
|
|
41
|
+
* after instantiation does not change the geometry.
|
|
42
|
+
*
|
|
43
|
+
* @type {Object}
|
|
44
|
+
*/
|
|
13
45
|
this.parameters = {
|
|
14
46
|
geometry: geometry
|
|
15
47
|
};
|