super-three 0.173.5 → 0.176.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -2,14 +2,45 @@ import { 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 a rectangular cuboid with a given width, height, and depth.
|
|
7
|
+
* On creation, the cuboid is centred on the origin, with each edge parallel to one
|
|
8
|
+
* of the axes.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const geometry = new THREE.BoxGeometry( 1, 1, 1 );
|
|
12
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
13
|
+
* const cube = new THREE.Mesh( geometry, material );
|
|
14
|
+
* scene.add( cube );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments BufferGeometry
|
|
18
|
+
*/
|
|
5
19
|
class BoxGeometry extends BufferGeometry {
|
|
6
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new box geometry.
|
|
23
|
+
*
|
|
24
|
+
* @param {number} [width=1] - The width. That is, the length of the edges parallel to the X axis.
|
|
25
|
+
* @param {number} [height=1] - The height. That is, the length of the edges parallel to the Y axis.
|
|
26
|
+
* @param {number} [depth=1] - The depth. That is, the length of the edges parallel to the Z axis.
|
|
27
|
+
* @param {number} [widthSegments=1] - Number of segmented rectangular faces along the width of the sides.
|
|
28
|
+
* @param {number} [heightSegments=1] - Number of segmented rectangular faces along the height of the sides.
|
|
29
|
+
* @param {number} [depthSegments=1] - Number of segmented rectangular faces along the depth of the sides.
|
|
30
|
+
*/
|
|
7
31
|
constructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {
|
|
8
32
|
|
|
9
33
|
super();
|
|
10
34
|
|
|
11
35
|
this.type = 'BoxGeometry';
|
|
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
|
width: width,
|
|
15
46
|
height: height,
|
|
@@ -169,6 +200,13 @@ class BoxGeometry extends BufferGeometry {
|
|
|
169
200
|
|
|
170
201
|
}
|
|
171
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Factory method for creating an instance of this class from the given
|
|
205
|
+
* JSON object.
|
|
206
|
+
*
|
|
207
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
208
|
+
* @return {BoxGeometry} A new instance.
|
|
209
|
+
*/
|
|
172
210
|
static fromJSON( data ) {
|
|
173
211
|
|
|
174
212
|
return new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
import { Path } from '../extras/core/Path.js';
|
|
2
2
|
import { LatheGeometry } from './LatheGeometry.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A geometry class for a capsule with given radii and height. It is constructed using a lathe.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8 );
|
|
9
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
10
|
+
* const capsule = new THREE.Mesh( geometry, material );
|
|
11
|
+
* scene.add( capsule );
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @augments LatheGeometry
|
|
15
|
+
*/
|
|
4
16
|
class CapsuleGeometry extends LatheGeometry {
|
|
5
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new capsule geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} [radius=1] - Radius of the capsule.
|
|
22
|
+
* @param {number} [length=1] - Length of the middle section.
|
|
23
|
+
* @param {number} [capSegments=4] - Number of curve segments used to build the caps.
|
|
24
|
+
* @param {number} [radialSegments=8] - Number of segmented faces around the circumference of the capsule.
|
|
25
|
+
*/
|
|
6
26
|
constructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {
|
|
7
27
|
|
|
8
28
|
const path = new Path();
|
|
@@ -13,6 +33,13 @@ class CapsuleGeometry extends LatheGeometry {
|
|
|
13
33
|
|
|
14
34
|
this.type = 'CapsuleGeometry';
|
|
15
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
|
+
*/
|
|
16
43
|
this.parameters = {
|
|
17
44
|
radius: radius,
|
|
18
45
|
length: length,
|
|
@@ -22,6 +49,13 @@ class CapsuleGeometry extends LatheGeometry {
|
|
|
22
49
|
|
|
23
50
|
}
|
|
24
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Factory method for creating an instance of this class from the given
|
|
54
|
+
* JSON object.
|
|
55
|
+
*
|
|
56
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
57
|
+
* @return {CapsuleGeometry} A new instance.
|
|
58
|
+
*/
|
|
25
59
|
static fromJSON( data ) {
|
|
26
60
|
|
|
27
61
|
return new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );
|
|
@@ -3,14 +3,47 @@ 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 simple shape of Euclidean geometry. It is constructed from a
|
|
8
|
+
* number of triangular segments that are oriented around a central point and
|
|
9
|
+
* extend as far out as a given radius. It is built counter-clockwise from a
|
|
10
|
+
* start angle and a given central angle. It can also be used to create
|
|
11
|
+
* regular polygons, where the number of segments determines the number of
|
|
12
|
+
* sides.
|
|
13
|
+
*
|
|
14
|
+
* ```js
|
|
15
|
+
* const geometry = new THREE.CircleGeometry( 5, 32 );
|
|
16
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
17
|
+
* const circle = new THREE.Mesh( geometry, material );
|
|
18
|
+
* scene.add( circle )
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @augments BufferGeometry
|
|
22
|
+
*/
|
|
6
23
|
class CircleGeometry extends BufferGeometry {
|
|
7
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new circle geometry.
|
|
27
|
+
*
|
|
28
|
+
* @param {number} [radius=1] - Radius of the circle.
|
|
29
|
+
* @param {number} [segments=32] - Number of segments (triangles), minimum = `3`.
|
|
30
|
+
* @param {number} [thetaStart=0] - Start angle for first segment in radians.
|
|
31
|
+
* @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta,
|
|
32
|
+
* of the circular sector in radians. The default value results in a complete circle.
|
|
33
|
+
*/
|
|
8
34
|
constructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
9
35
|
|
|
10
36
|
super();
|
|
11
37
|
|
|
12
38
|
this.type = 'CircleGeometry';
|
|
13
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
|
+
*/
|
|
14
47
|
this.parameters = {
|
|
15
48
|
radius: radius,
|
|
16
49
|
segments: segments,
|
|
@@ -89,6 +122,13 @@ class CircleGeometry extends BufferGeometry {
|
|
|
89
122
|
|
|
90
123
|
}
|
|
91
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Factory method for creating an instance of this class from the given
|
|
127
|
+
* JSON object.
|
|
128
|
+
*
|
|
129
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
130
|
+
* @return {CircleGeometry} A new instance.
|
|
131
|
+
*/
|
|
92
132
|
static fromJSON( data ) {
|
|
93
133
|
|
|
94
134
|
return new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );
|
|
@@ -1,13 +1,44 @@
|
|
|
1
1
|
import { CylinderGeometry } from './CylinderGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing a cone.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.ConeGeometry( 5, 20, 32 );
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const cone = new THREE.Mesh(geometry, material );
|
|
10
|
+
* scene.add( cone );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments CylinderGeometry
|
|
14
|
+
*/
|
|
3
15
|
class ConeGeometry extends CylinderGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new cone geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the cone base.
|
|
21
|
+
* @param {number} [height=1] - Height of the cone.
|
|
22
|
+
* @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cone.
|
|
23
|
+
* @param {number} [heightSegments=1] - Number of rows of faces along the height of the cone.
|
|
24
|
+
* @param {boolean} [openEnded=false] - Whether the base of the cone is open or capped.
|
|
25
|
+
* @param {number} [thetaStart=0] - Start angle for first segment, in radians.
|
|
26
|
+
* @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.
|
|
27
|
+
* The default value results in a complete cone.
|
|
28
|
+
*/
|
|
5
29
|
constructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
6
30
|
|
|
7
31
|
super( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );
|
|
8
32
|
|
|
9
33
|
this.type = 'ConeGeometry';
|
|
10
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Holds the constructor parameters that have been
|
|
37
|
+
* used to generate the geometry. Any modification
|
|
38
|
+
* after instantiation does not change the geometry.
|
|
39
|
+
*
|
|
40
|
+
* @type {Object}
|
|
41
|
+
*/
|
|
11
42
|
this.parameters = {
|
|
12
43
|
radius: radius,
|
|
13
44
|
height: height,
|
|
@@ -20,6 +51,13 @@ class ConeGeometry extends CylinderGeometry {
|
|
|
20
51
|
|
|
21
52
|
}
|
|
22
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 {ConeGeometry} A new instance.
|
|
60
|
+
*/
|
|
23
61
|
static fromJSON( data ) {
|
|
24
62
|
|
|
25
63
|
return new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );
|
|
@@ -3,14 +3,46 @@ 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 geometry class for representing a cylinder.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );
|
|
11
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
12
|
+
* const cylinder = new THREE.Mesh( geometry, material );
|
|
13
|
+
* scene.add( cylinder );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments BufferGeometry
|
|
17
|
+
*/
|
|
6
18
|
class CylinderGeometry extends BufferGeometry {
|
|
7
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new cylinder geometry.
|
|
22
|
+
*
|
|
23
|
+
* @param {number} [radiusTop=1] - Radius of the cylinder at the top.
|
|
24
|
+
* @param {number} [radiusBottom=1] - Radius of the cylinder at the bottom.
|
|
25
|
+
* @param {number} [height=1] - Height of the cylinder.
|
|
26
|
+
* @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cylinder.
|
|
27
|
+
* @param {number} [heightSegments=1] - Number of rows of faces along the height of the cylinder.
|
|
28
|
+
* @param {boolean} [openEnded=false] - Whether the base of the cylinder is open or capped.
|
|
29
|
+
* @param {number} [thetaStart=0] - Start angle for first segment, in radians.
|
|
30
|
+
* @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.
|
|
31
|
+
* The default value results in a complete cylinder.
|
|
32
|
+
*/
|
|
8
33
|
constructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {
|
|
9
34
|
|
|
10
35
|
super();
|
|
11
36
|
|
|
12
37
|
this.type = 'CylinderGeometry';
|
|
13
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Holds the constructor parameters that have been
|
|
41
|
+
* used to generate the geometry. Any modification
|
|
42
|
+
* after instantiation does not change the geometry.
|
|
43
|
+
*
|
|
44
|
+
* @type {Object}
|
|
45
|
+
*/
|
|
14
46
|
this.parameters = {
|
|
15
47
|
radiusTop: radiusTop,
|
|
16
48
|
radiusBottom: radiusBottom,
|
|
@@ -281,6 +313,13 @@ class CylinderGeometry extends BufferGeometry {
|
|
|
281
313
|
|
|
282
314
|
}
|
|
283
315
|
|
|
316
|
+
/**
|
|
317
|
+
* Factory method for creating an instance of this class from the given
|
|
318
|
+
* JSON object.
|
|
319
|
+
*
|
|
320
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
321
|
+
* @return {CylinderGeometry} A new instance.
|
|
322
|
+
*/
|
|
284
323
|
static fromJSON( data ) {
|
|
285
324
|
|
|
286
325
|
return new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { PolyhedronGeometry } from './PolyhedronGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing a dodecahedron.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.DodecahedronGeometry();
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const dodecahedron = new THREE.Mesh( geometry, material );
|
|
10
|
+
* scene.add( dodecahedron );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments PolyhedronGeometry
|
|
14
|
+
*/
|
|
3
15
|
class DodecahedronGeometry extends PolyhedronGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new dodecahedron geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the dodecahedron.
|
|
21
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a dodecahedron.
|
|
22
|
+
*/
|
|
5
23
|
constructor( radius = 1, detail = 0 ) {
|
|
6
24
|
|
|
7
25
|
const t = ( 1 + Math.sqrt( 5 ) ) / 2;
|
|
@@ -47,6 +65,13 @@ class DodecahedronGeometry extends PolyhedronGeometry {
|
|
|
47
65
|
|
|
48
66
|
this.type = 'DodecahedronGeometry';
|
|
49
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Holds the constructor parameters that have been
|
|
70
|
+
* used to generate the geometry. Any modification
|
|
71
|
+
* after instantiation does not change the geometry.
|
|
72
|
+
*
|
|
73
|
+
* @type {Object}
|
|
74
|
+
*/
|
|
50
75
|
this.parameters = {
|
|
51
76
|
radius: radius,
|
|
52
77
|
detail: detail
|
|
@@ -54,6 +79,13 @@ class DodecahedronGeometry extends PolyhedronGeometry {
|
|
|
54
79
|
|
|
55
80
|
}
|
|
56
81
|
|
|
82
|
+
/**
|
|
83
|
+
* Factory method for creating an instance of this class from the given
|
|
84
|
+
* JSON object.
|
|
85
|
+
*
|
|
86
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
87
|
+
* @return {DodecahedronGeometry} A new instance.
|
|
88
|
+
*/
|
|
57
89
|
static fromJSON( data ) {
|
|
58
90
|
|
|
59
91
|
return new DodecahedronGeometry( data.radius, data.detail );
|
|
@@ -9,14 +9,42 @@ const _v1 = /*@__PURE__*/ new Vector3();
|
|
|
9
9
|
const _normal = /*@__PURE__*/ new Vector3();
|
|
10
10
|
const _triangle = /*@__PURE__*/ new Triangle();
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Can be used as a helper object to view the edges of a geometry.
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* const geometry = new THREE.BoxGeometry();
|
|
17
|
+
* const edges = new THREE.EdgesGeometry( geometry );
|
|
18
|
+
* const line = new THREE.LineSegments( edges );
|
|
19
|
+
* scene.add( line );
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* Note: It is not yet possible to serialize/deserialize instances of this class.
|
|
23
|
+
*
|
|
24
|
+
* @augments BufferGeometry
|
|
25
|
+
*/
|
|
12
26
|
class EdgesGeometry extends BufferGeometry {
|
|
13
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new edges geometry.
|
|
30
|
+
*
|
|
31
|
+
* @param {?BufferGeometry} [geometry=null] - The geometry.
|
|
32
|
+
* @param {number} [thresholdAngle=1] - An edge is only rendered if the angle (in degrees)
|
|
33
|
+
* between the face normals of the adjoining faces exceeds this value.
|
|
34
|
+
*/
|
|
14
35
|
constructor( geometry = null, thresholdAngle = 1 ) {
|
|
15
36
|
|
|
16
37
|
super();
|
|
17
38
|
|
|
18
39
|
this.type = 'EdgesGeometry';
|
|
19
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
|
+
*/
|
|
20
48
|
this.parameters = {
|
|
21
49
|
geometry: geometry,
|
|
22
50
|
thresholdAngle: thresholdAngle
|
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Creates extruded geometry from a path shape.
|
|
3
|
-
*
|
|
4
|
-
* parameters = {
|
|
5
|
-
*
|
|
6
|
-
* curveSegments: <int>, // number of points on the curves
|
|
7
|
-
* steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too
|
|
8
|
-
* depth: <float>, // Depth to extrude the shape
|
|
9
|
-
*
|
|
10
|
-
* bevelEnabled: <bool>, // turn on bevel
|
|
11
|
-
* bevelThickness: <float>, // how deep into the original shape bevel goes
|
|
12
|
-
* bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel
|
|
13
|
-
* bevelOffset: <float>, // how far from shape outline does bevel start
|
|
14
|
-
* bevelSegments: <int>, // number of bevel layers
|
|
15
|
-
*
|
|
16
|
-
* extrudePath: <THREE.Curve> // curve to extrude shape along
|
|
17
|
-
*
|
|
18
|
-
* UVGenerator: <Object> // object that provides UV generator functions
|
|
19
|
-
*
|
|
20
|
-
* }
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
1
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
24
2
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
25
3
|
import * as Curves from '../extras/curves/Curves.js';
|
|
@@ -28,14 +6,48 @@ import { Vector3 } from '../math/Vector3.js';
|
|
|
28
6
|
import { Shape } from '../extras/core/Shape.js';
|
|
29
7
|
import { ShapeUtils } from '../extras/ShapeUtils.js';
|
|
30
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Creates extruded geometry from a path shape.
|
|
11
|
+
*
|
|
12
|
+
* ```js
|
|
13
|
+
* const length = 12, width = 8;
|
|
14
|
+
*
|
|
15
|
+
* const shape = new THREE.Shape();
|
|
16
|
+
* shape.moveTo( 0,0 );
|
|
17
|
+
* shape.lineTo( 0, width );
|
|
18
|
+
* shape.lineTo( length, width );
|
|
19
|
+
* shape.lineTo( length, 0 );
|
|
20
|
+
* shape.lineTo( 0, 0 );
|
|
21
|
+
*
|
|
22
|
+
* const geometry = new THREE.ExtrudeGeometry( shape );
|
|
23
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
24
|
+
* const mesh = new THREE.Mesh( geometry, material ) ;
|
|
25
|
+
* scene.add( mesh );
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @augments BufferGeometry
|
|
29
|
+
*/
|
|
31
30
|
class ExtrudeGeometry extends BufferGeometry {
|
|
32
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Constructs a new extrude geometry.
|
|
34
|
+
*
|
|
35
|
+
* @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.
|
|
36
|
+
* @param {ExtrudeGeometry~Options} [options] - The extrude settings.
|
|
37
|
+
*/
|
|
33
38
|
constructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {
|
|
34
39
|
|
|
35
40
|
super();
|
|
36
41
|
|
|
37
42
|
this.type = 'ExtrudeGeometry';
|
|
38
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Holds the constructor parameters that have been
|
|
46
|
+
* used to generate the geometry. Any modification
|
|
47
|
+
* after instantiation does not change the geometry.
|
|
48
|
+
*
|
|
49
|
+
* @type {Object}
|
|
50
|
+
*/
|
|
39
51
|
this.parameters = {
|
|
40
52
|
shapes: shapes,
|
|
41
53
|
options: options
|
|
@@ -150,14 +162,53 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
150
162
|
|
|
151
163
|
}
|
|
152
164
|
|
|
165
|
+
/**Merges index-adjacent points that are within a threshold distance of each other. Array is modified in-place. Threshold distance is empirical, and scaled based on the magnitude of point coordinates.
|
|
166
|
+
* @param {Array<Vector2>} points
|
|
167
|
+
*/
|
|
168
|
+
function mergeOverlappingPoints( points ) {
|
|
169
|
+
|
|
170
|
+
const THRESHOLD = 1e-10;
|
|
171
|
+
const THRESHOLD_SQ = THRESHOLD * THRESHOLD;
|
|
172
|
+
let prevPos = points[ 0 ];
|
|
173
|
+
for ( let i = 1; i <= points.length; i ++ ) {
|
|
174
|
+
|
|
175
|
+
const currentIndex = i % points.length;
|
|
176
|
+
const currentPos = points[ currentIndex ];
|
|
177
|
+
const dx = currentPos.x - prevPos.x;
|
|
178
|
+
const dy = currentPos.y - prevPos.y;
|
|
179
|
+
const distSq = dx * dx + dy * dy;
|
|
180
|
+
|
|
181
|
+
const scalingFactorSqrt = Math.max(
|
|
182
|
+
Math.abs( currentPos.x ),
|
|
183
|
+
Math.abs( currentPos.y ),
|
|
184
|
+
Math.abs( prevPos.x ),
|
|
185
|
+
Math.abs( prevPos.y )
|
|
186
|
+
);
|
|
187
|
+
const thesholdSqScaled = THRESHOLD_SQ * scalingFactorSqrt * scalingFactorSqrt;
|
|
188
|
+
if ( distSq <= thesholdSqScaled ) {
|
|
189
|
+
|
|
190
|
+
points.splice( currentIndex, 1 );
|
|
191
|
+
i --;
|
|
192
|
+
continue;
|
|
193
|
+
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
prevPos = currentPos;
|
|
197
|
+
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
mergeOverlappingPoints( vertices );
|
|
203
|
+
holes.forEach( mergeOverlappingPoints );
|
|
153
204
|
|
|
154
|
-
const
|
|
205
|
+
const numHoles = holes.length;
|
|
155
206
|
|
|
156
207
|
/* Vertices */
|
|
157
208
|
|
|
158
209
|
const contour = vertices; // vertices has all points but contour has only points of circumference
|
|
159
210
|
|
|
160
|
-
for ( let h = 0
|
|
211
|
+
for ( let h = 0; h < numHoles; h ++ ) {
|
|
161
212
|
|
|
162
213
|
const ahole = holes[ h ];
|
|
163
214
|
|
|
@@ -174,7 +225,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
174
225
|
|
|
175
226
|
}
|
|
176
227
|
|
|
177
|
-
const vlen = vertices.length
|
|
228
|
+
const vlen = vertices.length;
|
|
178
229
|
|
|
179
230
|
|
|
180
231
|
// Find directions for point movement
|
|
@@ -321,7 +372,7 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
321
372
|
const holesMovements = [];
|
|
322
373
|
let oneHoleMovements, verticesMovements = contourMovements.concat();
|
|
323
374
|
|
|
324
|
-
for ( let h = 0, hl =
|
|
375
|
+
for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
|
|
325
376
|
|
|
326
377
|
const ahole = holes[ h ];
|
|
327
378
|
|
|
@@ -342,6 +393,8 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
342
393
|
|
|
343
394
|
}
|
|
344
395
|
|
|
396
|
+
const contractedContourVertices = [];
|
|
397
|
+
const expandedHoleVertices = [];
|
|
345
398
|
|
|
346
399
|
// Loop bevelSegments, 1 for the front, 1 for the back
|
|
347
400
|
|
|
@@ -360,28 +413,36 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
360
413
|
const vert = scalePt2( contour[ i ], contourMovements[ i ], bs );
|
|
361
414
|
|
|
362
415
|
v( vert.x, vert.y, - z );
|
|
416
|
+
if ( t == 0 ) contractedContourVertices.push( vert );
|
|
363
417
|
|
|
364
418
|
}
|
|
365
419
|
|
|
366
420
|
// expand holes
|
|
367
421
|
|
|
368
|
-
for ( let h = 0, hl =
|
|
422
|
+
for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
|
|
369
423
|
|
|
370
424
|
const ahole = holes[ h ];
|
|
371
425
|
oneHoleMovements = holesMovements[ h ];
|
|
372
|
-
|
|
426
|
+
const oneHoleVertices = [];
|
|
373
427
|
for ( let i = 0, il = ahole.length; i < il; i ++ ) {
|
|
374
428
|
|
|
375
429
|
const vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );
|
|
376
430
|
|
|
377
431
|
v( vert.x, vert.y, - z );
|
|
432
|
+
if ( t == 0 ) oneHoleVertices.push( vert );
|
|
378
433
|
|
|
379
434
|
}
|
|
380
435
|
|
|
436
|
+
if ( t == 0 ) expandedHoleVertices.push( oneHoleVertices );
|
|
437
|
+
|
|
381
438
|
}
|
|
382
439
|
|
|
383
440
|
}
|
|
384
441
|
|
|
442
|
+
const faces = ShapeUtils.triangulateShape( contractedContourVertices, expandedHoleVertices );
|
|
443
|
+
|
|
444
|
+
const flen = faces.length;
|
|
445
|
+
|
|
385
446
|
const bs = bevelSize + bevelOffset;
|
|
386
447
|
|
|
387
448
|
// Back facing vertices
|
|
@@ -698,6 +759,14 @@ class ExtrudeGeometry extends BufferGeometry {
|
|
|
698
759
|
|
|
699
760
|
}
|
|
700
761
|
|
|
762
|
+
/**
|
|
763
|
+
* Factory method for creating an instance of this class from the given
|
|
764
|
+
* JSON object.
|
|
765
|
+
*
|
|
766
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
767
|
+
* @param {Array<Shape>} shapes - An array of shapes.
|
|
768
|
+
* @return {ExtrudeGeometry} A new instance.
|
|
769
|
+
*/
|
|
701
770
|
static fromJSON( data, shapes ) {
|
|
702
771
|
|
|
703
772
|
const geometryShapes = [];
|
|
@@ -810,5 +879,20 @@ function toJSON( shapes, options, data ) {
|
|
|
810
879
|
|
|
811
880
|
}
|
|
812
881
|
|
|
882
|
+
/**
|
|
883
|
+
* Represents the `options` type of the geometry's constructor.
|
|
884
|
+
*
|
|
885
|
+
* @typedef {Object} ExtrudeGeometry~Options
|
|
886
|
+
* @property {number} [curveSegments=12] - Number of points on the curves.
|
|
887
|
+
* @property {number} [steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.
|
|
888
|
+
* @property {number} [depth=1] - Depth to extrude the shape.
|
|
889
|
+
* @property {boolean} [bevelEnabled=true] - Whether to beveling to the shape or not.
|
|
890
|
+
* @property {number} [bevelThickness=0.2] - How deep into the original shape the bevel goes.
|
|
891
|
+
* @property {number} [bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.
|
|
892
|
+
* @property {number} [bevelOffset=0] - Distance from the shape outline that the bevel starts.
|
|
893
|
+
* @property {number} [bevelSegments=3] - Number of bevel layers.
|
|
894
|
+
* @property {?Curve} [extrudePath=null] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.
|
|
895
|
+
* @property {Object} [UVGenerator] - An object that provides UV generator functions for custom UV generation.
|
|
896
|
+
**/
|
|
813
897
|
|
|
814
898
|
export { ExtrudeGeometry };
|
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { PolyhedronGeometry } from './PolyhedronGeometry.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A geometry class for representing an icosahedron.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const geometry = new THREE.IcosahedronGeometry();
|
|
8
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
|
|
9
|
+
* const icosahedron = new THREE.Mesh( geometry, material );
|
|
10
|
+
* scene.add( icosahedron );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments PolyhedronGeometry
|
|
14
|
+
*/
|
|
3
15
|
class IcosahedronGeometry extends PolyhedronGeometry {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new icosahedron geometry.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} [radius=1] - Radius of the icosahedron.
|
|
21
|
+
* @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a icosahedron.
|
|
22
|
+
*/
|
|
5
23
|
constructor( radius = 1, detail = 0 ) {
|
|
6
24
|
|
|
7
25
|
const t = ( 1 + Math.sqrt( 5 ) ) / 2;
|
|
@@ -23,6 +41,13 @@ class IcosahedronGeometry extends PolyhedronGeometry {
|
|
|
23
41
|
|
|
24
42
|
this.type = 'IcosahedronGeometry';
|
|
25
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Holds the constructor parameters that have been
|
|
46
|
+
* used to generate the geometry. Any modification
|
|
47
|
+
* after instantiation does not change the geometry.
|
|
48
|
+
*
|
|
49
|
+
* @type {Object}
|
|
50
|
+
*/
|
|
26
51
|
this.parameters = {
|
|
27
52
|
radius: radius,
|
|
28
53
|
detail: detail
|
|
@@ -30,6 +55,13 @@ class IcosahedronGeometry extends PolyhedronGeometry {
|
|
|
30
55
|
|
|
31
56
|
}
|
|
32
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Factory method for creating an instance of this class from the given
|
|
60
|
+
* JSON object.
|
|
61
|
+
*
|
|
62
|
+
* @param {Object} data - A JSON object representing the serialized geometry.
|
|
63
|
+
* @return {IcosahedronGeometry} A new instance.
|
|
64
|
+
*/
|
|
33
65
|
static fromJSON( data ) {
|
|
34
66
|
|
|
35
67
|
return new IcosahedronGeometry( data.radius, data.detail );
|